commit f4a4864688705af646af789d3c0faa758874561e Author: Marco Cawthorne Date: Thu Jun 9 08:56:44 2022 -0700 first commit diff --git a/dockapps/cputnik/AUTHORS b/dockapps/cputnik/AUTHORS new file mode 100644 index 0000000..4284006 --- /dev/null +++ b/dockapps/cputnik/AUTHORS @@ -0,0 +1,14 @@ + +Authors +-------- + +pasp +sill + +Borrowed code +-------------- + +cpu usage code based on WMMon 1.0b2 by + Martijn Pieterse (pieterse@xs4all.nl) + Antoine Nulle (warp@xs4all.nl) + diff --git a/dockapps/cputnik/COPYING b/dockapps/cputnik/COPYING new file mode 100644 index 0000000..a43ea21 --- /dev/null +++ b/dockapps/cputnik/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + Appendix: How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) 19yy + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/dockapps/cputnik/Makefile b/dockapps/cputnik/Makefile new file mode 100644 index 0000000..f7dd666 --- /dev/null +++ b/dockapps/cputnik/Makefile @@ -0,0 +1,8 @@ + +all: + @cd src;\ + make;\ + mv cputnik ../cputnik + +clean: + rm -rf src/*.o src/*~ src/cputnik cputnik diff --git a/dockapps/cputnik/NEWS b/dockapps/cputnik/NEWS new file mode 100644 index 0000000..1238741 --- /dev/null +++ b/dockapps/cputnik/NEWS @@ -0,0 +1,17 @@ + +0.2.0 - 26.03.2005 +------------------- + - memory usage meter (optionally) + - cputnik now uses config file (~/.clay/cputnik.rc) + - small graphics changes + +0.1.1 - 15.08.2002 +------------------- + - improved graphics + - new options + +0.1.0 - 25.07.2002 +------------------- + - first public release + + diff --git a/dockapps/cputnik/README b/dockapps/cputnik/README new file mode 100644 index 0000000..96cc256 --- /dev/null +++ b/dockapps/cputnik/README @@ -0,0 +1,12 @@ + +cputnik - a simple cpu and memory monitor +------------------------------------------- + +This is small WindowMaker dockapp which displays cpu and memory usage. + +Configuration can be changed via ~/.clay/cputnik.rc using text editor. + +Patches, sugesstions are welcome... + + enjoy :) + diff --git a/dockapps/cputnik/src/Makefile b/dockapps/cputnik/src/Makefile new file mode 100644 index 0000000..e12ce4e --- /dev/null +++ b/dockapps/cputnik/src/Makefile @@ -0,0 +1,23 @@ + +CFLAGS = -Wall -Os -fcommon +INCS = -I/usr/X11R6/include/X11 +LIBS = -L/usr/X11R6/lib64 -lXpm -lXext -lX11 +INSTALL_PREFIX = /usr/local + + +all: cputnik.c docklib.o master.h mask.h + gcc $(CFLAGS) $(INCS) docklib.o cputnik.c -o cputnik $(LIBS) + +docklib.o: docklib.c docklib.h + gcc $(CFLAGS) $(INCS) -c docklib.c + +install: + cp ./cputnik $(INSTALL_PREFIX)/bin + +uninstall: + rm -f $(INSTALL_PREFIX)/bin/cputnik + +clean: + rm -f *.o cputnik *~ + + diff --git a/dockapps/cputnik/src/cputnik.c b/dockapps/cputnik/src/cputnik.c new file mode 100644 index 0000000..63b7fec --- /dev/null +++ b/dockapps/cputnik/src/cputnik.c @@ -0,0 +1,361 @@ + +/* + * Cputnik - a simple cpu and memory monitor + * + * Copyright (C) 2002-2005 pasp and sill + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +#include "cputnik.h" + + +FILE *fp_stat, *fp_loadavg, *fp_memory; +int cmd_lmb, cmd_rmb, update_period; +int show_memory, free_memory; +char command_lmb[PATH_MAX], command_rmb[PATH_MAX], *ProgName; +stat_dev cpu_device; + +/*----------------------------------------------------------------------*/ + +void get_mem_statistics(int *free) +{ +long long int m_total, m_free, m_cached; +char temp[BUFFER_SIZE]; + + fp_memory = freopen("/proc/meminfo", "r", fp_memory); + + while(fscanf(fp_memory, "%s", temp)!=EOF) { + + if(!strncmp(temp,"MemTotal:", 9)) + fscanf(fp_memory, "%Ld", &m_total); + + if(!strncmp(temp,"MemFree:", 8)) + fscanf(fp_memory, "%Ld", &m_free); + + if(!strncmp(temp,"Cached:", 7)) + fscanf(fp_memory, "%Ld", &m_cached); + } + + *free = (int)(((float)(m_total - m_free - m_cached) / m_total) * 100.0); +} + +/*----------------------------------------------------------------------*/ + +void draw_memory_meter(void) +{ + free_memory = free_memory * (METER_WIDTH / 100.0); + if (free_memory > METER_WIDTH) free_memory = METER_WIDTH; + dcl_copy_xpm_area(0, 64, METER_WIDTH, 5, 26, 12); + dcl_copy_xpm_area(32, 64, free_memory, 5, 26, 12); +} + +/*----------------------------------------------------------------------*/ + +void get_cpu_statistics(char *devname, long *is, long *ds, long *idle) +{ +char temp[BUFFER_SIZE], *p, *tokens = " \t\n"; +int i; +float f; + + *is = *ds = *idle = 0; + + if (!strncmp(devname, "cpu", 3)) { + + fseek(fp_stat, 0, SEEK_SET); + + while (fgets(temp, 128, fp_stat)) { + + if (strstr(temp, "cpu")) { + p = strtok(temp, tokens); + /* 1..3, 4 == idle, we don't want idle! */ + for (i=0; i<3; i++) { + p = strtok(NULL, tokens); + *ds += atol(p); + } + + p = strtok(NULL, tokens); + *idle = atol(p); + } + + } + + fp_loadavg = freopen("/proc/loadavg", "r", fp_loadavg); + fscanf(fp_loadavg, "%f", &f); + *is = (long) (100 * f); + + } +} + +/*----------------------------------------------------------------------*/ + +void draw_stats(int *his, int num, int size, int x_left, int y_bottom) +{ +int pixels_per_byte, j, k, *p, d; + + pixels_per_byte = 100; + p = his; + + for (j=0; j pixels_per_byte) + pixels_per_byte += 100; + p++; + } + + p = his; + + for (k=0; k 0; j-=100) { + for (k=0; kname, &k, &istat, &idle); + + st->rt_idle = idle - st->idlelast; + st->idlelast = idle; + + st->rt_stat = istat - st->statlast; + st->statlast = istat; + + st->his[V_WIDTH] += k; + st->hisaddcnt++; +} + +/*----------------------------------------------------------------------*/ + +void cputnik_routine(int argc, char **argv) +{ +XEvent Event; +int but_stat = -1, xfd = 0; +long start_time, current_time, next_time, istat, idle, k; +unsigned long i, j; +fd_set inputs; +struct timeval timeout; + + fp_memory = fopen("/proc/meminfo", "r"); + fp_loadavg = fopen("/proc/loadavg", "r"); + fp_stat = fopen("/proc/stat", "r"); + + for (j=0; j METER_WIDTH) j = METER_WIDTH; + + dcl_copy_xpm_area(32, 64, j, 7-(show_memory*2), 26, 5); + + if (current_time >= next_time) { + next_time += update_period; + + if (cpu_device.his[V_WIDTH]) + cpu_device.his[V_WIDTH] /= cpu_device.hisaddcnt; + + for (j=1; jattributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions); + + err = XpmCreatePixmapFromData(display, Root, pixmap_bytes, &(wmgen->pixmap), + &(wmgen->mask), &(wmgen->attributes)); + + if (err != XpmSuccess) { + fprintf(stderr, "ERROR: Not enough free colorcells.\n"); + exit(1); + } + +} + +/****************************************************************************** + * + * dcl_get_color + * + ******************************************************************************/ + +Pixel dcl_get_color (char *name) +{ +XColor color; +XWindowAttributes attributes; + + XGetWindowAttributes(display, Root, &attributes); + + color.pixel = 0; + if (!XParseColor(display, attributes.colormap, name, &color)) { + fprintf(stderr, "ERROR: can't parse %s.\n", name); + } else if (!XAllocColor(display, attributes.colormap, &color)) { + fprintf(stderr, "ERROR: can't allocate %s.\n", name); + } + + return color.pixel; +} + +/****************************************************************************** + * + * dcl_flush_expose + * + ******************************************************************************/ + +int dcl_flush_expose (Window w) +{ +XEvent dummy; +int i=0; + + while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) + i++; + + return i; +} + +/****************************************************************************** + * + * dcl_redraw_window + * + ******************************************************************************/ + +void dcl_redraw_window (void) +{ + + dcl_flush_expose(iconwin); + XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, + 0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0); + dcl_flush_expose(win); + XCopyArea(display, wmgen.pixmap, win, NormalGC, + 0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0); +} + +/****************************************************************************** + * + * dcl_redraw_window_xy + * + ******************************************************************************/ + +void dcl_redraw_window_xy (int x, int y) +{ + + dcl_flush_expose(iconwin); + XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, + x,y, wmgen.attributes.width, wmgen.attributes.height, 0,0); + dcl_flush_expose(win); + XCopyArea(display, wmgen.pixmap, win, NormalGC, + x,y, wmgen.attributes.width, wmgen.attributes.height, 0,0); +} + +/****************************************************************************** + * + * dcl_add_mouse_region + * + ******************************************************************************/ + +void dcl_add_mouse_region (int index, int left, int top, int right, int bottom) +{ + if (index < MAX_MOUSE_REGION) { + mouse_region[index].enable = 1; + mouse_region[index].top = top; + mouse_region[index].left = left; + mouse_region[index].bottom = bottom; + mouse_region[index].right = right; + } +} + +/****************************************************************************** + * + * dcl_check_mouse_region + * + ******************************************************************************/ + +int dcl_check_mouse_region (int x, int y) +{ +int i, found; + + found = 0; + + for (i=0; i= mouse_region[i].left && + y <= mouse_region[i].bottom && + y >= mouse_region[i].top) + found = 1; + } + + if (!found) return -1; + return (i-1); +} + +/****************************************************************************** + * + * dcl_copy_xpm_area + * + ******************************************************************************/ + +void dcl_copy_xpm_area (int x, int y, int sx, int sy, int dx, int dy) +{ + + XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); + +} + + +/****************************************************************************** + * + * dcl_copy_font_xpm_area + * + ******************************************************************************/ + +void dcl_copy_font_xpm_area (int x, int y, int sx, int sy, int dx, int dy) +{ + XCopyArea(display, fonts_wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); + +} + + +/****************************************************************************** + * + * dcl_copy_led_xpm_area + * + ******************************************************************************/ + +void dcl_copy_led_xpm_area (int x, int y, int sx, int sy, int dx, int dy) +{ + + XCopyArea(display, leds_wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); + +} + +/****************************************************************************** + * + * dcl_copy_xbm_area + * + ******************************************************************************/ + +void dcl_copy_xbm_area (int x, int y, int sx, int sy, int dx, int dy) +{ + XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); +} + + +/****************************************************************************** + * + * dcl_set_mask_xy + * + ******************************************************************************/ + +void dcl_set_mask_xy (int x, int y) +{ + XShapeCombineMask(display, win, ShapeBounding, x, y, pixmask, ShapeSet); + XShapeCombineMask(display, iconwin, ShapeBounding, x, y, pixmask, ShapeSet); +} + +/****************************************************************************** + * + * dcl_open_x_window + * + ******************************************************************************/ + +void dcl_open_x_window (int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits, int pixmask_width, int pixmask_height) +{ +unsigned int borderwidth = 1; +XClassHint classHint; +char *display_name = NULL; +char *wname = argv[0]; +XTextProperty name; +XGCValues gcv; +unsigned long gcm; +int dummy=0, i, flags; + + for (i=1; argv[i]; i++) { + if (!strcmp(argv[i], "-display")) + display_name = argv[i+1]; + } + + if (!(display = XOpenDisplay(display_name))) { + fprintf(stderr, "ERROR: can't open display %s\n", XDisplayName(display_name)); + exit(1); + } + + screen = DefaultScreen(display); + Root = RootWindow(display, screen); + d_depth = DefaultDepth(display, screen); + x_fd = XConnectionNumber(display); + + /* Convert XPM to XImage */ + dcl_get_xpm(&wmgen, pixmap_bytes); + dcl_get_xpm(&fonts_wmgen, fonts_xpm); + dcl_get_xpm(&leds_wmgen, leds_xpm); + + /* Create a window to hold the stuff */ + mysizehints.flags = USSize | USPosition; + mysizehints.x = 0; + mysizehints.y = 0; + + back_pix = dcl_get_color("white"); + fore_pix = dcl_get_color("black"); + + XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints, + &mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy); + + mysizehints.width = 64; + mysizehints.height = 64; + + win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y, + mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix); + + iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y, + mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix); + + /* Activate hints */ + XSetWMNormalHints(display, win, &mysizehints); + classHint.res_name = wname; + classHint.res_class = wname; + XSetClassHint(display, win, &classHint); + + flags = ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask; + + XSelectInput(display, win, flags); + XSelectInput(display, iconwin, flags); + + if (XStringListToTextProperty(&wname, 1, &name) == 0) { + fprintf(stderr, "ERROR: can't allocate window name\n"); + exit(1); + } + + XSetWMName(display, win, &name); + + /* Create GC for drawing */ + + gcm = GCForeground | GCBackground | GCGraphicsExposures; + gcv.foreground = fore_pix; + gcv.background = back_pix; + gcv.graphics_exposures = 0; + NormalGC = XCreateGC(display, Root, gcm, &gcv); + + /* ONLYSHAPE ON */ + + pixmask = XCreateBitmapFromData(display, win, pixmask_bits, pixmask_width, pixmask_height); + + XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet); + XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet); + + /* ONLYSHAPE OFF */ + + mywmhints.initial_state = WithdrawnState; + mywmhints.icon_window = iconwin; + mywmhints.icon_x = mysizehints.x; + mywmhints.icon_y = mysizehints.y; + mywmhints.window_group = win; + mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint; + + XSetWMHints(display, win, &mywmhints); + + XSetCommand(display, win, argv, argc); + XMapWindow(display, win); + +} + + +/****************************************************************************** + * + * dcl_getdir_config + * + ******************************************************************************/ + +char* dcl_getdir_config (char *cdirectory) +{ +static char cfgdir[PATH_MAX]; +struct stat cfg; + + dcl_strcpy (cfgdir, getenv ("HOME"), PATH_MAX); + dcl_strcat (cfgdir, "/", PATH_MAX); + dcl_strcat (cfgdir, cdirectory, PATH_MAX); + + if(stat(cfgdir, &cfg) < 0) + mkdir(cfgdir, S_IRUSR | S_IWUSR | S_IXUSR); + + return cfgdir; +} + + +/****************************************************************************** + * + * dcl_getfilename_config + * + ******************************************************************************/ + +char* dcl_getfilename_config (char *config_dir, char *config_filename) +{ +static char filename[PATH_MAX]; + + dcl_strcpy (filename, dcl_getdir_config(config_dir), PATH_MAX); + dcl_strcat (filename, "/", PATH_MAX); + dcl_strcat (filename, config_filename, PATH_MAX); + + return filename; +} + + +/****************************************************************************** + * + * dcl_prefs_openfile + * + ******************************************************************************/ + +void* dcl_prefs_openfile (char *filename, int openmode) +{ + prefs_filehandle = NULL; + + if (openmode == P_READ) + prefs_filehandle = fopen (filename, "rb"); + else if (openmode == P_WRITE) + prefs_filehandle = fopen (filename, "wb"); + + return prefs_filehandle; +} + + +/****************************************************************************** + * + * dcl_prefs_closefile + * + ******************************************************************************/ + +void dcl_prefs_closefile (void) +{ + fclose (prefs_filehandle); +} + + +/****************************************************************************** + * + * dcl_prefs_put_int + * + ******************************************************************************/ + +void dcl_prefs_put_int (char *tagname, int value) +{ + fprintf (prefs_filehandle, "%s=%d\n", tagname, value); +} + + +/****************************************************************************** + * + * dcl_prefs_put_float + * + ******************************************************************************/ + +void dcl_prefs_put_float (char *tagname, float value) +{ + fprintf (prefs_filehandle, "%s=%f\n", tagname, value); +} + + +/****************************************************************************** + * + * dcl_prefs_put_string + * + ******************************************************************************/ + +void dcl_prefs_put_string (char *tagname, char *value) +{ + fprintf (prefs_filehandle, "%s=%s\n", tagname, value); +} + + +/****************************************************************************** + * + * dcl_prefs_put_lf + * + ******************************************************************************/ + +void dcl_prefs_put_lf (void) +{ + fprintf (prefs_filehandle, "\n"); +} + + +/****************************************************************************** + * + * dcl_prefs_put_comment + * + ******************************************************************************/ + +void dcl_prefs_put_comment (char *comment) +{ +char text[MAX_LINE_LEN]; + + dcl_strcpy (text, "# ", MAX_LINE_LEN); + dcl_strcat (text, comment, MAX_LINE_LEN); + fprintf (prefs_filehandle, text); +} + + +/****************************************************************************** + * + * dcl_prefs_get_line_with_tag + * + ******************************************************************************/ + +char* dcl_prefs_get_line_with_tag (char *tagname) +{ +static char prfline[MAX_LINE_LEN]; +int i; +char c; + + fseek (prefs_filehandle, 0, SEEK_SET); + + while (!feof (prefs_filehandle)) { + i = 0; + + while (((c = fgetc (prefs_filehandle)) != '\n') && c!= EOF && i < MAX_LINE_LEN) + prfline[i++] = c; + + prfline[i] = '\0'; + + if (prfline[0] != '#') + if (!strncmp (tagname, prfline, strlen (tagname))) break; + } + + return prfline; +} + + +/****************************************************************************** + * + * dcl_prefs_get_value_field + * + ******************************************************************************/ + +char* dcl_prefs_get_value_field (char *tagname) +{ +static char valuestr[MAX_VALUE_LEN]; +char *valpos, c; +int i; + + i = 0; + + if ((valpos = strchr (dcl_prefs_get_line_with_tag (tagname), '='))) { + while((c = valpos[i+1]) != '\0' && i < MAX_VALUE_LEN) valuestr[i++] = c; + } + + valuestr[i] = '\0'; + return valuestr; +} + + +/****************************************************************************** + * + * dcl_prefs_get_int + * + ******************************************************************************/ + +int dcl_prefs_get_int (char *tagname) +{ + return (atoi (dcl_prefs_get_value_field (tagname))); +} + + +/****************************************************************************** + * + * dcl_prefs_get_float + * + ******************************************************************************/ + +float dcl_prefs_get_float (char *tagname) +{ + return (atof (dcl_prefs_get_value_field (tagname))); +} + + +/****************************************************************************** + * + * dcl_prefs_get_string + * + ******************************************************************************/ + +char* dcl_prefs_get_string (char *tagname) +{ + return (dcl_prefs_get_value_field (tagname)); +} + + +/****************************************************************************** + * + * dcl_strcpy + * + ******************************************************************************/ + +char* dcl_strcpy (char *dest, const char *src, int maxlength) +{ +int len; + + if (!dest) { + fprintf (stderr, "ERROR: NULL dest in safe_strcpy\n"); + return NULL; + } + + if (!src) { + *dest = 0; + return dest; + } + + len = strlen(src); + + if (len > maxlength) { + fprintf (stderr, "ERROR: string overflow by %d in safe_strcpy [%.50s]\n", + (int)(len-maxlength), src); + len = maxlength; + } + + memcpy(dest, src, len); + dest[len] = 0; + return dest; +} + + +/****************************************************************************** + * + * dcl_strcat + * + ******************************************************************************/ + +char* dcl_strcat (char *dest, const char *src, int maxlength) +{ +int src_len, dest_len; + + if (!dest) { + fprintf (stderr, "ERROR: NULL dest in safe_strcat\n"); + return NULL; + } + + if (!src) { + return dest; + } + + src_len = strlen(src); + dest_len = strlen(dest); + + if (src_len + dest_len > maxlength) { + fprintf (stderr, "ERROR: string overflow by %d in safe_strcat [%.50s]\n", + (int)(src_len + dest_len - maxlength), src); + src_len = maxlength - dest_len; + } + + memcpy(&dest[dest_len], src, src_len); + dest[dest_len + src_len] = 0; + return dest; +} + + +/****************************************************************************** + * + * dcl_draw_char + * + ******************************************************************************/ + +int dcl_draw_char(int x, int y, char z, int font_type) +{ +char *ctable = { "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890.[]-_:'@" }; +int ctable_len = 44; +int k, font_line, font_width, font_height; + + switch(font_type) { + + case FONT_SMALL: + font_width = 4; + font_height = 5; + font_line = 12; + break; + + case FONT_NORMAL: + font_width = 5; + font_height = 5; + font_line = 7; + break; + + case FONT_LARGE: + font_width = 5; + font_height = 7; + font_line = 0; + break; + + default: + fprintf(stderr, "ERROR: Unknown font type...\n"); + return false; + } + + for(k=0; k < ctable_len; k++) + if(toupper(z)==ctable[k]) { + + dcl_copy_font_xpm_area(k*font_width, font_line, font_width, font_height, x, y); + break; + + } + + return true; +} + +/****************************************************************************** + * + * dcl_draw_string + * + ******************************************************************************/ + +int dcl_draw_string(int x, int y, char *string, int font_type, int length) +{ +int j, len, font_width; +char a; + + if(length == -1) + len = strlen(string); + else + len = length; + + if(len <= 0 || len > MAX_STRING_LEN) { + + fprintf(stderr, "ERROR: Wrong string length...\n"); + return false; + + } + + switch(font_type) { + + case FONT_SMALL: + font_width = 4; + break; + + case FONT_NORMAL: + font_width = 5; + break; + + case FONT_LARGE: + font_width = 5; + break; + + default: + fprintf(stderr, "ERROR: Unknown font type...\n"); + return false; + } + + for(j=0; j NUM_COLORS) { + fprintf(stderr,"ERROR: Color doesn't exist..."); + return false; + } + + dcl_copy_led_xpm_area(5*color, 0, 5, 5, x, y); + + return true; +} + + +/****************************************************************************** + * + * dcl_execute_command + * + ******************************************************************************/ + +void dcl_execute_command(char *command, int flag) +{ +char *cmdline[4]; +pid_t pid, pid_status; + + pid = fork(); + + if (pid == 0) { + + cmdline[0] = "sh"; + cmdline[1] = "-c"; + cmdline[2] = command; + cmdline[3] = 0; + execvp("/bin/sh", cmdline); + _exit(121); + + } else + if(flag) + waitpid(pid, &pid_status, 0); + +} + +/****************************************************************************** + * + * dcl_check_file + * + ******************************************************************************/ + +int dcl_check_file(char *filename) +{ +struct stat ftype; +int state = F_NOT_AVAILABLE; + + if(stat(filename, &ftype)==-1) + state = F_NOT_AVAILABLE; + + else if(S_ISREG(ftype.st_mode)) + state = F_REGULAR; + + else if(S_ISDIR(ftype.st_mode)) + state = F_DIRECTORY; + + else if(S_ISCHR(ftype.st_mode)) + state = F_CHAR_DEVICE; + + else if(S_ISBLK(ftype.st_mode)) + state = F_BLOCK_DEVICE; + + else if(S_ISLNK(ftype.st_mode)) + state = F_LINK; + + else if(S_ISFIFO(ftype.st_mode)) + state = F_FIFO; + + else if(S_ISSOCK(ftype.st_mode)) + state = F_SOCK; + + return state; +} + + +/****************************************************************************** + * + * dcl_draw_point + * + ******************************************************************************/ + +void dcl_draw_point(int x, int y, Pixel color) +{ + XSetForeground(display, NormalGC, color); + XDrawPoint(display, wmgen.pixmap, NormalGC, x, y); +} + +/****************************************************************************** + * + * dcl_draw_line + * + ******************************************************************************/ + +void dcl_draw_line(int x0, int y0, int x1, int y1, Pixel color) +{ + XSetForeground(display, NormalGC, color); + XDrawLine(display, wmgen.pixmap, NormalGC, x0, y0, x1, y1); +} + +/*------------------------------------------------------------------------------------------- + * fonts and leds definitions + * gfx by sill + *-------------------------------------------------------------------------------------------*/ + +char * fonts_xpm[] = { +"220 17 8 1", +" c None", +". c #145B53", +"+ c #20B2AE", +"@ c #004941", +"# c #007D71", +"$ c #188A86", +"% c #202020", +"& c #22332F", +".+++.++++.@+++#++++@#+++##+++#@+++$+@%@+%#+#%#+++#+%%%++%%%%+%%%++@%%+@+++@++++@@+++@++++@@++++++++++%%%++%%%++%%%++%%%++%%%+++++#%%%#%#+++##+++##%%%##+++##+++##+++##+++##+++##+++#%%%%%+++$%%$+++%%%%%%%%%%%%%%%%%%%%@+++@", +"+%%%++%%%++@%%%+%%@++%%%%+%%%%+%%%@+@%@+%%+%%%%%%++%%##+%%%%+@%@+++%%++@%@++%%@++@%@++%%@++%%%@@%+%@+%%%++%%%++%%%++@%@++%%%+@%%@+%%%+%%%%%+%%%%++%%%++%%%%+%%%%%%%%++%%%++%%%++%%%+%%%%%+%%%%%%%%+%%%%%%%%%%%++%%%+$%%+@%@+", +"+%%%++%%%++%%%%+%%%++%%%%+%%%%+%%%%+@%@+%%+%%%%%%++@@+%+%%%%++@++++.%++%%%++%%%++%%%++%%%++%%%%%%+%%+%%%++%%%++%%%+%+@+%+@%@+%%@+.%%%+%%%%%+%%%%++%%%++%%%%+%%%%%%%%++%%%++%%%++%%%+%%%%%+%%%%%%%%+%%%%%%%%%%%$$%%%+$%%+%#%+", +"+%%%+++++%+%%%%+%%%++++#%+++#%+%++$+++++%%+%%%%%%++++%%+%%%%+@+@++%+%++%%%++%%@++%#%++%%@+@+++@%%+%%+%%%++@%@++%#%+%@+@%@+.+@%.+.%%%%#%#+++#%+++##+++##+++##+++#%%%%#%+++%#+++##%%%#%%%%%+%%%%%%%%+$+++$%%%%%%%%%%%$.%%+%+@+", +"++++++%%%++%%%%+%%%++%%%%+%%%%+%%%++@%@+%%+%%%%%%++@@+%+%%%%+%@%++%.+++%%%+++++@+%+@+++++%%%%%+%%+%%+%%%+##%##+@+@+%+@+%%@+@%.+@%%%%%+%+%%%%%%%%+%%%%+%%%%++%%%+%%%%++%%%+%%%%++%%%+%%%%%+%%%%%%%%+%%%%%%%%%%%%%%%%%%%%+%#+@", +"+%%%++%%%++@%%%+%%@++%%%%+%%%%+%%%++@%@+%%+%%+%%@++%%##+@%%%+%%%++%%+++@%@++%%%%+@@+.+%%@+@%%%+%%+%%+@%@+%+@+%++@+++@%@+%%+%%+@%%@%%%+%+%%%%%%%%+%%%%+%%%%++%%%+%%%%++%%%+%%%%++%%%+%$$%%+%%%%%%%%+%%%%%%%%%%%$$%%%%%%%+@%%%", +"+%%%+++++.@+++#++++@#+++#+%%%%@+++.+@%@+%#+#%@+++@+%%%+.+++#+%%%++%%@+@+++@+%%%%@++.++%%%+++++@%%+%%@+++@%@+@%+@%@++%%%+%%+%%#++++%%%#%#+++##+++#%%%%##+++##+++#%%%%##+++##+++##+++#%++%%+++$%%$+++%%%%%$+++$%++%%%%%%%@+++@", +"&+++&++++&&+++$++++&$+++$$+++$.+++.+%%%+%&+&%$+++$+%%%++%%%%++&+++%%%+&+++&++++&&+++&++++&&+++$$+++$+%%%++%%%++%%%++%%%++%%%+$++++%%%$%$++$%$++$%$%%$%$++$%$++$%$++$%$++$%$++$%$++$%%%%%%%++&%%&++%%%%%%%%%%%%$$%%%+$%%@+++@", +"+%%%++%%%++%%%%+%%%++%%%%+%%%%+%%%%+%%%+%%+%%%%%%++%%+%+%%%%+&+&+++%%++%%%++%%%++%%%++%%%++%%%%%%+%%+%%%++%%%++%+%+%+%+%+%%%+%%%+%%%%+%%%%+%%%%+%+%%+%+%%%%+%%%%%%%+%+%%+%+%%+%+%%+%%%%%%%+%%%%%%+%%%%%%%%%%%%++%%%+$%%+$$@+", +"+%%%+++++&+%%%%+%%%++++$%+++$%+%%+++++++%%+%%%%%%++++%%+%%%%+%+%++%+%++%%%++%%%++%+%++%%%+&+++&%%+%%+%%%+&+%+&+%+%+%%+%%%+%+%%%+%%%%%$%$++$%%++$%$++$%$++$%$++$%%%%$%$++$%$++$%$%%$%%%%%%%+%%%%%%+%$+++$%%%%%%%%%%%$.%%+%++$", +"++++++%%%++%%%%+%%%++%%%%+%%%%+%%%++%%%+%%+%%+%%%++%%+%+%%%%+%&%++%%+++%%%+++++&+%%+$++++&%%%%+%%+%%+%%%+%+%+%+&+&+%+%+%%%+%%%+%%%%%%+%+%%%%%%%+%%%%+%%%%+%+%%+%%%%+%+%%+%%%%+%+%%+%%$$%%%+%%%%%%+%%%%%%%%%%%%$$%%%%%%%+@@@%", +"+%%%+++++&&+++$++++&$+++$+%%%%.+++.+%%%+%&+&%&+++&+%%%+&+++++%%%++%%%+&+++&+%%%%&++$++%%%+$+++&%%+%%&+++&%&+&%&+&+&+%%%+%%+%%++++$%%%$%$++$%$++$%%%%$%$++$%$++$%%%%$%$++$%$++$%$++$%%++%%%++&%%&++%%%%%%$+++$%++%%%%%%%@+++@", +".++.+++.&++$$++.$++$$++$.++$$%%$%$.%$++$$%%$$%%%$%%$$%%$.++.+++..++.+++..++$++++$%%$$%%$$%%$$%%$$%%$$++$%%.$$++.$++.$%%$$++$.++$$++..++..++..++.%%%%++&%%&++%%%%%%%%%$$%%+$%@++@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", +"+%%++%%++%%%+%%++%%%+%%%+%%%+%%+%+.%%%%++%+.+%%%+$$+++%++%%++%%++%%++%%++%%%%$$%+%%++%%++%%++%%++%%+%%+%%.++%%%+%%%++%%++%%%+%%%%%%++%%++%%++%%+%%%%+%%%%%%+%%%%%%%%%++%%+$%+$@+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", +"+%%++++&+%%%+%%+++$%++$%+%+$++++%+.%%%%+++.%+%%%+..++&+++%%++%%++%$++%%+.++.%$$%+%%+$%%$+..+&++&%++%%+%%%%%+.++.%++$.+++$++.+++.%%%+.++..++++%%+%%%%+%%%%%%+$++$%%%%%%%%%$.%+%+$%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", +"+++++%%++%%%+%%++%%%+%%%+%%++%%+%+.%+%%++%+.+%%%+%%++%&++%%++++.+%+$+++&%%%+%$$%+%%+$..$+++++%%+%&+%+%%%%%%++%%%%%%+%%%+%%%++%%+%%%++%%+%%%++%%+%$$%+%%%%%%+%%%%%%%%%$$%%%%%+@@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%", +"+%%++++.&++$$++.$++$+%%%.++.$%%$%$.%.++.$%%$$++$$%%$$%%$.++.+%%%.+$++%%+$++.%$$%.++.&++&$&&$$%%$%&$%$++$%%%$$++$$++.%%%$$++..++.%%%$.++..++..++.%++%++&%%&++%%%%$++$%++%%%%%@++@%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%"}; + +char * leds_xpm[] = { +"50 5 72 1", +" c #262626", +". c #3F4D4A", +"+ c #4A5754", +"@ c #3E3E1B", +"# c #B2B26F", +"$ c #DCDC30", +"% c #97970A", +"& c #1F431F", +"* c #5CA65C", +"= c #2DE02D", +"- c #0F8D0F", +"; c #282828", +"> c #448986", +", c #4EA9A5", +"' c #3B7F7D", +") c #032E50", +"! c #2776E2", +"~ c #6CA5EB", +"{ c #396CC4", +"] c #662F00", +"^ c #E58325", +"/ c #F2AF74", +"( c #C66100", +"_ c #4A1F1F", +": c #BB4545", +"< c #FF2424", +"[ c #B61111", +"} c #630000", +"| c #C32284", +"1 c #C2519E", +"2 c #B4197C", +"3 c #650000", +"4 c #9B4B55", +"5 c #AB6A72", +"6 c #8C434E", +"7 c #3D3D3D", +"8 c #898989", +"9 c #CDCDCD", +"0 c #F3F3DD", +"a c #F3F3BA", +"b c #D4D400", +"c c #D8F9D8", +"d c #8BEE8B", +"e c #17D717", +"f c #D6FAF9", +"g c #6ADAD7", +"h c #46A19E", +"i c #BFE0EC", +"j c #A5CEEB", +"k c #4C93FB", +"l c #F7E4D4", +"m c #FFDCBA", +"n c #FFA147", +"o c #F7DADA", +"p c #FF7373", +"q c #F81515", +"r c #FBFAFD", +"s c #D6ACD9", +"t c #C13E9E", +"u c #FBFEFD", +"v c #CBBCBF", +"w c #9F626C", +"x c #EBEBEB", +"y c #FFFFFF", +"z c #EBEB8B", +"A c #72EA72", +"B c #55B7B3", +"C c #93C2EB", +"D c #FFD1A5", +"E c #FF5454", +"F c #C170AD", +"G c #B57D85", +" .+. @#$%@&*=-&;>,';)!~{)]^/(]_:<[_}|12}3456378987", +".+++.#0ab%*cde->fgh'!ijk{^lmn(:opq[|rst24uvw68xyx8", +"+++++$az$b=dA=e,gB,h~jC~k/mD/n +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +extern Display *display; + +/* prefs file mode */ +#define P_READ 1 +#define P_WRITE 2 + +#define MAX_LINE_LEN 512 +#define MAX_VALUE_LEN 256 + +#define MAX_STRING_LEN 32 + +/* mouse buttons */ +#define LMB 1 +#define MMB 2 +#define RMB 3 + +#define MAX_MOUSE_REGION 8 + +#define FONT_SMALL 1 +#define FONT_NORMAL 2 +#define FONT_LARGE 3 + +/*-------------------------------------------------------------------------------*/ + +typedef struct { + int enable; + int top; + int bottom; + int left; + int right; +} MOUSE_REGION; + + +typedef struct { + Pixmap pixmap; + Pixmap mask; + XpmAttributes attributes; +} XpmIcon; + +#define NUM_COLORS 10 + +enum { /* don't change the order! */ + GRAY = 0, + YELLOW, + GREEN, + CYAN, + SKYBLUE, + ORANGE, + RED, + MAGENTA, + BROWN, + WHITE +} led_colors; + +enum { + F_NOT_AVAILABLE = 0, + F_REGULAR, + F_DIRECTORY, + F_CHAR_DEVICE, + F_BLOCK_DEVICE, + F_LINK, + F_FIFO, + F_SOCK +} file_types; + +/*-------------------------------------------------------------------------------*/ + +void dcl_open_x_window (int argc, char *argv[], char **, char *, int, int); +void dcl_redraw_window (void); +void dcl_redraw_window_xy (int x, int y); +void dcl_copy_xpm_area (int x, int y, int sx, int sy, int dx, int dy); +void dcl_copy_font_xpm_area (int x, int y, int sx, int sy, int dx, int dy); +void dcl_copy_led_xpm_area (int x, int y, int sx, int sy, int dx, int dy); +void dcl_copy_xbm_area (int x, int y, int sx, int sy, int dx, int dy); +void dcl_set_mask_xy (int x, int y); +void dcl_get_xpm (XpmIcon *wmgen, char **pixmap_bytes); +Pixel dcl_get_color (char *name); +int dcl_draw_char (int x, int y, char z, int font_type); +int dcl_draw_led (int x, int y, int color); +int dcl_draw_string (int x, int y, char *string, int font_type, int length); +void dcl_add_mouse_region (int index, int left, int top, int right, int bottom); +int dcl_check_mouse_region (int x, int y); +char* dcl_getfilename_config (char *config_dir, char *config_filename); +void* dcl_prefs_openfile (char *filename, int openmode); +void dcl_prefs_closefile (void); +void dcl_prefs_put_int (char *tagname, int value); +void dcl_prefs_put_float (char *tagname, float value); +void dcl_prefs_put_string (char *tagname, char *value); +void dcl_prefs_put_lf (void); +void dcl_prefs_put_comment (char *comment); +int dcl_prefs_get_int (char *tagname); +float dcl_prefs_get_float (char *tagname); +char* dcl_prefs_get_string (char *tagname); +char* dcl_strcpy (char *dest, const char *src, int maxlength); +char* dcl_strcat (char *dest, const char *src, int maxlength); +void dcl_execute_command (char *command, int flag); +int dcl_check_file (char *filename); +void dcl_draw_point (int x, int y, Pixel color); +void dcl_draw_line (int x0, int y0, int x1, int y1, Pixel color); + + +/* + * Created: Sat 26 Mar 2005 05:46:11 PM CET + * Last Modified: Sat 26 Mar 2005 10:53:50 PM CET + */ + diff --git a/dockapps/cputnik/src/mask.h b/dockapps/cputnik/src/mask.h new file mode 100644 index 0000000..6a62b99 --- /dev/null +++ b/dockapps/cputnik/src/mask.h @@ -0,0 +1,46 @@ +#define MASK_WIDTH 64 +#define MASK_HEIGHT 64 +unsigned char cputnik_mask_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, + 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/dockapps/cputnik/src/master.h b/dockapps/cputnik/src/master.h new file mode 100644 index 0000000..f501194 --- /dev/null +++ b/dockapps/cputnik/src/master.h @@ -0,0 +1,101 @@ +/* XPM */ +char * cputnik_master_xpm[] = { +"64 72 26 1", +" c None", +". c #0000FF", +"+ c #000000", +"@ c #666366", +"# c #202020", +"$ c #898989", +"% c #004941", +"& c #292929", +"* c #135A57", +"= c #15615F", +"- c #166966", +"; c #18716E", +"> c #1A7976", +", c #1B817E", +"' c #1D8985", +") c #1F918D", +"! c #219995", +"~ c #22A19C", +"{ c #24A9A4", +"] c #26B1AC", +"^ c #27B9B4", +"/ c #29C1BB", +"( c #2BC8C3", +"_ c #188A86", +": c #20B6AE", +"< c #B59900", +"................................................................", +"................................................................", +"................................................................", +"...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++@...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+########################################################$...", +"...+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#$...", +"...+########################################################$...", +"...+########################################################$...", +"...@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$...", +"................................................................", +"................................................................", +"................................................................", +"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(", +"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(", +"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(", +"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(", +"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(", +"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(", +"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(", +"_:#<............................................................"}; diff --git a/dockapps/wmitime/BUGS b/dockapps/wmitime/BUGS new file mode 100644 index 0000000..27ed6e1 --- /dev/null +++ b/dockapps/wmitime/BUGS @@ -0,0 +1,9 @@ +Known 'features and easter eggs' in wmitime + +wmitime 0.2 +------------------------------------------------------------- + * analog clock still quirky, but whaddya gonna do... + +wmitime 0.1 +------------------------------------------------------------- + * First initial BETA release, analog clock little quirky. diff --git a/dockapps/wmitime/CHANGES b/dockapps/wmitime/CHANGES new file mode 100644 index 0000000..71fc433 --- /dev/null +++ b/dockapps/wmitime/CHANGES @@ -0,0 +1,53 @@ +Version Description +-------------------------------------------------------------- +0.4 * Update GPL text and Free Software Foundation address. + * Remove trailing whitespace. + * Allow -display option with no argument. Previously, if a user + ran wmitime with the -display option and no argument, a + segmentation fault would occur. Print a warning instead. + (Patch from Debian to fix bug #716466.) + * Update Makefile. In particular, + - Remove reference to deprecated X11R6 directory. + - Replace FLAGS variable with CFLAGS, CPPFLAGS, and LDFLAGS. + - Honor CC, PREFIX, and DESTDIR variables. + - Use INSTALL instead of cp for installation. + - Remove redundant -lXext flag. + - Move contents of wmitime directory to top directory to ease + the building process. + * Improve locale support. Previously, wmitime only had support + for English, French, and (in Debian only) Hungarian. In + addition, the choice was made at compile time. + Add run-time support for any language using the Latin + alphabet. The locale is determined by the user's environment + or may be specified on the command line with the "-l" option. + Note that users whose environment specifies a non-Latin locale + may wish to use, e.g., "-l C", as otherwise no date will + appear. + Note that, for simplicity, the month and day are now displayed + as "01 JAN" as opposed to "JAN 01". (Previously, the former + format was used for English and the latter for French.) + * Remove C++ style comments. + * Remove references to config file in source; nonexistent + feature. + * Update contact information. wmitime is now maintained by the + Window Maker Developers Team + . + * Add manpage and desktop file, both adapted from Debian. + * Remove wmitime-master-led.xpm; unused duplicate file. + * Do not include or compile unused wmgeneral files. + +0.3 * fixed inet time calculation error (oops :) ) + (thanks to Martijn van de Streek + * Added french support + (thanks to Pierre-Marie Allemand ) + + +0.2 * Fixed AM/PM mode bug... noon or midnight would + show up as '0:00'.. doh. + * Made the day abbrev 2 letters and the month 3 + due to popular request :) + * Fixed potentially fatal (but rare) /0 bug... + wheee :) + +0.1 + * First initial public release. diff --git a/dockapps/wmitime/COPYING b/dockapps/wmitime/COPYING new file mode 100644 index 0000000..d159169 --- /dev/null +++ b/dockapps/wmitime/COPYING @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/dockapps/wmitime/Makefile b/dockapps/wmitime/Makefile new file mode 100644 index 0000000..c521b2c --- /dev/null +++ b/dockapps/wmitime/Makefile @@ -0,0 +1,35 @@ +LIBS = -lXpm -lXext -lX11 -lm +CFLAGS = -Os -Wall -fcommon +OBJS = wmitime.o wmgeneral/wmgeneral.o +INSTALL = install +PREFIX = /usr/local +BINDIR = $(PREFIX)/bin +MANDIR = $(PREFIX)/share/man/man1 +DESKTOPDIR = $(PREFIX)/share/applications + +.c.o: + $(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $*.o + +wmitime: $(OBJS) + $(CC) $(LDFLAGS) -o wmitime $^ $(LIBS) + +all:: wmtime + +clean:: + for i in $(OBJS) ; do \ + rm -f $$i ; \ + done + rm -f wmitime wmitime.desktop + rm -f *~ + +wmitime.desktop: + sed "s|@BINDIR@|$(BINDIR)|" wmitime.desktop.in > $@ + +install:: wmitime wmitime.desktop + $(INSTALL) -d $(DESTDIR)$(BINDIR) + $(INSTALL) wmitime $(DESTDIR)$(BINDIR) + $(INSTALL) -d $(DESTDIR)$(MANDIR) + $(INSTALL) -m 644 wmitime.1 $(DESTDIR)$(MANDIR) + $(INSTALL) -d $(DESTDIR)$(DESKTOPDIR) + $(INSTALL) -m 644 wmitime.desktop $(DESTDIR)$(DESKTOPDIR) + @echo "wmitime Installation finished..." diff --git a/dockapps/wmitime/README b/dockapps/wmitime/README new file mode 100644 index 0000000..285be7c --- /dev/null +++ b/dockapps/wmitime/README @@ -0,0 +1,53 @@ +wmitime +-------------------------------------------------------------- +Author...: Dave Clark (clarkd@skynet.ca) +Maintainers : Window Maker Developers Team +Homepage : http://windowmaker.org/dockapps/?name=wmitime + +Description +-------------------------------------------------------------- +I cooked this up one night when i was bored and had read about +the new internet time thing from Swatch... kinda interesting +idea, who knows if it'll go anywhere... + +wmitime is yet another clock for your dock/clip/etc... +It's quite overglorified :) + +It tells standard 12/24hr time and Swatch's new Internet Time +(see www.swatch.com) + +Let me know what you think of it. ;) + +Installing +-------------------------------------------------------------- +make +make install + +should do it. + +Options +-------------------------------------------------------------- +Do a 'wmitime -h' to see the options... + + +Files +-------------------------------------------------------------- +README This file. +BUGS Things you don't want to know ;-) +CHANGES Description of changes. +COPYING GNU General Public License Version 2. + + +Bugs +-------------------------------------------------------------- +If you discover any bugs in this software, please send a +bugreport to wmaker-dev@lists.windowmaker.org and describe the +problem as detailed! as you can. + + +Copyright +-------------------------------------------------------------- +wmitime is copyright (c) 1997/98 by Dave Clark + +wmitime is licensed through the GNU General Public License. +Read the COPYING file for the complete GNU license. diff --git a/dockapps/wmitime/wmgeneral/list.c b/dockapps/wmitime/wmgeneral/list.c new file mode 100644 index 0000000..a63562f --- /dev/null +++ b/dockapps/wmitime/wmgeneral/list.c @@ -0,0 +1,169 @@ +/* Generic single linked list to keep various information + Copyright (C) 1993, 1994 Free Software Foundation, Inc. + + +Author: Kresten Krab Thorup + +Many modifications by Alfredo K. Kojima + + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301 USA. */ + +/* As a special exception, if you link this library with files compiled with + GCC to produce an executable, this does not cause the resulting executable + to be covered by the GNU General Public License. This exception does not + however invalidate any other reasons why the executable file might be + covered by the GNU General Public License. */ + +#include "list.h" +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#include + +/* Return a cons cell produced from (head . tail) */ + +INLINE LinkedList* +list_cons(void* head, LinkedList* tail) +{ + LinkedList* cell; + + cell = (LinkedList*)malloc(sizeof(LinkedList)); + cell->head = head; + cell->tail = tail; + return cell; +} + +/* Return the length of a list, list_length(NULL) returns zero */ + +INLINE int +list_length(LinkedList* list) +{ + int i = 0; + while(list) + { + i += 1; + list = list->tail; + } + return i; +} + +/* Return the Nth element of LIST, where N count from zero. If N + larger than the list length, NULL is returned */ + +INLINE void* +list_nth(int index, LinkedList* list) +{ + while(index-- != 0) + { + if(list->tail) + list = list->tail; + else + return 0; + } + return list->head; +} + +/* Remove the element at the head by replacing it by its successor */ + +INLINE void +list_remove_head(LinkedList** list) +{ + if (!*list) return; + if ((*list)->tail) + { + LinkedList* tail = (*list)->tail; /* fetch next */ + *(*list) = *tail; /* copy next to list head */ + free(tail); /* free next */ + } + else /* only one element in list */ + { + free(*list); + (*list) = 0; + } +} + + +/* Remove the element with `car' set to ELEMENT */ +/* +INLINE void +list_remove_elem(LinkedList** list, void* elem) +{ + while (*list) + { + if ((*list)->head == elem) + list_remove_head(list); + *list = (*list ? (*list)->tail : NULL); + } +}*/ + +INLINE LinkedList * +list_remove_elem(LinkedList* list, void* elem) +{ + LinkedList *tmp; + + if (list) { + if (list->head == elem) { + tmp = list->tail; + free(list); + return tmp; + } + list->tail = list_remove_elem(list->tail, elem); + return list; + } + return NULL; +} + + +/* Return element that has ELEM as car */ + +INLINE LinkedList* +list_find(LinkedList* list, void* elem) +{ + while(list) + { + if (list->head == elem) + return list; + list = list->tail; + } + return NULL; +} + +/* Free list (backwards recursive) */ + +INLINE void +list_free(LinkedList* list) +{ + if(list) + { + list_free(list->tail); + free(list); + } +} + +/* Map FUNCTION over all elements in LIST */ + +INLINE void +list_mapcar(LinkedList* list, void(*function)(void*)) +{ + while(list) + { + (*function)(list->head); + list = list->tail; + } +} diff --git a/dockapps/wmitime/wmgeneral/list.h b/dockapps/wmitime/wmgeneral/list.h new file mode 100644 index 0000000..92c3454 --- /dev/null +++ b/dockapps/wmitime/wmgeneral/list.h @@ -0,0 +1,59 @@ +/* Generic single linked list to keep various information + Copyright (C) 1993, 1994 Free Software Foundation, Inc. + +Author: Kresten Krab Thorup + +This file is part of GNU CC. + +GNU CC is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. + +GNU CC is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GNU CC; see the file COPYING. If not, write to +the Free Software Foundation, 51 Franklin Street, Fifth Floor, +Boston, MA 02110-1301 USA. */ + +/* As a special exception, if you link this library with files compiled with + GCC to produce an executable, this does not cause the resulting executable + to be covered by the GNU General Public License. This exception does not + however invalidate any other reasons why the executable file might be + covered by the GNU General Public License. */ + +#ifndef __LIST_H_ +#define __LIST_H_ + +#if defined(__GNUC__) && !defined(__STRICT_ANSI__) +# define INLINE inline +#else +# define INLINE +#endif + +typedef struct LinkedList { + void *head; + struct LinkedList *tail; +} LinkedList; + +INLINE LinkedList* list_cons(void* head, LinkedList* tail); + +INLINE int list_length(LinkedList* list); + +INLINE void* list_nth(int index, LinkedList* list); + +INLINE void list_remove_head(LinkedList** list); + +INLINE LinkedList *list_remove_elem(LinkedList* list, void* elem); + +INLINE void list_mapcar(LinkedList* list, void(*function)(void*)); + +INLINE LinkedList*list_find(LinkedList* list, void* elem); + +INLINE void list_free(LinkedList* list); + +#endif diff --git a/dockapps/wmitime/wmgeneral/misc.c b/dockapps/wmitime/wmgeneral/misc.c new file mode 100644 index 0000000..1f3bb2e --- /dev/null +++ b/dockapps/wmitime/wmgeneral/misc.c @@ -0,0 +1,164 @@ +/* dock.c- built-in Dock module for WindowMaker + * + * WindowMaker window manager + * + * Copyright (c) 1997 Alfredo K. Kojima + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +#include +#include +#include "list.h" +#include "misc.h" + +/* + *---------------------------------------------------------------------- + * parse_command-- + * Divides a command line into a argv/argc pair. + *---------------------------------------------------------------------- + */ +#define PRC_ALPHA 0 +#define PRC_BLANK 1 +#define PRC_ESCAPE 2 +#define PRC_DQUOTE 3 +#define PRC_EOS 4 +#define PRC_SQUOTE 5 + +typedef struct { + short nstate; + short output; +} DFA; + + +static DFA mtable[9][6] = { + {{3,1},{0,0},{4,0},{1,0},{8,0},{6,0}}, + {{1,1},{1,1},{2,0},{3,0},{5,0},{1,1}}, + {{1,1},{1,1},{1,1},{1,1},{5,0},{1,1}}, + {{3,1},{5,0},{4,0},{1,0},{5,0},{6,0}}, + {{3,1},{3,1},{3,1},{3,1},{5,0},{3,1}}, + {{-1,-1},{0,0},{0,0},{0,0},{0,0},{0,0}}, /* final state */ + {{6,1},{6,1},{7,0},{6,1},{5,0},{3,0}}, + {{6,1},{6,1},{6,1},{6,1},{5,0},{6,1}}, + {{-1,-1},{0,0},{0,0},{0,0},{0,0},{0,0}}, /* final state */ +}; + +char* +next_token(char *word, char **next) +{ + char *ptr; + char *ret, *t; + int state, ctype; + + t = ret = malloc(strlen(word)+1); + ptr = word; + + state = 0; + *t = 0; + while (1) { + if (*ptr==0) + ctype = PRC_EOS; + else if (*ptr=='\\') + ctype = PRC_ESCAPE; + else if (*ptr=='"') + ctype = PRC_DQUOTE; + else if (*ptr=='\'') + ctype = PRC_SQUOTE; + else if (*ptr==' ' || *ptr=='\t') + ctype = PRC_BLANK; + else + ctype = PRC_ALPHA; + + if (mtable[state][ctype].output) { + *t = *ptr; t++; + *t = 0; + } + state = mtable[state][ctype].nstate; + ptr++; + if (mtable[state][0].output<0) { + break; + } + } + + if (*ret==0) + t = NULL; + else + t = strdup(ret); + + free(ret); + + if (ctype==PRC_EOS) + *next = NULL; + else + *next = ptr; + + return t; +} + + +extern void +parse_command(char *command, char ***argv, int *argc) +{ + LinkedList *list = NULL; + char *token, *line; + int count, i; + + line = command; + do { + token = next_token(line, &line); + if (token) { + list = list_cons(token, list); + } + } while (token!=NULL && line!=NULL); + + count = list_length(list); + *argv = malloc(sizeof(char*)*count); + i = count; + while (list!=NULL) { + (*argv)[--i] = list->head; + list_remove_head(&list); + } + *argc = count; +} + +extern pid_t +execCommand(char *command) +{ + pid_t pid; + char **argv; + int argc; + + parse_command(command, &argv, &argc); + + if (argv==NULL) { + return 0; + } + + if ((pid=fork())==0) { + char **args; + int i; + + args = malloc(sizeof(char*)*(argc+1)); + if (!args) + exit(10); + for (i=0; i + +extern void parse_command(char *, char ***, int *); + +extern pid_t execCommand(char *); +#endif /* __MISC_H */ diff --git a/dockapps/wmitime/wmgeneral/wmgeneral.c b/dockapps/wmitime/wmgeneral/wmgeneral.c new file mode 100644 index 0000000..fb8a8f4 --- /dev/null +++ b/dockapps/wmitime/wmgeneral/wmgeneral.c @@ -0,0 +1,485 @@ +/* + Best viewed with vim5, using ts=4 + + wmgeneral was taken from wmppp. + + It has a lot of routines which most of the wm* programs use. + + ------------------------------------------------------------ + + Author: Martijn Pieterse (pieterse@xs4all.nl) + + --- + CHANGES: + --- + 14/09/1998 (Dave Clark, clarkd@skyia.com) + * Updated createXBMfromXPM routine + * Now supports >256 colors + 11/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Removed a bug from parse_rcfile. You could + not use "start" in a command if a label was + also start. + * Changed the needed geometry string. + We don't use window size, and don't support + negative positions. + 03/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added parse_rcfile2 + 02/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added -geometry support (untested) + 28/08/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added createXBMfromXPM routine + * Saves a lot of work with changing xpm's. + 02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon + * debugged the parse_rc file. + 30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Ripped similar code from all the wm* programs, + and put them in a single file. + +*/ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "wmgeneral.h" + + /*****************/ + /* X11 Variables */ +/*****************/ + +Window Root; +int screen; +int x_fd; +int d_depth; +XSizeHints mysizehints; +XWMHints mywmhints; +Pixel back_pix, fore_pix; +char *Geometry = ""; +Window iconwin, win; +GC NormalGC; +XpmIcon wmgen; +Pixmap pixmask; + + /*****************/ + /* Mouse Regions */ +/*****************/ + +typedef struct { + int enable; + int top; + int bottom; + int left; + int right; +} MOUSE_REGION; + +MOUSE_REGION mouse_region[MAX_MOUSE_REGION]; + + /***********************/ + /* Function Prototypes */ +/***********************/ + +static void GetXPM(XpmIcon *, char **); +static Pixel GetColor(char *); +void RedrawWindow(void); +void AddMouseRegion(int, int, int, int, int); +int CheckMouseRegion(int, int); + +/*******************************************************************************\ +|* parse_rcfile *| +\*******************************************************************************/ + +void parse_rcfile(const char *filename, rckeys *keys) { + + char *p,*q; + char temp[128]; + char *tokens = " :\t\n"; + FILE *fp; + int i,key; + + fp = fopen(filename, "r"); + if (fp) { + while (fgets(temp, 128, fp)) { + key = 0; + q = strdup(temp); + q = strtok(q, tokens); + while (key >= 0 && keys[key].label) { + if ((!strcmp(q, keys[key].label))) { + p = strstr(temp, keys[key].label); + p += strlen(keys[key].label); + p += strspn(p, tokens); + if ((i = strcspn(p, "#\n"))) p[i] = 0; + free(*keys[key].var); + *keys[key].var = strdup(p); + key = -1; + } else key++; + } + free(q); + } + fclose(fp); + } +} + +/*******************************************************************************\ +|* parse_rcfile2 *| +\*******************************************************************************/ + +void parse_rcfile2(const char *filename, rckeys2 *keys) { + + char *p; + char temp[128]; + char *tokens = " :\t\n"; + FILE *fp; + int i,key; + char *family = NULL; + + fp = fopen(filename, "r"); + if (fp) { + while (fgets(temp, 128, fp)) { + key = 0; + while (key >= 0 && keys[key].label) { + if ((p = strstr(temp, keys[key].label))) { + p += strlen(keys[key].label); + p += strspn(p, tokens); + if ((i = strcspn(p, "#\n"))) p[i] = 0; + free(*keys[key].var); + *keys[key].var = strdup(p); + key = -1; + } else key++; + } + } + fclose(fp); + } + free(family); +} + + +/*******************************************************************************\ +|* GetXPM *| +\*******************************************************************************/ + +static void GetXPM(XpmIcon *wmgen, char *pixmap_bytes[]) { + + XWindowAttributes attributes; + int err; + + /* For the colormap */ + XGetWindowAttributes(display, Root, &attributes); + + wmgen->attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions); + + err = XpmCreatePixmapFromData(display, Root, pixmap_bytes, &(wmgen->pixmap), + &(wmgen->mask), &(wmgen->attributes)); + + if (err != XpmSuccess) { + fprintf(stderr, "Not enough free colorcells.\n"); + exit(1); + } +} + +/*******************************************************************************\ +|* GetColor *| +\*******************************************************************************/ + +static Pixel GetColor(char *name) { + + XColor color; + XWindowAttributes attributes; + + XGetWindowAttributes(display, Root, &attributes); + + color.pixel = 0; + if (!XParseColor(display, attributes.colormap, name, &color)) { + fprintf(stderr, "wm.app: can't parse %s.\n", name); + } else if (!XAllocColor(display, attributes.colormap, &color)) { + fprintf(stderr, "wm.app: can't allocate %s.\n", name); + } + return color.pixel; +} + +/*******************************************************************************\ +|* flush_expose *| +\*******************************************************************************/ + +static int flush_expose(Window w) { + + XEvent dummy; + int i=0; + + while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) + i++; + + return i; +} + +/*******************************************************************************\ +|* RedrawWindow *| +\*******************************************************************************/ + +void RedrawWindow(void) { + + flush_expose(iconwin); + XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, + 0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0); + flush_expose(win); + XCopyArea(display, wmgen.pixmap, win, NormalGC, + 0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0); +} + +/*******************************************************************************\ +|* RedrawWindowXY *| +\*******************************************************************************/ + +void RedrawWindowXY(int x, int y) { + + flush_expose(iconwin); + XCopyArea(display, wmgen.pixmap, iconwin, NormalGC, + x,y, wmgen.attributes.width, wmgen.attributes.height, 0,0); + flush_expose(win); + XCopyArea(display, wmgen.pixmap, win, NormalGC, + x,y, wmgen.attributes.width, wmgen.attributes.height, 0,0); +} + +/*******************************************************************************\ +|* AddMouseRegion *| +\*******************************************************************************/ + +void AddMouseRegion(int index, int left, int top, int right, int bottom) { + + if (index < MAX_MOUSE_REGION) { + mouse_region[index].enable = 1; + mouse_region[index].top = top; + mouse_region[index].left = left; + mouse_region[index].bottom = bottom; + mouse_region[index].right = right; + } +} + +/*******************************************************************************\ +|* CheckMouseRegion *| +\*******************************************************************************/ + +int CheckMouseRegion(int x, int y) { + + int i; + int found; + + found = 0; + + for (i=0; i= mouse_region[i].left && + y <= mouse_region[i].bottom && + y >= mouse_region[i].top) + found = 1; + } + if (!found) return -1; + return (i-1); +} + +/*******************************************************************************\ +|* createXBMfromXPM *| +\*******************************************************************************/ +void createXBMfromXPM(char *xbm, char **xpm, int sx, int sy) { + + int i,j,k; + int width, height, numcol, depth; + int zero=0; + unsigned char bwrite; + int bcount; + int curpixel; + + sscanf(*xpm, "%d %d %d %d", &width, &height, &numcol, &depth); + + + for (k=0; k!=depth; k++) + { + zero <<=8; + zero |= xpm[1][k]; + } + + for (i=numcol+1; i < numcol+sy+1; i++) { + bcount = 0; + bwrite = 0; + for (j=0; j>= 1; + + curpixel=0; + for (k=0; k!=depth; k++) + { + curpixel <<=8; + curpixel |= xpm[i][j+k]; + } + + if ( curpixel != zero ) { + bwrite += 128; + } + bcount++; + if (bcount == 8) { + *xbm = bwrite; + xbm++; + bcount = 0; + bwrite = 0; + } + } + } +} + +/*******************************************************************************\ +|* copyXPMArea *| +\*******************************************************************************/ + +void copyXPMArea(int x, int y, int sx, int sy, int dx, int dy) { + + XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); + +} + +/*******************************************************************************\ +|* copyXBMArea *| +\*******************************************************************************/ + +void copyXBMArea(int x, int y, int sx, int sy, int dx, int dy) { + + XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); +} + + +/*******************************************************************************\ +|* setMaskXY *| +\*******************************************************************************/ + +void setMaskXY(int x, int y) { + + XShapeCombineMask(display, win, ShapeBounding, x, y, pixmask, ShapeSet); + XShapeCombineMask(display, iconwin, ShapeBounding, x, y, pixmask, ShapeSet); +} + +/*******************************************************************************\ +|* openXwindow *| +\*******************************************************************************/ +void openXwindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits, int pixmask_width, int pixmask_height) { + + unsigned int borderwidth = 1; + XClassHint classHint; + char *display_name = NULL; + char *wname = argv[0]; + XTextProperty name; + + XGCValues gcv; + unsigned long gcm; + + char *geometry = NULL; + + int dummy=0; + int i, wx, wy; + + for (i=1; argv[i]; i++) { + if (!strcmp(argv[i], "-display")) { + display_name = argv[i+1]; + if (!display_name) + printf("Please provide an argument for " + "-display.\n"); + else + i++; + } + if (!strcmp(argv[i], "-geometry")) { + geometry = argv[i+1]; + i++; + } + } + + if (!(display = XOpenDisplay(display_name))) { + fprintf(stderr, "%s: can't open display %s\n", + wname, XDisplayName(display_name)); + exit(1); + } + screen = DefaultScreen(display); + Root = RootWindow(display, screen); + d_depth = DefaultDepth(display, screen); + x_fd = XConnectionNumber(display); + + /* Convert XPM to XImage */ + GetXPM(&wmgen, pixmap_bytes); + + /* Create a window to hold the stuff */ + mysizehints.flags = USSize | USPosition; + mysizehints.x = 0; + mysizehints.y = 0; + + back_pix = GetColor("white"); + fore_pix = GetColor("black"); + + XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints, + &mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy); + + mysizehints.width = 64; + mysizehints.height = 64; + + win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y, + mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix); + + iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y, + mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix); + + /* Activate hints */ + XSetWMNormalHints(display, win, &mysizehints); + classHint.res_name = wname; + classHint.res_class = wname; + XSetClassHint(display, win, &classHint); + + XSelectInput(display, win, ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask); + XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask); + + if (XStringListToTextProperty(&wname, 1, &name) == 0) { + fprintf(stderr, "%s: can't allocate window name\n", wname); + exit(1); + } + + XSetWMName(display, win, &name); + + /* Create GC for drawing */ + + gcm = GCForeground | GCBackground | GCGraphicsExposures; + gcv.foreground = fore_pix; + gcv.background = back_pix; + gcv.graphics_exposures = 0; + NormalGC = XCreateGC(display, Root, gcm, &gcv); + + /* ONLYSHAPE ON */ + + pixmask = XCreateBitmapFromData(display, win, pixmask_bits, pixmask_width, pixmask_height); + + XShapeCombineMask(display, win, ShapeBounding, 0, 0, pixmask, ShapeSet); + XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, pixmask, ShapeSet); + + /* ONLYSHAPE OFF */ + + mywmhints.initial_state = WithdrawnState; + mywmhints.icon_window = iconwin; + mywmhints.icon_x = mysizehints.x; + mywmhints.icon_y = mysizehints.y; + mywmhints.window_group = win; + mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint; + + XSetWMHints(display, win, &mywmhints); + + XSetCommand(display, win, argv, argc); + XMapWindow(display, win); + + if (geometry) { + if (sscanf(geometry, "+%d+%d", &wx, &wy) != 2) { + fprintf(stderr, "Bad geometry string.\n"); + exit(1); + } + XMoveWindow(display, win, wx, wy); + } +} diff --git a/dockapps/wmitime/wmgeneral/wmgeneral.h b/dockapps/wmitime/wmgeneral/wmgeneral.h new file mode 100644 index 0000000..e9d6ca6 --- /dev/null +++ b/dockapps/wmitime/wmgeneral/wmgeneral.h @@ -0,0 +1,59 @@ +#ifndef WMGENERAL_H_INCLUDED +#define WMGENERAL_H_INCLUDED + + /***********/ + /* Defines */ +/***********/ + +#define MAX_MOUSE_REGION (16) + + /************/ + /* Typedefs */ +/************/ + +typedef struct _rckeys rckeys; + +struct _rckeys { + const char *label; + char **var; +}; + +typedef struct _rckeys2 rckeys2; + +struct _rckeys2 { + const char *family; + const char *label; + char **var; +}; + +typedef struct { + Pixmap pixmap; + Pixmap mask; + XpmAttributes attributes; +} XpmIcon; + + /*******************/ + /* Global variable */ +/*******************/ + +Display *display; + + /***********************/ + /* Function Prototypes */ +/***********************/ + +void AddMouseRegion(int index, int left, int top, int right, int bottom); +int CheckMouseRegion(int x, int y); + +void openXwindow(int argc, char *argv[], char **, char *, int, int); +void RedrawWindow(void); +void RedrawWindowXY(int x, int y); + +void createXBMfromXPM(char *, char **, int, int); +void copyXPMArea(int, int, int, int, int, int); +void copyXBMArea(int, int, int, int, int, int); +void setMaskXY(int, int); + +void parse_rcfile(const char *, rckeys *); + +#endif diff --git a/dockapps/wmitime/wmitime-master.xpm b/dockapps/wmitime/wmitime-master.xpm new file mode 100644 index 0000000..ede97a7 --- /dev/null +++ b/dockapps/wmitime/wmitime-master.xpm @@ -0,0 +1,135 @@ +/* XPM */ +static char * wmitime_master_xpm[] = { +"240 100 32 1", +". c #0000FF", +" c None", +"+ c #202020", +"@ c #000000", +"# c #C7C3C7", +"$ c #004941", +"% c #020205", +"& c #010101", +"* c #040405", +"= c #000001", +"- c #04040C", +"; c #000002", +"> c #060609", +", c #20B2AE", +"' c #107D79", +") c #188A86", +"! c #070707", +"~ c #020202", +"{ c #020203", +"] c #FFFFFF", +"^ c #20B1AD", +"/ c #20B0AC", +"( c #20AEAA", +"_ c #007D71", +": c #B60418", +"< c #00EB00", +"[ c #283C38", +"} c #F7F3FF", +"| c #71E371", +"1 c #494949", +"2 c #7A7A7A", +"3 c #BCBCBC", +"................................................................+...............................................................................................................................................................................", +"................................................................+...............................................................................................................................................................................", +"................................................................+...............................................................................................................................................................................", +"................................................................+...............................................................................................................................................................................", +"....@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@....+...............................................................................................................................................................................", +"....@++++++++++++++++++++++++++++++++++++++++++++++++++++++#....+...............................................................................................................................................................................", +"....@+++$$$$+++$$$$+++++++$$$$+++$$$$+++++++$$$$+++$$$$++++#....+...............................................................................................................................................................................", +"....@++$++++$+$++++$++$++$++++$+$++++$++$++$++++$+$++++$+++#....+...............................................................................................................................................................................", +"....@++$++++$+$++++$++$++$++++$+$++++$++$++$++++$+$++++$+++#....+...............................................................................................................................................................................", +"....@++$++++$+$++++$+++++$++++$+$++++$+++++$++++$+$++++$+++#....+.+++++++++++++++++++++++++++++++++++++++++++++++++++...........................................................................................................................", +"....@+++$$$$+++$$$$+++++++$$$$+++$$$$+++++++$$$$+++$$$$++++#....+.++$$$$+++$$$$+++++++$$$$+++$$$$+++++++$$$$+++$$$$++...........................................................................................................................", +"....@++$++++$+$++++$+++++$++++$+$++++$+++++$++++$+$++++$+++#....+.+$++++$+$++++$++$++$++++$+$++++$++$++$++++$+$++++$+...........................................................................................................................", +"....@++$++++$+$++++$++$++$++++$+$++++$++$++$++++$+$++++$+++#....+.+$++++$+$++++$++$++$++++$+$++++$++$++$++++$+$++++$+...........................................................................................................................", +"....@++$++++$+$++++$++$++$++++$+$++++$++$++$++++$+$++++$+++#....+.+$++++$+$++++$+++++$++++$+$++++$+++++$++++$+$++++$+...........................................................................................................................", +"....@+++$$$$+++$$$$+++++++$$$$+++$$$$+++++++$$$$+++$$$$++++#....+.++$$$$+++$$$$+++++++$$$$+++$$$$+++++++$$$$+++$$$$++...........................................................................................................................", +"....@++++++++++++++++++++++++++++++++++++++++++++++++++++++#....+.+$++++$+$++++$+++++$++++$+$++++$+++++$++++$+$++++$+...........................................................................................................................", +"....@#######################################################....+.+$++++$+$++++$++$++$++++$+$++++$++$++$++++$+$++++$+...........................................................................................................................", +"....................................@@@@@@@@@@@@@@@@@@@@@@@@....+.+$++++$+$++++$++$++$++++$+$++++$++$++$++++$+$++++$+...........................................................................................................................", +"....................................@++++++++++++++++++++++#....+.++$$$$+++$$$$+++++++$$$$+++$$$$+++++++$$$$+++$$$$++...........................................................................................................................", +"................%@&@&*=.............@+++$$$+++$$$+++$$$++++#....+.+++++++++++++++++++++++++++++++++++++++++++++++++++...........................................................................................................................", +".............=@@@+++++@@@%..........@++$+++$+$+++$+$+++$+++#....+...............................................................................................................................................................................", +"...........-@@+++++++++++@@;........@++$+++$+$+++$+$+++$+++#....+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++................................................................................................", +"..........>@+++++++++++++++@>.......@+++$$$+++$$$+++$$$++++#....+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++................................................................................................", +".........*@+++++++++++++++++@*......@++$+++$+$+++$+$+++$+++#....+..+++,,,,+++$$$$'+',,,,)+',,,,'+'$$$$'+',,,,'+',,,,)+',,,,'+',,,,)+',,,,)++++++................................................................................................", +"........&@+++++++++++++++++++@>.....@++$+++$+$+++$+$+++$+++#....+..++,++++,+$++++,+$++++,+$++++,+,++++,+,++++$+,++++$+$++++,+,++++,+,++++,++,+++................................................................................................", +".......;@+++++++++++++++++++++@-....@+++$$$+++$$$+++$$$++++#....+..++,++++,+$++++,+$++++,+$++++,+,++++,+,++++$+,++++$+$++++,+,++++,+,++++,++,+++................................................................................................", +".......@+++++++++++++++++++++++@....@++++++++++++++++++++++#....+..++,++++,+$++++,+$++++,+$++++,+,++++,+,++++$+,++++$+$++++,+,++++,+,++++,++++++................................................................................................", +"......=@+++++++++++++++++++++++@%...@#######################....+..++'$$$$'++$$$$'+',,,,'+',,,,'+',,,,'+',,,,'+',,,,'++$$$$'+',,,,'+',,,,'++++++................................................................................................", +"......@+++++++++++++++++++++++++@...............................+..++,++++,+$++++,+,++++$+$++++,+$++++,+$++++,+,++++,+$++++,+,++++,+$++++,++++++................................................................................................", +"......@+++++++++++++++++++++++++@............!~@@@~!............+..++,++++,+$++++,+,++++$+$++++,+$++++,+$++++,+,++++,+$++++,+,++++,+$++++,++,+++................................................................................................", +".....{@+++++++++++++++++++++++++@#.........~@@+++++@@~..........+..++,++++,+$++++,+,++++$+$++++,+$++++,+$++++,+,++++,+$++++,+,++++,+$++++,++,+++................................................................................................", +".....@+++++++++++++++++++++++++++#.......!@@+++++++++@@!........+..+++,,,,+++$$$$'+',,,,'+',,,,'++$$$$'+',,,,'+',,,,'++$$$$'+',,,,'+',,,,'++++++................................................................................................", +".....@+++++++++++++++++++++++++++#.......@+++++++++++++@........+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++................................................................................................", +".....@+++++++++++++@+++++++++++++#......~@+++++++++++++@~.......+..+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++................................................................................................", +".....@+++++++++++++++++++++++++++#......@+++++++++++++++@.......+...............................................................................................................................................................................", +".....@+++++++++++++++++++++++++++#.....!@+++++++++++++++@#......+........!~@@@~!............!~@@@~!............!~@@@~!............!~@@@~!............!~@@@~!............!~@@@~!............!~@@@~!............!~@@@~!............!~@@@~!........", +".....=@+++++++++++++++++++++++++##.....~+++++++++++++++++#......+......~@@+++++@@~........~@@+++++@@~........~@@+++++@@~........~@@+++++@@~........~@@,,,++@@~........~@@,,,,,@@~........~@@,,,,,@@~........~@@,,,,,@@~........~@@,,,,,@@~......", +"......@+++++++++++++++++++++++++#......@+++++++++++++++++#......+....!@@+++++++++@@!....!@@+++++++++@@!....!@@+++++++++@@!....!@@+++++++++@@!....!@@,,,,,++++@@!....!@@,,,,,,,,,@@!....!@@,,,,,,,,,@@!....!@@,,,,,,,,,@@!....!@@,,,,,,,,,@@!....", +"......@+++++++++++++++++++++++++#......@++++++++]++++++++#......+....@+++++++++++++@....@+++++++++++++@....@+++++++++++++@....@,++++++++++++@....@,,,,,,,++++++@....@,,,,,,,,,,,,,@....@,,,,,,,,,,,,,@....@,,,,,,,,,,,,,@....@,,,,,,^^^,,,,@....", +"......%@+++++++++++++++++++++++##......@+++++++++++++++++#......+...~@+++++++++++++@~..~@+++++++++++++@~..~@+++++++++++++@~..~@,,+++++++++++@~..~@,,,,,,,++++++@~..~@,,,,,,,,,,,,+@~..~@,,,,,,,,,,,,,@~..~@,,,,,,,,,,,,,@~..~@,,/,,,,,,,,/,@~...", +".......@+++++++++++++++++++++++#.......~+++++++++++++++++#......+...@+++++++++++++++@..@+++++++++++++++@..@+++++++++++++++@..@,,,,+++++++++++@..@,,,,,,,,+++++++@..@,,,,,,,,,,,,+++@..@,,,,,,,,,,,,,,,@..@,,,,,,,,,,,,,,,@..@,,,,,,,,,,,,,,,@...", +".......-@+++++++++++++++++++++##.......!@+++++++++++++++##......+..!@+++++++++++++++@#!@+++++++++++++++@#!@+++++++++++++++@#!@,,,,,++++++++++@#!@,,,,,,,,+++++++@#!@,,,,,,,,,,,++++@#!@,,,,,,,,,,,,,,,@#!@,,,,,,,,,,,,,,,@#!@,(,,,,,,,,,,,,(@#..", +"........>@+++++++++++++++++++##.........@+++++++++++++++#.......+..~+++++++++++++++++#~+++++++++++++++++#~+++++++++++++++++#~,,,,,,,++++++++++#~,,,,,,,,,++++++++#~,,,,,,,,,,,++++++#~,,,,,,,,,,,,,,,,,#~,,,,,,,,,,,,,,,,,#~,,^,,,,,,,,,,,,^,#..", +".........*@+++++++++++++++++##..........@@+++++++++++++##.......+..@+++++++++++++++++#@+++++++++++++++++#@+++++++++++++++++#@,,,,,,,,+++++++++#@,,,,,,,,,++++++++#@,,,,,,,,,,+++++++#@,,,,,,,,,,,,,,,,,#@,,,,,,,,,,,,,,,,,#@,,^,,,,,,,,,,,,^,#..", +"..........>@+++++++++++++++##............@+++++++++++++#........+..@++++++++@++++++++#@++++++++@++++++++#@,,,,,,,,@++++++++#@,,,,,,,,@++++++++#@,,,,,,,,@++++++++#@,,,,,,,,@++++++++#@,,,,,,,,@,,,,,,,,#@,,,,,,,,@,,,,,,,,#@,,,,,,,,@,,,,,,,,#..", +"...........-@@+++++++++++###.............@@@+++++++++###........+..@+++++++++++++++++#@+++++++,,++++++++#@,,,,,,,,,++++++++#@,,,,,,,,,++++++++#@,,,,,,,,,++++++++#@,,,,,,,,,++++++++#@,,,,,,,,,++++++++#@,,,,,,,,,,,,,,,,,#@,,,,,,,,,,,,,,,,,#..", +".............%@@@+++++####.................@@@+++++###..........+..~+++++++++++++++++#~++++++,,,++++++++#~,,,,,,,,,++++++++#~,,,,,,,,,++++++++#~,,,,,,,,,++++++++#~,,,,,,,,,++++++++#~,,,,,,,,,++++++++#~,,,,,,,,,+,,,,,,,#~,,,,,,,,,,,,,,,,,#..", +"................#######......................#######............+..!@+++++++++++++++##!@++++,,,,+++++++##!@,,,,,,,,+++++++##!@,,,,,,,,+++++++##!@,,,,,,,,+++++++##!@,,,,,,,,+++++++##!@,,,,,,,,+++++++##!@,,,,,,,,++,,,,,##!@,(,,,,,,,,,,,,,##..", +"................................................................+...@+++++++++++++++#..@+++,,,,,+++++++#..@,,,,,,,,+++++++#..@,,,,,,,,+++++++#..@,,,,,,,,+++++++#..@,,,,,,,,+++++++#..@,,,,,,,,+++++++#..@,,,,,,,,+++,,,,#..@,,,,,,,,,,,,,,,#...", +"....@@@@@@@@@@@@@@@@@..@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@....+...@@+++++++++++++##..@@+,,,,,,++++++##..@@,,,,,,,++++++##..@@,,,,,,,++++++##..@@,,,,,,,++++++##..@@,,,,,,,++++++##..@@,,,,,,,++++++##..@@,,,,,,,++++,,##..@@,,/,,,,,,,,/,##...", +"....@+++++++++++++++#..@+++++++++++++++++++++++++++++++++++#....+....@+++++++++++++#....@,,,,,,,++++++#....@,,,,,,,++++++#....@,,,,,,,++++++#....@,,,,,,,++++++#....@,,,,,,,++++++#....@,,,,,,,++++++#....@,,,,,,,+++++,#....@,,,,,^^^^^,,,#....", +"....@+++$$$+++$$$+++#..@+++++++++++++++++++++++++++++++++++#....+....@@@+++++++++###....@@@,,,,,++++###....@@@,,,,,++++###....@@@,,,,,++++###....@@@,,,,,++++###....@@@,,,,,++++###....@@@,,,,,++++###....@@@,,,,,++++###....@@@,,,,,,,,,###....", +"....@++$+++$+$+++$++#..@+++++++++++++++++++++++++++++++++++#....+......@@@+++++###........@@@,,,++###........@@@,,,++###........@@@,,,++###........@@@,,,++###........@@@,,,++###........@@@,,,++###........@@@,,,++###........@@@,,,,,###......", +"....@++$+++$+$+++$++#..@+++++++++++++++++++++++++++++++++++#....+........#######............#######............#######............#######............#######............#######............#######............#######............#######........", +"....@+++$$$+++$$$+++#..@+++++++++++++++++++++++++++++++++++#....+...............................................................................................................................................................................", +"....@++$+++$+$+++$++#..@+++++++++++++++++++++++++++++++++++#....+...............................................................................................................................................................................", +"....@++$+++$+$+++$++#..@+++++++++++++++++++++++++++++++++++#....+...............................................................................................................................................................................", +"....@+++$$$+++$$$+++#..@+++++++++++++++++++++++++++++++++++#....+...............................................................................................................................................................................", +"....@+++++++++++++++#..@+++++++++++++++++++++++++++++++++++#....+...............................................................................................................................................................................", +"....#################..@####################################....+...............................................................................................................................................................................", +"................................................................+...............................................................................................................................................................................", +"................................................................+...............................................................................................................................................................................", +"................................................................+...............................................................................................................................................................................", +"................................................................+...............................................................................................................................................................................", +"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.................................................................................................................................................................", +"++,,,+++$$$_+_,,,_+_,,,_+_$$$_+_,,,_+_,,,_+_,,,_+_,,,_+_,,,_+++++++++++++++++++.................................................................................................................................................................", +"+,+++,+$+++,+$+++,+$+++,+,+++,+,+++$+,+++$+$+++,+,+++,+,+++,++++++++++++,++++++..+::+..+<<+..+[[+...............................................................................................................................................", +"+,+++,+$+++,+$+++,+$+++,+,+++,+,+++$+,+++$+$+++,+,+++,+,+++,++,++++,++++,++++++..:}::..<}<<..[[[[...............................................................................................................................................", +"+_$$$_++$$$_+_,,,_++,,,_+_,,,_+_,,,_+_,,,_++$$$_+$,,,$+_,,,_++_++++_+++,+++++++..::::..<<<<..[[[[...+,$|........................................................................................................................................", +"+,+++,+$+++,+,+++$+$+++,+$+++,+$+++,+,+++,+$+++,+,+++,+$+++,+++++++++++,+++++++..+::+..+<<+..+[[+...............................................................................................................................................", +"+,+++,+$+++,+,+++$+$+++,+$+++,+$+++,+,+++,+$+++,+,+++,+$+++,++,++++,++,++++++++.................................................................................................................................................................", +"++,,,+++$$$,+_,,,_+_,,,_++$$$_+_,,,_+_,,,_++$$$_+_,,,_+_,,,_++_++++_++,++++++++.................................................................................................................................................................", +"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.................................................................................................................................................................", +"................................................................................................................................................................................................................................................", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++................................................................................", +"+$,,,$+_,,,++_,,,_+_,,,++_,,,_+_,,,_+_,,,_+_$$$_++$$$_++$$$_+_$$$_+_$$$++,$$$,+_,,,++_,,,_+_,,,_+_,,,_+_,,,_+_,,,_+_,,,_+_$$$_+_$$$_+_$$$_+_$$$_+_$$$_+_,,,_++++................................................................................", +"+,+++,+,+++,+,+++$+,+++,+,+++$+,+++$+,+++$+,+++,+$+++,+$+++,+,+++,+,+++$+,,+,,+,+++,+,+++,+,+++,+,+++,+,+++,+,+++$+$+,+$+,+++,+,+++,+,+++,+,+++,+,+++,+$+++,++++................................................................................", +"+,+++,+,+++,+,+++$+,+++,+,+++$+,+++$+,+++$+,+++,+$+++,+$+++,+,++,$+,+++$+,+,+,+,+++,+,+++,+,+++,+,+++,+,+++,+,+++$+$+,+$+,+++,+,+++,+,+++,+$,+,$+,+++,+$++,$++++................................................................................", +"+_,,,_+_,,,++_$$$++_$$$_+_,,,++_,,,++_$,,_+_,,,_++$$$_++$$$_+_,,$++_$$$++_$$$_+_$$$_+_$$$_+_,,,_+_,$$_+_,,,++_,,,_++$_$++_$$$_+_$$$_+_$$$_++$,$++_,,,_++$,$+++++................................................................................", +"+,+++,+,+++,+,+++$+,+++,+,+++$+,+++$+,+++,+,+++,+$+++,+$+++,+,++,$+,+++$+,+++,+,+++,+,+++,+,+++$+,+,+,+,+++,+$+++,+$+,+$+,+++,+,+++,+,+,+,+$,+,$+$+++,+$,++$++++................................................................................", +"+,+++,+,+++,+,+++$+,+++,+,+++$+,+++$+,+++,+,+++,+$+++,+$+++,+,+++,+,+++$+,+++,+,+++,+,+++,+,+++$+,++,,+,+++,+$+++,+$+,+$+,+++,+,+++,+,,+,,+,+++,+$+++,+,+++$++++................................................................................", +"+_$$$_+_,,,++_,,,_+,,,,++_,,,_+,$$$++_,,,_+_$$$_++$$$,+_,,,_+_$$$_+_,,,$+_$$$_+,$$$,+_,,,_+_$$$++_,,,_+_$$$_+_,,,_++$_$++$,,,,++,,,++,$$$,+_$$$,__,,,_+_,,,_++++................................................................................", +"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++................................................................................", +"................................................................................................................................................................................................................................................", +"....@++++++++++++++++++++++++++++++++++++++++++++++++++++++#....+...............................................................................................................................................................................", +".....++$$$+++$$$+++$$$+++$$$+++$$$+++++++$$$+++$$$+++$$$+++.....................................................................................................................................................................................", +".....+$+++$+$+++$+$+++$+$+++$+$+++$+++++$+++$+$+++$+$+++$++.....................................................................................................................................................................................", +".....+$+++$+$+++$+$+++$+$+++$+$+++$++$++$+++$+$+++$+$+++$++.....................................................................................................................................................................................", +".....++$$$+++$$$+++$$$+++$$$+++$$$+++$+++$$$+++$$$+++$$$+++.....................................................................................................................................................................................", +".....+$+++$+$+++$+$+++$+$+++$+$+++$+++++$+++$+$+++$+$+++$++.....................................................................................................................................................................................", +".....+$+++$+$+++$+$+++$+$+++$+$+++$++$++$+++$+$+++$+$+++$++.....................................................................................................................................................................................", +".....++$$$+++$$$+++$$$+++$$$+++$$$+++$+++$$$+++$$$+++$$$+++.....................................................................................................................................................................................", +".....++++++++++++++++++++++++++++++++++++++++++++++++++++++.....................................................................................................................................................................................", +".....++++++++++++++++++++++++++++++++++++++++++++++++++++++.....................................................................................................................................................................................", +"................................................................................................................................................................................................................................................", +"................................................................................................................................................................................................................................................", +"$_,.............................................................................................................................................................................................................................................", +"123.............................................................................................................................................................................................................................................", +"................................................................................................................................................................................................................................................", +"................................................................................................................................................................................................................................................"}; diff --git a/dockapps/wmitime/wmitime.1 b/dockapps/wmitime/wmitime.1 new file mode 100644 index 0000000..50e71d3 --- /dev/null +++ b/dockapps/wmitime/wmitime.1 @@ -0,0 +1,34 @@ +.TH wmitime 1 "2014-12-19" "wmitime" "User Commands" +.SH "NAME" +wmitime \- Window Maker dock app displaying date, clock and internet time +.SH "SYNOPSIS" +.B wmitime +[\fI\,options\/\fR] +.SH "DESCRIPTION" +WMitime is yet another clock dock app, which shows standard time, +date, as well as the new internet time . +.SH "OPTIONS" +.TP +\fB\-12\fR +12\-hour mode +.TP +\fB\-display\fR +Specify X display +.TP +\fB\-geometry\fR +XPOS+YPOS +Initial window position. +.TP +\fB\-l\fR +Specify locale. +.TP +\fB\-h\fR +Print available options. +.TP +\fB\-v\fR +Print the version number. +.SH "SEE ALSO" +.BR wmtime (1) +.SH "AUTHORS" +This manual page was written by Lenart Janos , for +the Debian GNU system (but may be used by others). Updated by Jari +Aalto . diff --git a/dockapps/wmitime/wmitime.c b/dockapps/wmitime/wmitime.c new file mode 100644 index 0000000..d2a90a4 --- /dev/null +++ b/dockapps/wmitime/wmitime.c @@ -0,0 +1,599 @@ +/* + + wmitime.c -- internet time clock + + by Dave Clark (clarkd@skynet.ca) (http://www.neotokyo.org/illusion) + + This software is licensed through the GNU General Public Lisence. + +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "wmgeneral/wmgeneral.h" + +#include "wmitime-master.xpm" +char wmitime_mask_bits[64*64]; +int wmitime_mask_width = 64; +int wmitime_mask_height = 64; + +#define WMITIME_VERSION "0.4" + +#define CHAR_WIDTH 5 +#define CHAR_HEIGHT 7 + +#define BCHAR_WIDTH 6 +#define BCHAR_HEIGHT 9 + +#define MY_PI (3.14159) + +extern char **environ; + +char *ProgName; + +char locale[256]; + +time_t curtime; +time_t prevtime; + +int prevhourx=19; +int prevhoury=33; +int prevminx=19; +int prevminy=33; + +static struct tm *clk; + +int TwelveHour=0; + +void usage(void); +void printversion(void); +void BlitString(char *name, int x, int y); +void BlitNum(int num, int x, int y); +void wmitime_routine(int, char **); +int PortWatch( short port ); +void DrawInetTime(void); +void DrawStdTime(void); +void DrawDate(void); +void DrawInetWheel(void); +void DrawStdWheel(void); +void DrawLine(int x1, int y1, int x2, int y2, int sourcex, int sourcey); + +int main(int argc, char *argv[]) { + + int i; + + locale[0] = 0; + + /* Parse Command Line */ + + ProgName = argv[0]; + if (strlen(ProgName) >= 5) + ProgName += (strlen(ProgName) - 5); + + for (i=1; i (i+1)) + { + strcpy(locale, argv[i+1]); + i++; + } + break; + default: + usage(); + exit(0); + break; + } + } + } + + if (setlocale(LC_ALL, locale) == NULL) + fprintf(stderr, + "warning: locale '%s' not recognized; defaulting to '%s'.", + locale, setlocale(LC_ALL, NULL)); + + wmitime_routine(argc, argv); + + return 0; +} + +/*******************************************************************************\ +|* wmitime_routine *| +\*******************************************************************************/ + +void wmitime_routine(int argc, char **argv) +{ + int i; + XEvent Event; + int but_stat = -1; + + + createXBMfromXPM(wmitime_mask_bits, wmitime_master_xpm, wmitime_mask_width, wmitime_mask_height); + + openXwindow(argc, argv, wmitime_master_xpm, wmitime_mask_bits, wmitime_mask_width, wmitime_mask_height); + + AddMouseRegion(0, 5, 6, 58, 16); + + RedrawWindow(); + + prevtime = time(0) - 1; + + while (1) + { + curtime = time(0); + + if ( curtime > prevtime) + { + prevtime = curtime; + + clk = localtime(&curtime); + + /* Update display */ + + DrawInetTime(); + + DrawStdTime(); + + DrawInetWheel(); + + DrawDate(); + + DrawStdWheel(); + + RedrawWindow(); + + } + + /* X Events */ + while (XPending(display)) + { + XNextEvent(display, &Event); + switch (Event.type) + { + case Expose: + RedrawWindow(); + break; + case DestroyNotify: + XCloseDisplay(display); + exit(0); + break; + case ButtonPress: + i = CheckMouseRegion(Event.xbutton.x, Event.xbutton.y); + + but_stat = i; + break; + case ButtonRelease: + i = CheckMouseRegion(Event.xbutton.x, Event.xbutton.y); + + if (but_stat == i && but_stat >= 0) + { + switch (but_stat) + { + case 0 : + TwelveHour = (!TwelveHour); + prevtime--; + break; + case 1 : + break; + case 2: + break; + case 3: + break; + case 4: + break; + + } + } + but_stat = -1; + /* RedrawWindow(); */ + break; + } + } + + usleep(100000); + } +} + + +void DrawInetTime(void) +{ + int iTime; + + /* Compute Inet Time */ + iTime=(clk->tm_hour*3600+clk->tm_min*60+clk->tm_sec); + iTime=iTime+((timezone-1)+3600); + if (clk->tm_isdst) + iTime-=3600; + iTime=(iTime*1000)/86400; + + if (iTime >= 1000) + iTime-=1000; + else + if (iTime < 0) + iTime+=1000; + + /* Blit it */ + + BlitNum(iTime, 38, 18); + +} + +void DrawStdTime(void) +{ + int xoff=0, yoff=0; + int srcx=0, srcy=0; + int i,j; + char blitstr[32]; + int len; + + i = clk->tm_hour; + + if (TwelveHour) + { + if (i > 12) + i-=12; + + if (i==0) + i=12; + + sprintf(blitstr, "%2i:%02i:%02i", i, clk->tm_min, clk->tm_sec); + } + else + { + sprintf(blitstr, "%02i:%02i:%02i", i, clk->tm_min, clk->tm_sec); + } + + + + len = strlen(blitstr); + + /* Set starting co-ordinates... */ + xoff = 6; + yoff = 6; + + /* Blit it. */ + for( i=0; itm_wday)); + iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + BlitStr[2] = 0; + BlitString( BlitStr, 6, 50); + + inbuf = OrigBlitStr; + outbuf = BlitStr; + inbytesleft = sizeof OrigBlitStr; + outbytesleft = sizeof BlitStr; + + sprintf(OrigBlitStr, "%s", nl_langinfo(ABMON_1 + clk->tm_mon)); + iconv(cd, &inbuf, &inbytesleft, &outbuf, &outbytesleft); + BlitStr[3] = 0; + BlitString( BlitStr, 40, 50); + + iconv_close(cd); + + sprintf(BlitStr, "%02i", clk->tm_mday); + BlitString( BlitStr, 25, 50); +} + +void DrawInetWheel(void) +{ + int WheelPos=0; + int i; + int xoff=0, yoff=0; + int iTime; + + /* Calculate Wheel Position... */ + iTime=(clk->tm_hour*3600+clk->tm_min*60+clk->tm_sec); + iTime=iTime+((timezone-1)+3600); + if (clk->tm_isdst) + iTime-=3600; + iTime=(iTime*1000)/8640; + + if (iTime >= 10000) + iTime-=10000; + else + if (iTime < 0) + iTime+=10000; + + iTime %= 10; + + WheelPos = floor( (iTime *8) / 10); + + /* Draw the Wheel... */ + i=WheelPos; + yoff=35; + xoff=67; + + xoff+=19; + + while(i) + { + xoff +=19; + i--; + } + + copyXPMArea(xoff, yoff, 19, 19, 39, 29); + +} + + +void DrawStdWheel(void) +{ + /* 19x33 = center + * radius of 14 */ + + int sx, sy; + int cx, cy; + int dx, dy; + int hr; + double psi; + + cx=19; + cy=33; + + sx = 2; + sy = 97; + + /* Hour Hand... */ + + DrawLine(cx, cy, prevhourx, prevhoury, 66, 9); /* erase old line */ + + hr = (clk->tm_hour % 12); + + psi = hr * (M_PI / 6.0); + psi += clk->tm_min * (M_PI / 360); + + dx = floor(sin(psi) * 22 * 0.5 + 0.5); + dy = floor(-cos(psi) * 16 * 0.5 + 0.5); + + dx += cx; + dy += cy; + + prevhourx=dx; + prevhoury=dy; + + DrawLine(cx, cy, dx, dy, sx, sy); + + /* Minute Hand... */ + + DrawLine(cx, cy, prevminx, prevminy, 66, 9); /* erase old line */ + + cx=19; + cy=33; + sx = 2; + sy = 96; + + psi = clk->tm_min * (M_PI / 30.0); + psi += clk->tm_sec * (M_PI / 1800); + + dx = floor(sin(psi) * 22 * 0.7 + 0.5); + dy = floor(-cos(psi) * 16 * 0.7 + 0.5); + + dx += cx; + dy += cy; + + prevminx = dx; + prevminy = dy; + + + DrawLine(cx, cy, dx, dy, sx, sy); +} + +void DrawLine(int x1, int y1, int x2, int y2, int sourcex, int sourcey) +{ + int x, y; + int deltax, deltay; + int xs, ys; + + float xd=0, yd=0; + float xi, yi; + + x = x1; + y = y1; + + + if ( (x2-x1) < 0) + xs = -1; + else + xs = 1; + + if ( (y2-y1) < 0) + ys = -1; + else + ys = 1; + + deltax = abs( x2 - x1 ); + deltay = abs( y2 - y1 ); + + if (deltay !=0) + xi = (float) ((float)deltax / (float) deltay); + else + xi=0; + + if (deltax !=0) + yi = (float) ((float)deltay / (float) deltax); + else + yi=0; + + if ( deltax > deltay ) + { + for (x=x1; x!= x2; x+= xs) + { + yd += yi; + y += (int) (yd * ys); + + copyXPMArea(sourcex, sourcey, 1, 1, x, y); + + yd -= (int) yd; + } + } + else + { + for (y=y1; y!= y2; y+= ys) + { + xd += xi; + x += (int) (xd * xs); + + copyXPMArea(sourcex, sourcey, 1, 1, x, y); + + xd -= (int) xd; + } + } +} + + + +/* Blits a string at given co-ordinates */ +void BlitString(char *name, int x, int y) +{ + int i; + int c; + int k; + + k = x; + for (i=0; name[i]; i++) + { + + c = toupper(name[i]); + if (c >= 'A' && c <= 'Z') + { /* its a letter */ + c -= 'A'; + copyXPMArea(c * 6, 74, 6, 8, k, y); + k += 6; + } + else + { /* its a number or symbol */ + c -= '0'; + copyXPMArea(c * 6, 64, 6, 8, k, y); + k += 6; + } + } + +} + +void BlitNum(int num, int x, int y) +{ + char buf[1024]; + int newx=x; + + sprintf(buf, "%03i", num); + + BlitString(buf, newx, y); +} + +/*******************************************************************************\ +|* usage *| +\*******************************************************************************/ + +void usage(void) +{ + fprintf(stderr, "\nWMiTIME - Window Maker Developers Team \n"); + fprintf(stderr, " original author: Dave Clark \n\n"); + fprintf(stderr, "usage:\n"); + fprintf(stderr, " -12 12-hour mode\n"); + fprintf(stderr, " -display \n"); + fprintf(stderr, " -geometry +XPOS+YPOS initial window position\n"); + fprintf(stderr, " -l specify locale\n"); + fprintf(stderr, " -h this help screen\n"); + fprintf(stderr, " -v print the version number\n"); + fprintf(stderr, "\n"); +} + +/*******************************************************************************\ +|* printversion *| +\*******************************************************************************/ + +void printversion(void) +{ + fprintf(stderr, "wmitime v%s\n", WMITIME_VERSION); +} diff --git a/dockapps/wmitime/wmitime.desktop.in b/dockapps/wmitime/wmitime.desktop.in new file mode 100644 index 0000000..da694cf --- /dev/null +++ b/dockapps/wmitime/wmitime.desktop.in @@ -0,0 +1,10 @@ +[Desktop Entry] +Type=Application +Name=Wmitime +GenericName="Clock dockapp" +Comment="Display time and internet time" +Icon= +Exec=@BINDIR@/wmitime +Terminal=false +Categories=Utility;Clock; +Keywords=clock;dockapp;window maker; diff --git a/dockapps/wmmp/AUTHORS b/dockapps/wmmp/AUTHORS new file mode 100644 index 0000000..15d9132 --- /dev/null +++ b/dockapps/wmmp/AUTHORS @@ -0,0 +1,19 @@ +Current maintainer Nicolas Herry + +Hacked for MPD by Warren Dukes +Scroll Wheel patch by Ilia Mirkin + +Following are credits from WMxmms: + +Main Hacker: +Anthony Peacock + + +Based largely on work on WMMemMon, WMCPULoad and WMMemLoad and wmcpuload and wmusic done by: +Hades +Thomas Nemeth +Seiichi SATO +Mark Staggs +And also on wmapm by : +Chris D. Faulhaber +Michael G. Henderson diff --git a/dockapps/wmmp/CMakeLists.txt b/dockapps/wmmp/CMakeLists.txt new file mode 100644 index 0000000..72c0e75 --- /dev/null +++ b/dockapps/wmmp/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 2.8) +project(WMmp) + +set(WMmp_SRCS src/dockapp.c + src/libmpdclient.c + src/mouse_regions.c + src/mpd_func.c + src/wmmp.c) + +set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) + +add_executable(WMmp ${WMmp_SRCS}) + +find_package(X11 REQUIRED) +include_directories(${X11_INCLUDE_DIR}) +target_link_libraries(WMmp ${X11_LIBRARIES} ${X11_Xpm_LIB}) + +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/doc/WMmp.1 DESTINATION ${CMAKE_INSTALL_PREFIX}/man/man1) +INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/bin/WMmp DESTINATION ${CMAKE_INSTALL_PREFIX}/bin) diff --git a/dockapps/wmmp/ChangeLog b/dockapps/wmmp/ChangeLog new file mode 100644 index 0000000..5be99ce --- /dev/null +++ b/dockapps/wmmp/ChangeLog @@ -0,0 +1,49 @@ +vers 0.12.6 +1) Fixed the path to manpage in CMakeLists.txt + +vers 0.12.5 +1) Remove -Oz from CFLAGS in CMakeLists.txt as it breaks the build with gcc + +vers 0.12.4 +1) Version bump for build systems + +vers 0.12.3 +1) Fixed the bin dir from . to ./bin + +vers 0.12.2 +1) Migrated to cmake +2) Cleaned up old useless files + +ver 0.12.1 (2/22/2017) +1) Fixed version number and other mistakes + +ver 0.12.0 (2/19/2017) +1) Fixed unused variables warnings +2) Fixed default port (2100->6600) +3) Fixed autotools warnings (deprecated calls) +4) Updated version and contact information + +ver 0.11.0 (2/7/2017) + +1) Fixed mouse wheel support +2) Changed network structures +3) Finally prepared a proper release! + +ver 0.10.0 (3/4/2004) +1) Add password support + +ver 0.9.2 (10/6/2003) +1) Updated libmpdclient +2) Fix some solaris compilation issues + +ver 0.9.1 (9/30/2003) +1) Fix compilation error with older gcc's + +ver 0.9.0 (9/29/2003) +1) Mouse wheel patch from Ilia Mirkin +2) Random buttons toggles random mode +3) Hook up search buttons +4) Play on pause, unpauses + +ver 0.8.0 (7/11/2003) +1) initial release diff --git a/dockapps/wmmp/INSTALL b/dockapps/wmmp/INSTALL new file mode 100644 index 0000000..7996efb --- /dev/null +++ b/dockapps/wmmp/INSTALL @@ -0,0 +1,34 @@ + INSTALL - WMmp + Window Maker Dockapp for MPD + http://musicpd.sf.net + +requirements: +------------- +MPD >= 0.8.1 + +compile: +-------- +1) cmake -G "Unix Makefiles" +2) make + +install: +-------- +make install + +run: +---- + +1) Set environment variables MPD_HOST and MPD_PORT (this is probably good to +put in the rc file for your shell). + +example: +$ export MPD_HOST=localhost +$ export MPD_PORT=6600 + +If you use a password to access MPD, then do: +$ export MPD_HOST=password@localhost + +2) run WMmp + +example: +$ WMmp diff --git a/dockapps/wmmp/LICENSE b/dockapps/wmmp/LICENSE new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/dockapps/wmmp/LICENSE @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/dockapps/wmmp/README.md b/dockapps/wmmp/README.md new file mode 100644 index 0000000..59f623d --- /dev/null +++ b/dockapps/wmmp/README.md @@ -0,0 +1,12 @@ +wmmp +==== + +This nice little dockapp provides a simple interface to mpd. + +Initially, this repository was just here to hold the code I had found somewhere on the internet. Since the code would not compile anymore after quite a few years without being maintained, I decided to make a few changes here and there just to be able to use it. + +After being lazy about it for too long, I recently (Jan/Feb 2017) decided to dust it off a little bit and build a proper port for FreeBSD. This involves cleaning up useless files, updating copyrights, the man page, comments, migrating to something simpler to manage than the autotools and removing the embryo of libmpdclient code included with the dockapp, to replace it with a proper external dependency to a modern version of said library. + +The code is tested primarily on FreeBSD, and, as time permits, on the other BSDs and Linux as well. + + diff --git a/dockapps/wmmp/THANKS b/dockapps/wmmp/THANKS new file mode 100644 index 0000000..5ebbb29 --- /dev/null +++ b/dockapps/wmmp/THANKS @@ -0,0 +1,12 @@ +WMmp author(s) would like to thank Anthony Peacock +for writing such nice code that is easy to hack and is really cool looking :-) + +Thanks from WMxmms which we are also thankful for: +Thomas Nemeth for creating wmapmload on which this is based +For creating WMMemMon and WMCPULoad for which this is based: +Seiichi SATO +For creating WMMemLoad for which this is based: +Mark Staggs +For wmapm for which this is based: +Chris D. Faulhaber +Michael G. Henderson diff --git a/dockapps/wmmp/doc/WMmp.1 b/dockapps/wmmp/doc/WMmp.1 new file mode 100644 index 0000000..5bb4e5f --- /dev/null +++ b/dockapps/wmmp/doc/WMmp.1 @@ -0,0 +1,79 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH WMXMMS 1 "March 29, 2003" +.\" Please adjust this date whenever revising the man page. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for man page-specific macros, see man(7) +.SH NAME +WMmp \- A dockapp to interface with mpd +.SH SYNOPSIS +.B WMmp [options] +.SH DESCRIPTION +This manual page documents briefly the +.B WMmp +command. +.PP +.\" TeX users may be more comfortable with the \fB\fP and +.\" \fI\fP escape sequences to invode bold face and italics, +.\" respectively. +\fBWMmp\fP is a dockapp to interface and control mpd. It is a dockapp +that is supported by X window managers such as Window Maker, AfterStep, BlackBox, and +Enlightenment. + +The song title and time is displayed in the top half. The controls are +in the bottom half and reflect settings on mpd. +It has an LCD look-alike user interface. +The back-light may be turned on/off by clicking the mouse button 3 (right) +over the application. + +You must set the MPD_HOST and MPD_PORT environment variables to run \fBWMmp\fP. (If you use a password to contact mpd, set MPD_HOST to "password@host".) +.SH OPTIONS +This program follows the usual GNU command line syntax, with long options +starting with two dashes (`\-'). A summary of options is included below. +.TP +.B \-d, \-\-display +Attempt to open a window on the named X display. In the absence of this option, +the display specified by the +.B DISPLAY +environment variable is used. +.TP +.B \-bl, \-\-backlight +turn on back-light +.TP +.B \-lc, \-\-light\-color +back-light color (rgb:6E/C6/3B is default) +.TP +.B \-i, \-\-interval +number of secs between updates (1 is default) +.TP +.B \-h, \-\-help +show help text and exit +.TP +.B \-v, \-\-version +show program version and exit +.TP +.B \-w, \-\-windowed +run the application in windowed mode +.TP +.B \-bw, \-\-broken\-wm +activate broken window manager fix +.TP + +.SH AUTHOR +WMmp was assembled by Anthony Peacock It is based on code/design by +Thomas Nemeth . It is largely based on WMMemMon and WMCPULoad by Seiichi +SATO , WMMemLoad by Mark Staggs and wmapm by Chris D. +Faulhaber Michael G. Henderson . In addition wmusic +by Hadess and maintained by John was used as design +inspiration. diff --git a/dockapps/wmmp/src/backlight_off.xpm b/dockapps/wmmp/src/backlight_off.xpm new file mode 100644 index 0000000..e743237 --- /dev/null +++ b/dockapps/wmmp/src/backlight_off.xpm @@ -0,0 +1,119 @@ +/* XPM */ +static char * backlight_off_xpm[] = { +"58 58 58 1", +" c #141414", +". c #020202", +"+ c #202020", +"@ c #C7C7C7", +"# c #9B1414", +"$ c #004841", +"% c #20B2AE", +"& c #003E3A", +"* c #31B7B2", +"= c #21AFAA", +"- c #25ABA5", +"; c #27A7A2", +"> c #2AA39F", +", c #2DA09C", +"' c #2F9D99", +") c #329996", +"! c #359593", +"~ c #379290", +"{ c #3A8E8D", +"] c #3D8B8A", +"^ c #3F8787", +"/ c #428383", +"( c #458080", +"_ c #487D7D", +": c #4A797A", +"< c #4D7577", +"[ c #4F7274", +"} c #526E71", +"| c #556B6E", +"1 c #57676B", +"2 c #5A6468", +"3 c #5D6065", +"4 c #5F5C62", +"5 c #62595E", +"6 c #65565B", +"7 c #685258", +"8 c #6A4E55", +"9 c #6D4B52", +"0 c #70474F", +"a c #72444C", +"b c #754049", +"c c #773C46", +"d c #7A3943", +"e c #7D3640", +"f c #7F323D", +"g c #822E39", +"h c #852B36", +"i c #882733", +"j c #8A2430", +"k c #8D202D", +"l c #901C2A", +"m c #921927", +"n c #951624", +"o c #981221", +"p c #9A0E1E", +"q c #9E0A1A", +"r c #9E0716", +"s c #20B1AC", +" ...................................................... ", +" .++++++++++++++++++++++++++++++++++++++++++++++++++++++. ", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".+++++++++++++++++++++++++++++++++++++++++++++###+###++++@", +".++++++++++++++++++++++++++++++++++++++++++++#+++#+++#+++@", +".++++++++++++++++++++++++++++++++++++++++++++#+++#+++#+++@", +".+++++++++++++++++++++++++++++++++++++++++++++###+###++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++##++##++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++##++##++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".+++++$$$+++$$$+++++$$$+++$$$++++++++++++++++++++++++++++@", +".++++$+++$+$+++$+++$+++$+$+++$+++++++++++++++++++++++++++@", +".++++$+++$+$+++$+++$+++$+$+++$++++++##+++++++$$+++$$+++++@", +".++++$+++$+$+++$+%+$+++$+$+++$++++++##++++++$++$+$++$++++@", +".+++++$$$+++$$$+++++$$$+++$$$+++++++++++++++$++$+$++$++++@", +".++++$+++$+$+++$+%+$+++$+$+++$+++++++++++++++$$+++$$+++++@", +".++++$+++$+$+++$+++$+++$+$+++$++++##++##++++$++$+$++$++++@", +".++++$+++$+$+++$+++$+++$+$+++$++++##++##++++$++$+$++$++++@", +".+++++$$$+++$$$+++++$$$+++$$$++++++++++++++++$$+++$$+++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&++@", +".+++& & & & &++@", +".+++& & & & & & & & & & & & & & &++@", +".+++& & && && & && && & && && & && && & &++@", +".+++& &&&&&&& & &&&&&& & &&&&&& & &&&&&&& &++@", +".+++& & && && & && && & && && & && && & &++@", +".+++& & & & & & & & & & & & & & &++@", +".+++& & & & &++@", +".+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&++@", +".++++*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqr+++@", +".++++s=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqr+++@", +".++++s=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqr+++@", +".++++*=-;>,')!~{]^/(_:<[}|1234567890abcdefghijklmnopqr+++@", +".+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&++@", +".+++& & & & &++@", +".+++& & && & && && & &&&&&& &++@", +".+++& && & &&&& & && && & &&&&&& &++@", +".+++& &&&& & &&&&&& & && && & &&&&&& &++@", +".+++& &&&&&& & &&&&&& & && && & &&&&&& &++@", +".+++& & &&&& & && && & &&&&&& &++@", +".+++& &&&&&& & && & && && & &&&&&& &++@", +".+++& & & & &++@", +".+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ", +" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ "}; diff --git a/dockapps/wmmp/src/backlight_on.xpm b/dockapps/wmmp/src/backlight_on.xpm new file mode 100644 index 0000000..0c8977f --- /dev/null +++ b/dockapps/wmmp/src/backlight_on.xpm @@ -0,0 +1,70 @@ +/* XPM */ +static char * backlight_on_xpm[] = { +"58 58 9 1", +" c None", +". c #020202", +"+ c #6EC63B s Back0", +"@ c #DEDEDE", +"# c #000000", +"$ c #FFFFFF", +"% c #6CB237 s Back1", +"& c #9B1414", +"* c #3E463E", +" ...................................................... ", +" .++++++++++++++++++++++++++++++++++++++++++++++++++++++. ", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".+++++++++++++++++++++++++++++++++++++++++++###########++@", +".+++++++++++++++++++++++++++++++++++++++++++##$$$#$$$##++@", +".+++++++++++++++++++++++++++++++++++++++++++#$###$###$#++@", +".+++++++++++++++++++++++++++++++++++++++++++#$###$###$#++@", +".+++++++++++++++++++++++++++++++++++++++++++##$$$#$$$##++@", +".+++++++++++++++++++++++++++++++++++++++++++###########++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".+++++++++++++++++++++++++++++++++++++++++++###########++@", +".+++++++++++++++++++++++++++++++++++++++++++#$$##$$####++@", +".+++++++++++++++++++++++++++++++++++++++++++###########++@", +".+++++++++++++++++++++++++++++++++++++++++++###$$##$$##++@", +".+++++++++++++++++++++++++++++++++++++++++++###########++@", +".+++++++++++++++++++++++++++++++++++++++++++###########++@", +".+++++%%%+++%%%+++++%%%+++%%%++++++++++++++++++++++++++++@", +".++++%+++%+%+++%+++%+++%+%+++%+++++++++++++++++++++++++++@", +".++++%+++%+%+++%+++%+++%+%+++%++++++&&+++++++%%+++%%+++++@", +".++++%+++%+%+++%+#+%+++%+%+++%++++++&&++++++%++%+%++%++++@", +".+++++%%%+++%%%+++++%%%+++%%%+++++++++++++++%++%+%++%++++@", +".++++%+++%+%+++%+#+%+++%+%+++%+++++++++++++++%%+++%%+++++@", +".++++%+++%+%+++%+++%+++%+%+++%++++&&++&&++++%++%+%++%++++@", +".++++%+++%+%+++%+++%+++%+%+++%++++&&++&&++++%++%+%++%++++@", +".+++++%%%+++%%%+++++%%%+++%%%++++++++++++++++%%+++%%+++++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".++++*************************************************+++@", +".++++*************************************************%++@", +".+++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +".+++###################################################++@", +".+++#++++++++++++#+++++++++++#+++++++++++#++++++++++++#++@", +".+++#++#++#++#+++#++++#++#+++#+++#++#++++#+++#++#++#++#++@", +".+++#++#+##+##+++#+++##+##+++#+++##+##+++#+++##+##+#++#++@", +".+++#++#######+++#++######+++#+++######++#+++#######++#++@", +".+++#++#+##+##+++#+++##+##+++#+++##+##+++#+++##+##+#++#++@", +".+++#++#++#++#+++#++++#++#+++#+++#++#++++#+++#++#++#++#++@", +".+++#++++++++++++#+++++++++++#+++++++++++#++++++++++++#++@", +".+++#############%###########%###########%#############++@", +".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@", +".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@", +".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@", +".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@", +".+++#########%####################%#########%##########++@", +".+++#++++++++#++++++++++++++++++++#+++++++++#+++++++++#++@", +".+++#++++++++#++++++++++++++++++++#+++++++++#+++++++++#++@", +".+++#+++##+++#++++++++##++++++++++#++##+##++#++#####++#++@", +".+++#++####++#++++++++####++++++++#++##+##++#++#####++#++@", +".+++#+######+#++++++++######++++++#++##+##++#++#####++#++@", +".+++#++++++++#++++++++####++++++++#++##+##++#++#####++#++@", +".+++#+######+#++++++++##++++++++++#+++++++++#+++++++++#++@", +".+++#++++++++#++++++++++++++++++++#+++++++++#+++++++++#++@", +".+++###################################################++@", +".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@", +" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ", +" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ "}; diff --git a/dockapps/wmmp/src/dockapp.c b/dockapps/wmmp/src/dockapp.c new file mode 100644 index 0000000..90d1675 --- /dev/null +++ b/dockapps/wmmp/src/dockapp.c @@ -0,0 +1,396 @@ +/* + * Copyright (c) 1999 Alfredo K. Kojima + * Copyright (c) 2001, 2002 Seiichi SATO + * Copyright (c) 2017 Nicolas Herry + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + * This code is based on libdockapp-0.4.0 + * modified by Seiichi SATO + */ + +#include "dockapp.h" + +#define WINDOWED_SIZE_W 64 +#define WINDOWED_SIZE_H 64 + +/* global */ +Display *display = NULL; +Bool dockapp_iswindowed = False; +Bool dockapp_isbrokenwm = False; + +/* private */ +static Window window = None; +static Window icon_window = None; +static GC gc = NULL; +static int depth = 0; +static Atom delete_win; +static int width, height; +static int offset_w, offset_h; + +void +dockapp_open_window(char *display_specified, char *appname, + unsigned w, unsigned h, int argc, char **argv) +{ + XClassHint *classhint; + XWMHints *wmhints; + Status stat; + XTextProperty title; + XSizeHints sizehints; + Window root; + int ww, wh; + + /* Open Connection to X Server */ + display = XOpenDisplay(display_specified); + if (!display) { + fprintf(stderr, "%s: could not open display %s!\n", argv[0], + XDisplayName(display_specified)); + exit(1); + } + root = DefaultRootWindow(display); + + width = w; + height = h; + + if (dockapp_iswindowed) { + offset_w = (WINDOWED_SIZE_W - w) / 2; + offset_h = (WINDOWED_SIZE_H - h) / 2; + ww = WINDOWED_SIZE_W; + wh = WINDOWED_SIZE_H; + } else { + offset_w = offset_h = 0; + ww = w; + wh = h; + } + + /* Create Windows */ + icon_window = XCreateSimpleWindow(display, root, 0, 0, ww, wh, 0, 0, 0); + if (dockapp_isbrokenwm) { + window = XCreateSimpleWindow(display, root, 0, 0, ww, wh, 0, 0, 0); + } else { + window = XCreateSimpleWindow(display, root, 0, 0, 1, 1, 0, 0, 0); + } + + /* Set ClassHint */ + classhint = XAllocClassHint(); + if (classhint == NULL) { + fprintf(stderr, "%s: can't allocate memory for wm hints!\n", argv[0]); + exit(1); + } + classhint->res_class = "DockApp"; + classhint->res_name = appname; + XSetClassHint(display, window, classhint); + XFree(classhint); + + /* Set WMHints */ + wmhints = XAllocWMHints(); + if (wmhints == NULL) { + fprintf(stderr, "%s: can't allocate memory for wm hints!\n", argv[0]); + exit(1); + } + wmhints->flags = IconWindowHint | WindowGroupHint; + if (!dockapp_iswindowed) { + wmhints->flags |= StateHint; + wmhints->initial_state = WithdrawnState; + } + wmhints->window_group = window; + wmhints->icon_window = icon_window; + XSetWMHints(display, window, wmhints); + XFree(wmhints); + + /* Set WM Protocols */ + delete_win = XInternAtom(display, "WM_DELETE_WINDOW", False); + XSetWMProtocols (display, icon_window, &delete_win, 1); + + /* Set Size Hints */ + sizehints.flags = USSize; + if (!dockapp_iswindowed) { + sizehints.flags |= USPosition; + sizehints.x = sizehints.y = 0; + } else { + sizehints.flags |= PMinSize | PMaxSize; + sizehints.min_width = sizehints.max_width = WINDOWED_SIZE_W; + sizehints.min_height = sizehints.max_height = WINDOWED_SIZE_H; + } + sizehints.width = ww; + sizehints.height = wh; + XSetWMNormalHints(display, icon_window, &sizehints); + + /* Set WindowTitle for AfterStep Wharf */ + stat = XStringListToTextProperty(&appname, 1, &title); + if(stat == 0) { + // Not enough memory + fprintf(stderr, "%s: can't allocate memory for the window title!\n", argv[0]); + exit(1); + } + XSetWMName(display, window, &title); + XSetWMName(display, icon_window, &title); + + /* Set Command to start the app so it can be docked properly */ + XSetCommand(display, window, argv, argc); + + depth = DefaultDepth(display, DefaultScreen(display)); + gc = DefaultGC(display, DefaultScreen(display)); + + XFlush(display); +} + +void +dockapp_set_eventmask() +{ + XSelectInput(display, icon_window,ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask ); + XSelectInput(display, window,ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask); +} + + +static Pixmap +create_bg_pixmap(void) +{ + Pixmap bg; + + bg = XCreatePixmap(display, icon_window, WINDOWED_SIZE_W, WINDOWED_SIZE_H, + depth); + XSetForeground(display, gc, dockapp_getcolor("rgb:ae/aa/ae")); + XFillRectangle(display, bg, gc, 0, 0, WINDOWED_SIZE_W, WINDOWED_SIZE_H); + XSetForeground(display, gc, dockapp_getcolor("rgb:ff/ff/ff")); + XDrawLine(display, bg, gc, 0, 0, 0, 63); + XDrawLine(display, bg, gc, 1, 0, 1, 62); + XDrawLine(display, bg, gc, 2, 0, 63, 0); + XDrawLine(display, bg, gc, 2, 1, 62, 1); + XSetForeground(display, gc, dockapp_getcolor("rgb:52/55/52")); + XDrawLine(display, bg, gc, 1, 63, 63, 63); + XDrawLine(display, bg, gc, 2, 62, 63, 62); + XDrawLine(display, bg, gc, 63, 1, 63, 61); + XDrawLine(display, bg, gc, 62, 2, 62, 61); + + return bg; +} + + +void +dockapp_set_background(Pixmap pixmap) +{ + if (dockapp_iswindowed) { + Pixmap bg; + bg = create_bg_pixmap(); + XCopyArea(display, pixmap, bg, gc, 0, 0, width, height, + offset_w, offset_w); + XSetWindowBackgroundPixmap(display, icon_window, bg); + XSetWindowBackgroundPixmap(display, window, bg); + XFreePixmap(display, bg); + } else { + XSetWindowBackgroundPixmap(display, icon_window, pixmap); + XSetWindowBackgroundPixmap(display, window, pixmap); + } + XClearWindow(display, icon_window); + XFlush(display); +} + + +void +dockapp_show(void) +{ + if (!dockapp_iswindowed) + XMapRaised(display, window); + else + XMapRaised(display, icon_window); + + XFlush(display); +} + + +Bool +dockapp_xpm2pixmap(char **data, Pixmap *pixmap, Pixmap *mask, + XpmColorSymbol * colorSymbol, unsigned int nsymbols) +{ + XpmAttributes xpmAttr; + xpmAttr.valuemask = XpmCloseness; + xpmAttr.closeness = 40000; + + if (nsymbols) { + xpmAttr.colorsymbols = colorSymbol; + xpmAttr.numsymbols = nsymbols; + xpmAttr.valuemask |= XpmColorSymbols; + } + + if (XpmCreatePixmapFromData(display, icon_window, data, pixmap, mask, &xpmAttr) != 0) + return False; + + return True; +} + + +Pixmap +dockapp_XCreatePixmap(int w, int h) +{ + return (XCreatePixmap(display, icon_window, w, h, depth)); +} + + +void +dockapp_setshape(Pixmap mask, int x_ofs, int y_ofs) +{ + XShapeCombineMask(display, icon_window, ShapeBounding, -x_ofs, -y_ofs, + mask, ShapeSet); + XShapeCombineMask(display, window, ShapeBounding, -x_ofs, -y_ofs, + mask, ShapeSet); + XFlush(display); +} + + +void +dockapp_copyarea(Pixmap src, Pixmap dist, int x_src, int y_src, int w, int h, + int x_dist, int y_dist) +{ + XCopyArea(display, src, dist, gc, x_src, y_src, w, h, x_dist, y_dist); +} + + +void +dockapp_copy2window (Pixmap src) +{ + if (dockapp_isbrokenwm) { + XCopyArea(display, src, window, gc, 0, 0, width, height, offset_w, + offset_h); + } else { + XCopyArea(display, src, icon_window, gc, 0, 0, width, height, offset_w, + offset_h); + } +} + + +Bool +dockapp_nextevent_or_timeout(XEvent *event, unsigned long miliseconds) +{ + struct timeval timeout; + fd_set rset; + + XSync(display, False); + if (XPending(display)) { + XNextEvent(display, event); + return True; + } + + timeout.tv_sec = miliseconds / 1000; + timeout.tv_usec = (miliseconds % 1000) * 1000; + + FD_ZERO(&rset); + FD_SET(ConnectionNumber(display), &rset); + if (select(ConnectionNumber(display)+1, &rset, NULL, NULL, &timeout) > 0) { + XNextEvent(display, event); + if (event->type == ClientMessage) { + if (event->xclient.data.l[0] == delete_win) { + XDestroyWindow(display,event->xclient.window); + XCloseDisplay(display); + exit(0); + } + } + if (dockapp_iswindowed) { + event->xbutton.x -= offset_w; + event->xbutton.y -= offset_h; + } + return True; + } + + return False; +} + + +unsigned long +dockapp_getcolor(char *color_name) +{ + XColor color; + + if (!XParseColor(display, DefaultColormap(display, DefaultScreen(display)), + color_name, &color)) + fprintf(stderr, "can't parse color %s\n", color_name), exit(1); + + if (!XAllocColor(display, DefaultColormap(display, DefaultScreen(display)), + &color)) { + fprintf(stderr, "can't allocate color %s. Using black\n", color_name); + return BlackPixel(display, DefaultScreen(display)); + } + + return color.pixel; +} + + +unsigned long +dockapp_blendedcolor(char *color_name, int r, int g, int b, float fac) +{ + XColor color; + + if ((r < -255 || r > 255)||(g < -255 || g > 255)||(b < -255 || b > 255)){ + fprintf(stderr, "r:%d,g:%d,b:%d (r,g,b must be 0 to 255)", r, g, b); + exit(1); + } + + r *= 255; + g *= 255; + b *= 255; + + if (!XParseColor(display, DefaultColormap(display, DefaultScreen(display)), + color_name, &color)) + fprintf(stderr, "can't parse color %s\n", color_name), exit(1); + + if (!XAllocColor(display, DefaultColormap(display, DefaultScreen(display)), + &color)) { + fprintf(stderr, "can't allocate color %s. Using black\n", color_name); + return BlackPixel(display, DefaultScreen(display)); + } + + if (DefaultDepth(display, DefaultScreen(display)) < 16) + return color.pixel; + + /* red */ + if (color.red + r > 0xffff) { + color.red = 0xffff; + } else if (color.red + r < 0) { + color.red = 0; + } else { + color.red = (unsigned short)(fac * color.red + r); + } + + /* green */ + if (color.green + g > 0xffff) { + color.green = 0xffff; + } else if (color.green + g < 0) { + color.green = 0; + } else { + color.green = (unsigned short)(fac * color.green + g); + } + + /* blue */ + if (color.blue + b > 0xffff) { + color.blue = 0xffff; + } else if (color.blue + b < 0) { + color.blue = 0; + } else { + color.blue = (unsigned short)(fac * color.blue + b); + } + + color.flags = DoRed | DoGreen | DoBlue; + + if (!XAllocColor(display, DefaultColormap(display, DefaultScreen(display)), + &color)) { + fprintf(stderr, "can't allocate color %s. Using black\n", color_name); + return BlackPixel(display, DefaultScreen(display)); + } + + return color.pixel; +} diff --git a/dockapps/wmmp/src/dockapp.h b/dockapps/wmmp/src/dockapp.h new file mode 100644 index 0000000..092634f --- /dev/null +++ b/dockapps/wmmp/src/dockapp.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 1999 Alfredo K. Kojima + * Copyright (c) 2001, 2002 Seiichi SATO + * Copyright (c) 2017 Nicolas Herry + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN + * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + * This code is based on libdockapp-0.4.0 + * modified by Seiichi SATO + */ + +#include +#include +#include + +#include + +# include +# include +# include +# include +# include +# include +# include + +extern Display *display; +extern Bool dockapp_iswindowed; +extern Bool dockapp_isbrokenwm; + + +void dockapp_open_window(char *display_specified, char *appname, + unsigned w, unsigned h, int argc, char **argv); +void dockapp_set_eventmask(); +void dockapp_set_background(Pixmap pixmap); +void dockapp_show(void); +Bool dockapp_xpm2pixmap(char **data, Pixmap * pixmap, Pixmap * mask, + XpmColorSymbol * colorSymbol, + unsigned int nsymbols); +Pixmap dockapp_XCreatePixmap(int w, int h); +void dockapp_setshape(Pixmap mask, int x_ofs, int y_ofs); +void dockapp_copyarea(Pixmap src, Pixmap dist, int x_src, int y_src, + int w, int h, int x_dist, int y_dist); +void dockapp_copy2window(Pixmap src); +Bool dockapp_nextevent_or_timeout(XEvent * event, unsigned long miliseconds); +unsigned long dockapp_getcolor(char *color); +unsigned long dockapp_blendedcolor(char *color, int r, int g, int b, float fac); diff --git a/dockapps/wmmp/src/libmpdclient.c b/dockapps/wmmp/src/libmpdclient.c new file mode 100644 index 0000000..3efd12d --- /dev/null +++ b/dockapps/wmmp/src/libmpdclient.c @@ -0,0 +1,1174 @@ +/* libmpdclient + * (c)2003-2004 by Warren Dukes (shank@mercury.chem.pitt.edu) + * This project's homepage is: http://www.musicpd.org + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "libmpdclient.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef MPD_NO_IPV6 +#ifdef AF_INET6 +#define MPD_HAVE_IPV6 +#endif +#endif + +#ifdef MPD_HAVE_IPV6 +int mpd_ipv6Supported() { + int s; + s = socket(AF_INET6,SOCK_STREAM,0); + if(s == -1) return 0; + close(s); + return 1; +} +#endif + + +char * mpd_sanitizeArg(const char * arg) { + size_t i; + int count=0; + char * ret; + + for(i=0;iname = strdup(name); + ret->value = strdup(value); + + return ret; +} + +void mpd_freeReturnElement(mpd_ReturnElement * re) { + free(re->name); + free(re->value); + free(re); +} + +void mpd_setConnectionTimeout(mpd_Connection * connection, float timeout) { + connection->timeout.tv_sec = (int)timeout; + connection->timeout.tv_usec = (int)(timeout*1e6 - + connection->timeout.tv_sec*1000000+0.5); +} + +mpd_Connection * mpd_newConnection(const char * host, int port, float timeout) { + int err; + struct hostent * he; + struct sockaddr * dest; + socklen_t destlen; + struct sockaddr_in sin; + char * rt; + char * output; + mpd_Connection * connection = malloc(sizeof(mpd_Connection)); + struct timeval tv; + fd_set fds; +#ifdef MPD_HAVE_IPV6 + struct sockaddr_in6 sin6; +#endif + strcpy(connection->buffer,""); + connection->buflen = 0; + connection->bufstart = 0; + strcpy(connection->errorStr,""); + connection->error = 0; + connection->doneProcessing = 0; + connection->commandList = 0; + connection->returnElement = NULL; + + if(!(he=gethostbyname(host))) { + snprintf(connection->errorStr,MPD_BUFFER_MAX_LENGTH, + "host \"%s\" not found",host); + connection->error = MPD_ERROR_UNKHOST; + return connection; + } + + memset(&sin,0,sizeof(struct sockaddr_in)); + /*dest.sin_family = he->h_addrtype;*/ + sin.sin_family = AF_INET; + sin.sin_port = htons(port); +#ifdef MPD_HAVE_IPV6 + memset(&sin6,0,sizeof(struct sockaddr_in6)); + sin6.sin6_family = AF_INET6; + sin6.sin6_port = htons(port); +#endif + switch(he->h_addrtype) { + case AF_INET: + memcpy((char *)&sin.sin_addr.s_addr,(char *)he->h_addr, + he->h_length); + dest = (struct sockaddr *)&sin; + destlen = sizeof(struct sockaddr_in); + break; +#ifdef MPD_HAVE_IPV6 + case AF_INET6: + if(!mpd_ipv6Supported()) { + strcpy(connection->errorStr,"no IPv6 suuport but a " + "IPv6 address found\n"); + connection->error = MPD_ERROR_SYSTEM; + return connection; + } + memcpy((char *)&sin6.sin6_addr.s6_addr,(char *)he->h_addr, + he->h_length); + dest = (struct sockaddr *)&sin6; + destlen = sizeof(struct sockaddr_in6); + break; +#endif + default: + strcpy(connection->errorStr,"address type is not IPv4 or " + "IPv6\n"); + connection->error = MPD_ERROR_SYSTEM; + return connection; + break; + } + + if((connection->sock = socket(dest->sa_family,SOCK_STREAM,0))<0) { + strcpy(connection->errorStr,"problems creating socket"); + connection->error = MPD_ERROR_SYSTEM; + return connection; + } + + /* connect stuff */ + { +#ifdef SO_RCVTIMEO + struct timeval rcvoldto; + struct timeval sndoldto; + socklen_t oldlen = sizeof(struct timeval); + + mpd_setConnectionTimeout(connection,timeout); + + tv.tv_sec = connection->timeout.tv_sec; + tv.tv_usec = connection->timeout.tv_usec; + + if(getsockopt(connection->sock,SOL_SOCKET,SO_RCVTIMEO,&rcvoldto, + &oldlen)<0 || + getsockopt(connection->sock,SOL_SOCKET, + SO_SNDTIMEO,&sndoldto,&oldlen)<0) + { + strcpy(connection->errorStr,"problems getting socket " + "timeout\n"); + connection->error = MPD_ERROR_SYSTEM; + return connection; + } + if(setsockopt(connection->sock,SOL_SOCKET,SO_RCVTIMEO,&tv, + sizeof(struct timeval))<0 || + setsockopt(connection->sock,SOL_SOCKET, + SO_SNDTIMEO,&tv, + sizeof(struct timeval))<0) + { + strcpy(connection->errorStr,"problems setting socket " + "timeout\n"); + connection->error = MPD_ERROR_SYSTEM; + return connection; + } +#endif + if(connect(connection->sock,dest,destlen)<0) { + snprintf(connection->errorStr,MPD_BUFFER_MAX_LENGTH, + "problems connecting to \"%s\" on port" + " %i",host,port); + connection->error = MPD_ERROR_CONNPORT; + return connection; + } +#ifdef SO_RCVTIMEO + if(setsockopt(connection->sock,SOL_SOCKET,SO_SNDTIMEO,&rcvoldto, + sizeof(struct timeval))<0 || + setsockopt(connection->sock,SOL_SOCKET, + SO_SNDTIMEO,&sndoldto, + sizeof(struct timeval))<0) + { + strcpy(connection->errorStr,"problems setting socket " + "timeout\n"); + connection->error = MPD_ERROR_SYSTEM; + return connection; + } +#endif + } + + while(!(rt = strstr(connection->buffer,"\n"))) { + tv.tv_sec = connection->timeout.tv_sec; + tv.tv_usec = connection->timeout.tv_usec; + FD_ZERO(&fds); + FD_SET(connection->sock,&fds); + if((err = select(connection->sock+1,&fds,NULL,NULL,&tv)) == 1) { + int readed; + readed = recv(connection->sock, + &(connection->buffer[connection->buflen]), + MPD_BUFFER_MAX_LENGTH-connection->buflen,0); + if(readed<=0) { + snprintf(connection->errorStr,MPD_BUFFER_MAX_LENGTH, + "problems getting a response from" + " \"%s\" on port %i",host, + port); + connection->error = MPD_ERROR_NORESPONSE; + return connection; + } + connection->buflen+=readed; + connection->buffer[connection->buflen] = '\0'; + tv.tv_sec = connection->timeout.tv_sec; + tv.tv_usec = connection->timeout.tv_usec; + } + else if(err<0 && errno==EINTR) continue; + else { + snprintf(connection->errorStr,MPD_BUFFER_MAX_LENGTH, + "timeout in attempting to get a response from" + " \"%s\" on port %i",host,port); + connection->error = MPD_ERROR_NORESPONSE; + return connection; + } + } + + *rt = '\0'; + output = strdup(connection->buffer); + strcpy(connection->buffer,rt+1); + connection->buflen = strlen(connection->buffer); + + if(strncmp(output,MPD_WELCOME_MESSAGE,strlen(MPD_WELCOME_MESSAGE))) { + free(output); + snprintf(connection->errorStr,MPD_BUFFER_MAX_LENGTH, + "mpd not running on port %i on host \"%s\"", + port,host); + connection->error = MPD_ERROR_NOTMPD; + return connection; + } + + { + char * test; + char * version[3]; + char * tmp = &output[strlen(MPD_WELCOME_MESSAGE)]; + char * search = "."; + int i; + + for(i=0;i<3;i++) { + char * tok; + if(i==3) search = " "; + version[i] = strtok_r(tmp,search,&tok); + if(!version[i]) { + free(output); + snprintf(connection->errorStr, + MPD_BUFFER_MAX_LENGTH, + "error parsing version number at " + "\"%s\"", + &output[strlen(MPD_WELCOME_MESSAGE)]); + connection->error = MPD_ERROR_NOTMPD; + return connection; + } + connection->version[i] = strtol(version[i],&test,10); + if(version[i]==test || *test!='\0') { + free(output); + snprintf(connection->errorStr, + MPD_BUFFER_MAX_LENGTH, + "error parsing version number at " + "\"%s\"", + &output[strlen(MPD_WELCOME_MESSAGE)]); + connection->error = MPD_ERROR_NOTMPD; + return connection; + } + tmp = NULL; + } + } + + free(output); + + connection->doneProcessing = 1; + + return connection; +} + +void mpd_clearError(mpd_Connection * connection) { + connection->error = 0; + connection->errorStr[0] = '\0'; +} + +void mpd_closeConnection(mpd_Connection * connection) { + close(connection->sock); + if(connection->returnElement) free(connection->returnElement); + free(connection); +} + +void mpd_executeCommand(mpd_Connection * connection, char * command) { + int ret; + struct timeval tv; + fd_set fds; + char * commandPtr = command; + int commandLen = strlen(command); + + if(!connection->doneProcessing && !connection->commandList) { + strcpy(connection->errorStr,"not done processing current command"); + connection->error = 1; + return; + } + + mpd_clearError(connection); + + FD_ZERO(&fds); + FD_SET(connection->sock,&fds); + tv.tv_sec = connection->timeout.tv_sec; + tv.tv_usec = connection->timeout.tv_usec; + + while((ret = select(connection->sock+1,NULL,&fds,NULL,&tv)==1) || + (ret==-1 && errno==EINTR)) { + ret = send(connection->sock,commandPtr,commandLen, + MSG_DONTWAIT); + if(ret<=0) + { + if(ret==EAGAIN || ret==EINTR) continue; + snprintf(connection->errorStr,MPD_BUFFER_MAX_LENGTH, + "problems giving command \"%s\"",command); + connection->error = MPD_ERROR_SENDING; + return; + } + else { + commandPtr+=ret; + commandLen-=ret; + } + + if(commandLen<=0) break; + } + + if(commandLen>0) { + perror(""); + snprintf(connection->errorStr,MPD_BUFFER_MAX_LENGTH, + "timeout sending command \"%s\"",command); + connection->error = MPD_ERROR_TIMEOUT; + return; + } + + if(!connection->commandList) connection->doneProcessing = 0; +} + +void mpd_getNextReturnElement(mpd_Connection * connection) { + char * output = NULL; + char * rt = NULL; + char * name; + char * value; + fd_set fds; + struct timeval tv; + char * tok; + int readed; + char * bufferCheck; + int err; + + if(connection->returnElement) mpd_freeReturnElement(connection->returnElement); + connection->returnElement = NULL; + + if(connection->doneProcessing) { + strcpy(connection->errorStr,"already done processing current command"); + connection->error = 1; + return; + } + + bufferCheck = connection->buffer+connection->bufstart; + while(connection->bufstart>=connection->buflen || + !(rt = strstr(bufferCheck,"\n"))) { + if(connection->buflen>=MPD_BUFFER_MAX_LENGTH) { + memmove(connection->buffer, + connection->buffer+ + connection->bufstart, + connection->buflen- + connection->bufstart+1); + bufferCheck-=connection->bufstart; + connection->buflen-=connection->bufstart; + connection->bufstart = 0; + } + if(connection->buflen>=MPD_BUFFER_MAX_LENGTH) { + strcpy(connection->errorStr,"buffer overrun"); + connection->error = MPD_ERROR_BUFFEROVERRUN; + connection->doneProcessing = 1; + return; + } + bufferCheck+=connection->buflen-connection->bufstart; + tv.tv_sec = connection->timeout.tv_sec; + tv.tv_usec = connection->timeout.tv_usec; + FD_ZERO(&fds); + FD_SET(connection->sock,&fds); + if((err = select(connection->sock+1,&fds,NULL,NULL,&tv) == 1)) { + readed = recv(connection->sock, + connection->buffer+connection->buflen, + MPD_BUFFER_MAX_LENGTH-connection->buflen, + MSG_DONTWAIT); + if(readed<0 && (errno==EAGAIN || errno==EINTR)) { + continue; + } + if(readed<=0) { + strcpy(connection->errorStr,"connection" + " closed"); + connection->error = MPD_ERROR_CONNCLOSED; + connection->doneProcessing = 1; + return; + } + connection->buflen+=readed; + connection->buffer[connection->buflen] = '\0'; + } + else if(err<0 && errno==EINTR) continue; + else { + strcpy(connection->errorStr,"connection timeout"); + connection->error = MPD_ERROR_TIMEOUT; + connection->doneProcessing = 1; + return; + } + } + + *rt = '\0'; + output = connection->buffer+connection->bufstart; + connection->bufstart = rt - connection->buffer + 1; + + if(strcmp(output,"OK")==0) { + connection->doneProcessing = 1; + return; + } + if(strncmp(output,"ACK",strlen("ACK"))==0) { + strcpy(connection->errorStr,output); + connection->error = MPD_ERROR_ACK; + connection->doneProcessing = 1; + return; + } + + name = strtok_r(output,":",&tok); + if(name && (value = strtok_r(NULL,"",&tok)) && value[0]==' ') { + connection->returnElement = mpd_newReturnElement(name,&(value[1])); + } + else { + if(!name || !value) { + snprintf(connection->errorStr,MPD_BUFFER_MAX_LENGTH, + "error parsing: %s",output); + } + else { + snprintf(connection->errorStr,MPD_BUFFER_MAX_LENGTH, + "error parsing: %s:%s",name,value); + } + connection->errorStr[MPD_BUFFER_MAX_LENGTH] = '\0'; + connection->error = 1; + } +} + +void mpd_finishCommand(mpd_Connection * connection) { + while(!connection->doneProcessing) mpd_getNextReturnElement(connection); +} + + +mpd_Status * mpd_getStatus(mpd_Connection * connection) { + mpd_Status * status; + + mpd_executeCommand(connection,"status\n"); + + if(connection->error) return NULL; + + status = malloc(sizeof(mpd_Status)); + status->volume = -1; + status->repeat = 0; + status->random = 0; + status->playlist = -1; + status->playlistLength = -1; + status->state = -1; + status->song = 0; + status->elapsedTime = 0; + status->totalTime = 0; + status->bitRate = 0; + status->sampleRate = 0; + status->bits = 0; + status->channels = 0; + status->crossfade = -1; + status->error = NULL; + + mpd_getNextReturnElement(connection); + if(connection->error) { + free(status); + return NULL; + } + while(connection->returnElement) { + mpd_ReturnElement * re = connection->returnElement; + if(strcmp(re->name,"volume")==0) { + status->volume = atoi(re->value); + } + else if(strcmp(re->name,"repeat")==0) { + status->repeat = atoi(re->value); + } + else if(strcmp(re->name,"random")==0) { + status->random = atoi(re->value); + } + else if(strcmp(re->name,"playlist")==0) { + status->playlist = strtol(re->value,NULL,10); + } + else if(strcmp(re->name,"playlistlength")==0) { + status->playlistLength = atoi(re->value); + } + else if(strcmp(re->name,"bitrate")==0) { + status->bitRate = atoi(re->value); + } + else if(strcmp(re->name,"state")==0) { + if(strcmp(re->value,"play")==0) { + status->state = MPD_STATUS_STATE_PLAY; + } + else if(strcmp(re->value,"stop")==0) { + status->state = MPD_STATUS_STATE_STOP; + } + else if(strcmp(re->value,"pause")==0) { + status->state = MPD_STATUS_STATE_PAUSE; + } + else { + status->state = MPD_STATUS_STATE_UNKNOWN; + } + } + else if(strcmp(re->name,"song")==0) { + status->song = atoi(re->value); + } + else if(strcmp(re->name,"time")==0) { + char * tok; + char * copy; + copy = strdup(re->value); + status->elapsedTime = atoi(strtok_r(copy,":",&tok)); + status->totalTime = atoi(strtok_r(NULL,"",&tok)); + free(copy); + } + else if(strcmp(re->name,"error")==0) { + status->error = strdup(re->value); + } + else if(strcmp(re->name,"xfade")==0) { + status->crossfade = atoi(re->value); + } + else if(strcmp(re->name,"audio")==0) { + char * tok; + char * copy; + copy = strdup(re->value); + status->sampleRate = atoi(strtok_r(copy,":",&tok)); + status->bits = atoi(strtok_r(NULL,":",&tok)); + status->channels = atoi(strtok_r(NULL,"",&tok)); + free(copy); + } + + mpd_getNextReturnElement(connection); + if(connection->error) { + free(status); + return NULL; + } + } + + if(connection->error) { + free(status); + return NULL; + } + else if(status->state<0) { + strcpy(connection->errorStr,"state not found"); + connection->error = 1; + free(status); + return NULL; + } + + return status; +} + +void mpd_freeStatus(mpd_Status * status) { + if(status->error) free(status->error); + free(status); +} + +mpd_Stats * mpd_getStats(mpd_Connection * connection) { + mpd_Stats * stats; + + mpd_executeCommand(connection,"stats\n"); + + if(connection->error) return NULL; + + stats = malloc(sizeof(mpd_Stats)); + stats->numberOfArtists = 0; + stats->numberOfAlbums = 0; + stats->numberOfSongs = 0; + stats->uptime = 0; + stats->dbUpdateTime = 0; + stats->playTime = 0; + stats->dbPlayTime = 0; + + mpd_getNextReturnElement(connection); + if(connection->error) { + free(stats); + return NULL; + } + while(connection->returnElement) { + mpd_ReturnElement * re = connection->returnElement; + if(strcmp(re->name,"artists")==0) { + stats->numberOfArtists = atoi(re->value); + } + else if(strcmp(re->name,"albums")==0) { + stats->numberOfAlbums = atoi(re->value); + } + else if(strcmp(re->name,"songs")==0) { + stats->numberOfSongs = atoi(re->value); + } + else if(strcmp(re->name,"uptime")==0) { + stats->uptime = strtol(re->value,NULL,10); + } + else if(strcmp(re->name,"db_update")==0) { + stats->dbUpdateTime = strtol(re->value,NULL,10); + } + else if(strcmp(re->name,"playtime")==0) { + stats->playTime = strtol(re->value,NULL,10); + } + else if(strcmp(re->name,"db_playtime")==0) { + stats->dbPlayTime = strtol(re->value,NULL,10); + } + + mpd_getNextReturnElement(connection); + if(connection->error) { + free(stats); + return NULL; + } + } + + if(connection->error) { + free(stats); + return NULL; + } + + return stats; +} + +void mpd_freeStats(mpd_Stats * stats) { + free(stats); +} + +void mpd_initSong(mpd_Song * song) { + song->file = NULL; + song->artist = NULL; + song->album = NULL; + song->track = NULL; + song->title = NULL; + song->time = MPD_SONG_NO_TIME; +} + +void mpd_finishSong(mpd_Song * song) { + if(song->file) free(song->file); + if(song->artist) free(song->artist); + if(song->album) free(song->album); + if(song->title) free(song->title); + if(song->track) free(song->track); +} + +mpd_Song * mpd_newSong() { + mpd_Song * ret = malloc(sizeof(mpd_Song)); + + mpd_initSong(ret); + + return ret; +} + +void mpd_freeSong(mpd_Song * song) { + mpd_finishSong(song); + free(song); +} + +mpd_Song * mpd_songDup(mpd_Song * song) { + mpd_Song * ret = mpd_newSong(); + + if(song->file) ret->file = strdup(song->file); + if(song->artist) ret->artist = strdup(song->artist); + if(song->album) ret->album = strdup(song->album); + if(song->title) ret->title = strdup(song->title); + if(song->track) ret->track = strdup(song->track); + ret->time = song->time; + + return ret; +} + +void mpd_initDirectory(mpd_Directory * directory) { + directory->path = NULL; +} + +void mpd_finishDirectory(mpd_Directory * directory) { + if(directory->path) free(directory->path); +} + +mpd_Directory * mpd_newDirectory () { + mpd_Directory * directory = malloc(sizeof(mpd_Directory));; + + mpd_initDirectory(directory); + + return directory; +} + +void mpd_freeDirectory(mpd_Directory * directory) { + mpd_finishDirectory(directory); + + free(directory); +} + +mpd_Directory * mpd_directoryDup(mpd_Directory * directory) { + mpd_Directory * ret = mpd_newDirectory(); + + if(directory->path) ret->path = strdup(directory->path); + + return ret; +} + +void mpd_initPlaylistFile(mpd_PlaylistFile * playlist) { + playlist->path = NULL; +} + +void mpd_finishPlaylistFile(mpd_PlaylistFile * playlist) { + if(playlist->path) free(playlist->path); +} + +mpd_PlaylistFile * mpd_newPlaylistFile() { + mpd_PlaylistFile * playlist = malloc(sizeof(mpd_PlaylistFile)); + + mpd_initPlaylistFile(playlist); + + return playlist; +} + +void mpd_freePlaylistFile(mpd_PlaylistFile * playlist) { + mpd_finishPlaylistFile(playlist); + free(playlist); +} + +mpd_PlaylistFile * mpd_playlistFileDup(mpd_PlaylistFile * playlist) { + mpd_PlaylistFile * ret = mpd_newPlaylistFile(); + + if(playlist->path) ret->path = strdup(playlist->path); + + return ret; +} + +void mpd_initInfoEntity(mpd_InfoEntity * entity) { + entity->info.directory = NULL; +} + +void mpd_finishInfoEntity(mpd_InfoEntity * entity) { + if(entity->info.directory) { + if(entity->type == MPD_INFO_ENTITY_TYPE_DIRECTORY) { + mpd_freeDirectory(entity->info.directory); + } + else if(entity->type == MPD_INFO_ENTITY_TYPE_SONG) { + mpd_freeSong(entity->info.song); + } + else if(entity->type == MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) { + mpd_freePlaylistFile(entity->info.playlistFile); + } + } +} + +mpd_InfoEntity * mpd_newInfoEntity() { + mpd_InfoEntity * entity = malloc(sizeof(mpd_InfoEntity)); + + mpd_initInfoEntity(entity); + + return entity; +} + +void mpd_freeInfoEntity(mpd_InfoEntity * entity) { + mpd_finishInfoEntity(entity); + free(entity); +} + +void mpd_sendInfoCommand(mpd_Connection * connection, char * command) { + mpd_executeCommand(connection,command); +} + +mpd_InfoEntity * mpd_getNextInfoEntity(mpd_Connection * connection) { + mpd_InfoEntity * entity = NULL; + + if(connection->doneProcessing) return NULL; + + if(!connection->returnElement) mpd_getNextReturnElement(connection); + + if(connection->returnElement) { + if(strcmp(connection->returnElement->name,"file")==0) { + entity = mpd_newInfoEntity(); + entity->type = MPD_INFO_ENTITY_TYPE_SONG; + entity->info.song = mpd_newSong(); + entity->info.song->file = + strdup(connection->returnElement->value); + } + else if(strcmp(connection->returnElement->name, + "directory")==0) { + entity = mpd_newInfoEntity(); + entity->type = MPD_INFO_ENTITY_TYPE_DIRECTORY; + entity->info.directory = mpd_newDirectory(); + entity->info.directory->path = + strdup(connection->returnElement->value); + } + else if(strcmp(connection->returnElement->name,"playlist")==0) { + entity = mpd_newInfoEntity(); + entity->type = MPD_INFO_ENTITY_TYPE_PLAYLISTFILE; + entity->info.playlistFile = mpd_newPlaylistFile(); + entity->info.playlistFile->path = + strdup(connection->returnElement->value); + } + else { + connection->error = 1; + strcpy(connection->errorStr,"problem parsing song info"); + return NULL; + } + } + else return NULL; + + mpd_getNextReturnElement(connection); + while(connection->returnElement) { + mpd_ReturnElement * re = connection->returnElement; + + if(strcmp(re->name,"file")==0) return entity; + else if(strcmp(re->name,"directory")==0) return entity; + else if(strcmp(re->name,"playlist")==0) return entity; + + if(entity->type == MPD_INFO_ENTITY_TYPE_SONG && + strlen(re->value)) { + if(!entity->info.song->artist && + strcmp(re->name,"Artist")==0) { + entity->info.song->artist = strdup(re->value); + } + else if(!entity->info.song->album && + strcmp(re->name,"Album")==0) { + entity->info.song->album = strdup(re->value); + } + else if(!entity->info.song->title && + strcmp(re->name,"Title")==0) { + entity->info.song->title = strdup(re->value); + } + else if(!entity->info.song->track && + strcmp(re->name,"Track")==0) { + entity->info.song->track = strdup(re->value); + } + else if(entity->info.song->time==MPD_SONG_NO_TIME && + strcmp(re->name,"Time")==0) { + entity->info.song->time = atoi(re->value); + } + } + else if(entity->type == MPD_INFO_ENTITY_TYPE_DIRECTORY) { + } + else if(entity->type == MPD_INFO_ENTITY_TYPE_PLAYLISTFILE) { + } + + mpd_getNextReturnElement(connection); + } + + return entity; +} + +char * mpd_getNextReturnElementNamed(mpd_Connection * connection, + const char * name) +{ + if(connection->doneProcessing) return NULL; + + mpd_getNextReturnElement(connection); + while(connection->returnElement) { + mpd_ReturnElement * re = connection->returnElement; + + if(strcmp(re->name,name)==0) return strdup(re->value); + mpd_getNextReturnElement(connection); + } + + return NULL; +} + +char * mpd_getNextArtist(mpd_Connection * connection) { + return mpd_getNextReturnElementNamed(connection,"Artist"); +} + +char * mpd_getNextAlbum(mpd_Connection * connection) { + return mpd_getNextReturnElementNamed(connection,"Album"); +} + +void mpd_sendPlaylistInfoCommand(mpd_Connection * connection, int songNum) { + char * string = malloc(strlen("playlistinfo")+25); + sprintf(string,"playlistinfo \"%i\"\n",songNum); + mpd_sendInfoCommand(connection,string); + free(string); +} + +void mpd_sendListallCommand(mpd_Connection * connection, const char * dir) { + char * sDir = mpd_sanitizeArg(dir); + char * string = malloc(strlen("listall")+strlen(sDir)+5); + sprintf(string,"listall \"%s\"\n",sDir); + mpd_sendInfoCommand(connection,string); + free(string); + free(sDir); +} + +void mpd_sendListallInfoCommand(mpd_Connection * connection, const char * dir) { + char * sDir = mpd_sanitizeArg(dir); + char * string = malloc(strlen("listallinfo")+strlen(sDir)+5); + sprintf(string,"listallinfo \"%s\"\n",sDir); + mpd_sendInfoCommand(connection,string); + free(string); + free(sDir); +} + +void mpd_sendLsInfoCommand(mpd_Connection * connection, const char * dir) { + char * sDir = mpd_sanitizeArg(dir); + char * string = malloc(strlen("lsinfo")+strlen(sDir)+5); + sprintf(string,"lsinfo \"%s\"\n",sDir); + mpd_sendInfoCommand(connection,string); + free(string); + free(sDir); +} + +void mpd_sendSearchCommand(mpd_Connection * connection, int table, + const char * str) +{ + char st[10]; + char * string; + char * sanitStr = mpd_sanitizeArg(str); + if(table == MPD_TABLE_ARTIST) strcpy(st,"artist"); + else if(table == MPD_TABLE_ALBUM) strcpy(st,"album"); + else if(table == MPD_TABLE_TITLE) strcpy(st,"title"); + else if(table == MPD_TABLE_FILENAME) strcpy(st,"filename"); + else { + connection->error = 1; + strcpy(connection->errorStr,"unknown table for search"); + return; + } + string = malloc(strlen("search")+strlen(sanitStr)+strlen(st)+6); + sprintf(string,"search %s \"%s\"\n",st,sanitStr); + mpd_sendInfoCommand(connection,string); + free(string); + free(sanitStr); +} + +void mpd_sendFindCommand(mpd_Connection * connection, int table, + const char * str) +{ + char st[10]; + char * string; + char * sanitStr = mpd_sanitizeArg(str); + if(table == MPD_TABLE_ARTIST) strcpy(st,"artist"); + else if(table == MPD_TABLE_ALBUM) strcpy(st,"album"); + else if(table == MPD_TABLE_TITLE) strcpy(st,"title"); + else { + connection->error = 1; + strcpy(connection->errorStr,"unknown table for find"); + return; + } + string = malloc(strlen("find")+strlen(sanitStr)+strlen(st)+6); + sprintf(string,"find %s \"%s\"\n",st,sanitStr); + mpd_sendInfoCommand(connection,string); + free(string); + free(sanitStr); +} + +void mpd_sendListCommand(mpd_Connection * connection, int table, + const char * arg1) +{ + char st[10]; + char * string; + if(table == MPD_TABLE_ARTIST) strcpy(st,"artist"); + else if(table == MPD_TABLE_ALBUM) strcpy(st,"album"); + else { + connection->error = 1; + strcpy(connection->errorStr,"unknown table for list"); + return; + } + if(arg1) { + char * sanitArg1 = mpd_sanitizeArg(arg1); + string = malloc(strlen("list")+strlen(sanitArg1)+strlen(st)+6); + sprintf(string,"list %s \"%s\"\n",st,sanitArg1); + free(sanitArg1); + } + else { + string = malloc(strlen("list")+strlen(st)+3); + sprintf(string,"list %s\n",st); + } + mpd_sendInfoCommand(connection,string); + free(string); +} + +void mpd_sendAddCommand(mpd_Connection * connection, const char * file) { + char * sFile = mpd_sanitizeArg(file); + char * string = malloc(strlen("add")+strlen(sFile)+5); + sprintf(string,"add \"%s\"\n",sFile); + mpd_executeCommand(connection,string); + free(string); + free(sFile); +} + +void mpd_sendDeleteCommand(mpd_Connection * connection, int songNum) { + char * string = malloc(strlen("delete")+25); + sprintf(string,"delete \"%i\"\n",songNum); + mpd_sendInfoCommand(connection,string); + free(string); +} + +void mpd_sendSaveCommand(mpd_Connection * connection, const char * name) { + char * sName = mpd_sanitizeArg(name); + char * string = malloc(strlen("save")+strlen(sName)+5); + sprintf(string,"save \"%s\"\n",sName); + mpd_executeCommand(connection,string); + free(string); + free(sName); +} + +void mpd_sendLoadCommand(mpd_Connection * connection, const char * name) { + char * sName = mpd_sanitizeArg(name); + char * string = malloc(strlen("load")+strlen(sName)+5); + sprintf(string,"load \"%s\"\n",sName); + mpd_executeCommand(connection,string); + free(string); + free(sName); +} + +void mpd_sendRmCommand(mpd_Connection * connection, const char * name) { + char * sName = mpd_sanitizeArg(name); + char * string = malloc(strlen("rm")+strlen(sName)+5); + sprintf(string,"rm \"%s\"\n",sName); + mpd_executeCommand(connection,string); + free(string); + free(sName); +} + +void mpd_sendShuffleCommand(mpd_Connection * connection) { + mpd_executeCommand(connection,"shuffle\n"); +} + +void mpd_sendClearCommand(mpd_Connection * connection) { + mpd_executeCommand(connection,"clear\n"); +} + +void mpd_sendPlayCommand(mpd_Connection * connection, int songNum) { + char * string = malloc(strlen("play")+25); + sprintf(string,"play \"%i\"\n",songNum); + mpd_sendInfoCommand(connection,string); + free(string); +} + +void mpd_sendStopCommand(mpd_Connection * connection) { + mpd_executeCommand(connection,"stop\n"); +} + +void mpd_sendPauseCommand(mpd_Connection * connection) { + mpd_executeCommand(connection,"pause\n"); +} + +void mpd_sendNextCommand(mpd_Connection * connection) { + mpd_executeCommand(connection,"next\n"); +} + +void mpd_sendMoveCommand(mpd_Connection * connection, int from, int to) { + char * string = malloc(strlen("move")+25); + sprintf(string,"move \"%i\" \"%i\"\n",from,to); + mpd_sendInfoCommand(connection,string); + free(string); +} + +void mpd_sendSwapCommand(mpd_Connection * connection, int song1, int song2) { + char * string = malloc(strlen("swap")+25); + sprintf(string,"swap \"%i\" \"%i\"\n",song1,song2); + mpd_sendInfoCommand(connection,string); + free(string); +} + +void mpd_sendSeekCommand(mpd_Connection * connection, int song, int time) { + char * string = malloc(strlen("seek")+25); + sprintf(string,"seek \"%i\" \"%i\"\n",song,time); + mpd_sendInfoCommand(connection,string); + free(string); +} + +void mpd_sendUpdateCommand(mpd_Connection * connection) { + mpd_executeCommand(connection,"update\n"); +} + +void mpd_sendPrevCommand(mpd_Connection * connection) { + mpd_executeCommand(connection,"previous\n"); +} + +void mpd_sendRepeatCommand(mpd_Connection * connection, int repeatMode) { + char * string = malloc(strlen("repeat")+25); + sprintf(string,"repeat \"%i\"\n",repeatMode); + mpd_executeCommand(connection,string); + free(string); +} + +void mpd_sendRandomCommand(mpd_Connection * connection, int randomMode) { + char * string = malloc(strlen("random")+25); + sprintf(string,"random \"%i\"\n",randomMode); + mpd_executeCommand(connection,string); + free(string); +} + +void mpd_sendSetvolCommand(mpd_Connection * connection, int volumeChange) { + char * string = malloc(strlen("setvol")+25); + sprintf(string,"setvol \"%i\"\n",volumeChange); + //sprintf(string,"setvol %i\n",volumeChange); + mpd_executeCommand(connection,string); + free(string); +} + +void mpd_sendVolumeCommand(mpd_Connection * connection, int volumeChange) { + char * string = malloc(strlen("volume")+25); + sprintf(string,"volume \"%i\"\n",volumeChange); + mpd_executeCommand(connection,string); + free(string); +} + +void mpd_sendCrossfadeCommand(mpd_Connection * connection, int seconds) { + char * string = malloc(strlen("crossfade")+25); + sprintf(string,"crossfade \"%i\"\n",seconds); + mpd_executeCommand(connection,string); + free(string); +} + +void mpd_sendPasswordCommand(mpd_Connection * connection, const char * pass) { + char * sPass = mpd_sanitizeArg(pass); + char * string = malloc(strlen("password")+strlen(sPass)+5); + sprintf(string,"password \"%s\"\n",sPass); + mpd_executeCommand(connection,string); + free(string); + free(sPass); +} + +void mpd_sendCommandListBegin(mpd_Connection * connection) { + if(connection->commandList) { + strcpy(connection->errorStr,"already in command list mode"); + connection->error = 1; + return; + } + connection->commandList = 1; + mpd_executeCommand(connection,"command_list_begin\n"); +} + +void mpd_sendCommandListEnd(mpd_Connection * connection) { + if(!connection->commandList) { + strcpy(connection->errorStr,"not in command list mode"); + connection->error = 1; + return; + } + connection->commandList = 0; + mpd_executeCommand(connection,"command_list_end\n"); +} diff --git a/dockapps/wmmp/src/libmpdclient.h b/dockapps/wmmp/src/libmpdclient.h new file mode 100644 index 0000000..2172030 --- /dev/null +++ b/dockapps/wmmp/src/libmpdclient.h @@ -0,0 +1,400 @@ +/* libmpdclient + * (c)2003-2004 by Warren Dukes (shank@mercury.chem.pitt.edu) + * This project's homepage is: http://www.musicpd.org + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef LIBMPDCLIENT_H +#define LIBMPDCLIENT_H + +#include +#include + +#define MPD_BUFFER_MAX_LENGTH 50000 +#define MPD_WELCOME_MESSAGE "OK MPD " + +#define MPD_ERROR_TIMEOUT 10 /* timeout trying to talk to mpd */ +#define MPD_ERROR_SYSTEM 11 /* system error */ +#define MPD_ERROR_UNKHOST 12 /* unknown host */ +#define MPD_ERROR_CONNPORT 13 /* problems connecting to port on host */ +#define MPD_ERROR_NOTMPD 14 /* mpd not running on port at host */ +#define MPD_ERROR_NORESPONSE 15 /* no response on attempting to connect */ +#define MPD_ERROR_SENDING 16 /* error sending command */ +#define MPD_ERROR_CONNCLOSED 17 /* connection closed by mpd */ +#define MPD_ERROR_ACK 18 /* ACK returned! */ +#define MPD_ERROR_BUFFEROVERRUN 19 /* Buffer was overrun! */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* internal stuff don't touch this struct */ +typedef struct _mpd_ReturnElement { + char * name; + char * value; +} mpd_ReturnElement; + +/* mpd_Connection + * holds info about connection to mpd + * use error, and errorStr to detect errors + */ +typedef struct _mpd_Connection { + /* use this to check the version of mpd */ + int version[3]; + /* IMPORTANT, you want to get the error messages from here */ + char errorStr[MPD_BUFFER_MAX_LENGTH+1]; + /* this will be set to 1 if there is an error, 0 if not */ + int error; + /* DON'T TOUCH any of the rest of this stuff */ + int sock; + char buffer[MPD_BUFFER_MAX_LENGTH+1]; + int buflen; + int bufstart; + int doneProcessing; + int commandList; + mpd_ReturnElement * returnElement; + struct timeval timeout; +} mpd_Connection; + +/* mpd_newConnection + * use this to open a new connection + * you should use mpd_closeConnection, when your done with the connection, + * even if an error has occurred + * _timeout_ is the connection timeout period in seconds + */ +mpd_Connection * mpd_newConnection(const char * host, int port, float timeout); + +void mpd_setConnectionTimeout(mpd_Connection * connection, float timeout); + +/* mpd_closeConnection + * use this to close a connection and free'ing subsequent memory + */ +void mpd_closeConnection(mpd_Connection * connection); + +/* mpd_clearError + * clears error + */ +void mpd_clearError(mpd_Connection * connection); + +/* STATUS STUFF */ + +/* use these with status.state to determine what state the player is in */ +#define MPD_STATUS_STATE_UNKNOWN 0 +#define MPD_STATUS_STATE_STOP 1 +#define MPD_STATUS_STATE_PLAY 2 +#define MPD_STATUS_STATE_PAUSE 3 + +/* us this with status.volume to determine if mpd has volume support */ +#define MPD_STATUS_NO_VOLUME -1 + +/* mpd_Status + * holds info return from status command + */ +typedef struct mpd_Status { + /* 0-100, or MPD_STATUS_NO_VOLUME when there is no volume support */ + int volume; + /* 1 if repeat is on, 0 otherwise */ + int repeat; + /* 1 if random is on, 0 otherwise */ + int random; + /* playlist length */ + int playlistLength; + /* playlist, use this to determine when the playlist has changed */ + long long playlist; + /* use with MPD_STATUS_STATE_* to determine state of player */ + int state; + /* crossfade setting in seconds */ + int crossfade; + /* if in PLAY or PAUSE state, this is the number of the currently + * playing song in the playlist, beginning with 0 + */ + int song; + /* time in seconds that have elapsed in the currently playing/paused + * song + */ + int elapsedTime; + /* length in seconds of the currently playing/paused song */ + int totalTime; + /* current bit rate in kbs */ + int bitRate; + /* audio sample rate */ + unsigned int sampleRate; + /* audio bits */ + int bits; + /* audio channels */ + int channels; + /* error */ + char * error; +} mpd_Status; + +/* mpd_getStatus + * returns status info, be sure to free it with mpd_freeStatus() + */ +mpd_Status * mpd_getStatus(mpd_Connection * connection); + +/* mpd_freeStatus + * free's status info malloc'd and returned by mpd_getStatus + */ +void mpd_freeStatus(mpd_Status * status); + +typedef struct _mpd_Stats { + int numberOfArtists; + int numberOfAlbums; + int numberOfSongs; + unsigned long uptime; + unsigned long dbUpdateTime; + unsigned long playTime; + unsigned long dbPlayTime; +} mpd_Stats; + +mpd_Stats * mpd_getStats(mpd_Connection * connection); + +void mpd_freeStats(mpd_Stats * stats); + +/* SONG STUFF */ + +#define MPD_SONG_NO_TIME -1 + +/* mpd_Song + * for storing song info returned by mpd + */ +typedef struct _mpd_Song { + /* filename of song */ + char * file; + /* artist, maybe NULL if there is no tag */ + char * artist; + /* title, maybe NULL if there is no tag */ + char * title; + /* album, maybe NULL if there is no tag */ + char * album; + /* track, maybe NULL if there is no tag */ + char * track; + /* length of song in seconds, check that it is not MPD_SONG_NO_TIME */ + int time; +} mpd_Song; + +/* mpd_newSong + * use to allocate memory for a new mpd_Song + * file, artist, etc all initialized to NULL + * if your going to assign values to file, artist, etc + * be sure to malloc or strdup the memory + * use mpd_freeSong to free the memory for the mpd_Song, it will also + * free memory for file, artist, etc, so don't do it yourself + */ +mpd_Song * mpd_newSong(); + +/* mpd_freeSong + * use to free memory allocated by mpd_newSong + * also it will free memory pointed to by file, artist, etc, so be careful + */ +void mpd_freeSong(mpd_Song * song); + +/* mpd_songDup + * works like strDup, but for a mpd_Song + */ +mpd_Song * mpd_songDup(mpd_Song * song); + +/* DIRECTORY STUFF */ + +/* mpd_Directory + * used to store info fro directory (right now that just the path) + */ +typedef struct _mpd_Directory { + char * path; +} mpd_Directory; + +/* mpd_newDirectory + * allocates memory for a new directory + * use mpd_freeDirectory to free this memory + */ +mpd_Directory * mpd_newDirectory (); + +/* mpd_freeDirectory + * used to free memory allocated with mpd_newDirectory, and it frees + * path of mpd_Directory, so be careful + */ +void mpd_freeDirectory(mpd_Directory * directory); + +/* mpd_directoryDup + * works like strdup, but for mpd_Directory + */ +mpd_Directory * mpd_directoryDup(mpd_Directory * directory); + +/* PLAYLISTFILE STUFF */ + +/* mpd_PlaylistFile + * stores info about playlist file returned by lsinfo + */ +typedef struct _mpd_PlaylistFile { + char * path; +} mpd_PlaylistFile; + +/* mpd_newPlaylistFile + * allocates memory for new mpd_PlaylistFile, path is set to NULL + * free this memory with mpd_freePlaylistFile + */ +mpd_PlaylistFile * mpd_newPlaylistFile(); + +/* mpd_freePlaylist + * free memory allocated for freePlaylistFile, will also free + * path, so be careful + */ +void mpd_freePlaylistFile(mpd_PlaylistFile * playlist); + +/* mpd_playlistFileDup + * works like strdup, but for mpd_PlaylistFile + */ +mpd_PlaylistFile * mpd_playlistFileDup(mpd_PlaylistFile * playlist); + +/* INFO ENTITY STUFF */ + +/* the type of entity returned from one of the commands that generates info + * use in conjunction with mpd_InfoEntity.type + */ +#define MPD_INFO_ENTITY_TYPE_DIRECTORY 0 +#define MPD_INFO_ENTITY_TYPE_SONG 1 +#define MPD_INFO_ENTITY_TYPE_PLAYLISTFILE 2 + +/* mpd_InfoEntity + * stores info on stuff returned info commands + */ +typedef struct mpd_InfoEntity { + /* the type of entity, use with MPD_INFO_ENTITY_TYPE_* to determine + * what this entity is (song, directory, etc...) + */ + int type; + /* the actual data you want, mpd_Song, mpd_Directory, etc */ + union { + mpd_Directory * directory; + mpd_Song * song; + mpd_PlaylistFile * playlistFile; + } info; +} mpd_InfoEntity; + +mpd_InfoEntity * mpd_newInfoEntity(); + +void mpd_freeInfoEntity(mpd_InfoEntity * entity); + +/* INFO COMMANDS AND STUFF */ + +/* use this function to loop over after calling Info/Listall functions */ +mpd_InfoEntity * mpd_getNextInfoEntity(mpd_Connection * connection); + +/* songNum of -1, means to display the whole list */ +void mpd_sendPlaylistInfoCommand(mpd_Connection * connection, int songNum); + +void mpd_sendListallCommand(mpd_Connection * connection, const char * dir); + +void mpd_sendListallInfoCommand(mpd_Connection * connection, const char * dir); + +void mpd_sendLsInfoCommand(mpd_Connection * connection, const char * dir); + +#define MPD_TABLE_ARTIST 0 +#define MPD_TABLE_ALBUM 1 +#define MPD_TABLE_TITLE 2 +#define MPD_TABLE_FILENAME 3 + +void mpd_sendSearchCommand(mpd_Connection * connection, int table, + const char * str); + +void mpd_sendFindCommand(mpd_Connection * connection, int table, + const char * str); + +/* LIST TAG COMMANDS */ + +/* use this function fetch next artist entry, be sure to free the returned + * string. NULL means there are no more. Best used with sendListArtists + */ +char * mpd_getNextArtist(mpd_Connection * connection); + +char * mpd_getNextAlbum(mpd_Connection * connection); + +/* list artist or albums by artist, arg1 should be set to the artist if + * listing albums by a artist, otherwise NULL for listing all artists or albums + */ +void mpd_sendListCommand(mpd_Connection * connection, int table, + const char * arg1); + +void mpd_sendListAlbumsCommand(mpd_Connection * connection, + const char * artist); + +/* SIMPLE COMMANDS */ + +void mpd_sendAddCommand(mpd_Connection * connection, const char * file); + +void mpd_sendDeleteCommand(mpd_Connection * connection, int songNum); + +void mpd_sendSaveCommand(mpd_Connection * connection, const char * name); + +void mpd_sendLoadCommand(mpd_Connection * connection, const char * name); + +void mpd_sendRmCommand(mpd_Connection * connection, const char * name); + +void mpd_sendShuffleCommand(mpd_Connection * connection); + +void mpd_sendClearCommand(mpd_Connection * connection); + +/* use this to start playing at the beginning, useful when in random mode */ +#define MPD_PLAY_AT_BEGINNING -1 + +void mpd_sendPlayCommand(mpd_Connection * connection, int songNum); + +void mpd_sendStopCommand(mpd_Connection * connection); + +void mpd_sendPauseCommand(mpd_Connection * connection); + +void mpd_sendNextCommand(mpd_Connection * connection); + +void mpd_sendPrevCommand(mpd_Connection * connection); + +void mpd_sendMoveCommand(mpd_Connection * connection, int from, int to); + +void mpd_sendSwapCommand(mpd_Connection * connection, int song1, int song2); + +void mpd_sendSeekCommand(mpd_Connection * connection, int song, int time); + +void mpd_sendRepeatCommand(mpd_Connection * connection, int repeatMode); + +void mpd_sendRandomCommand(mpd_Connection * connection, int randomMode); + +void mpd_sendSetvolCommand(mpd_Connection * connection, int volumeChange); + +/* WARNING: don't use volume command, its depreacted */ +void mpd_sendVolumeCommand(mpd_Connection * connection, int volumeChange); + +void mpd_sendCrossfadeCommand(mpd_Connection * connection, int seconds); + +int mpd_getCrossfade(mpd_Connection * connection); + +void mpd_sendUpdateCommand(mpd_Connection * connection); + +void mpd_sendPasswordCommand(mpd_Connection * connection, const char * pass); + +/* after executing a command, when your done with it to get its status + * (you want to check connection->error for an error) + */ +void mpd_finishCommand(mpd_Connection * connection); + +/* command list stuff, use this to do things like add files very quickly */ +void mpd_sendCommandListBegin(mpd_Connection * connection); + +void mpd_sendCommandListEnd(mpd_Connection * connection); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/dockapps/wmmp/src/mouse_regions.c b/dockapps/wmmp/src/mouse_regions.c new file mode 100644 index 0000000..df76de3 --- /dev/null +++ b/dockapps/wmmp/src/mouse_regions.c @@ -0,0 +1,137 @@ +#include + +/* + * + * My thanks for this handy little piece of code below - saved me + * a lot of hassle with the buttons + * + * Anthony Peacock + * + Best viewed with vim5, using ts=4 + + wmgeneral was taken from wmppp. + + It has a lot of routines which most of the wm* programs use. + + ------------------------------------------------------------ + + Author: Martijn Pieterse (pieterse@xs4all.nl) + + --- + CHANGES: + --- + 11/08/2002 (Brad Jorsch, anomie@users.sourceforge.net) + * Moved all the mouse region related stuff to mouse_regions.[ch] + + 28/08/2001 (Brad Jorsch, anomie@users.sourceforge.net) + * Added EnableMouseRegion and DisableMouseRegion + * Got annoyed with the 81-character lines. Fixed it. If you don't like + it, find a different copy of wmgeneral.c ;) + * GraphicsExpose events are enabled here. + * GetXPM is exported. It optionally takes an XpmColorSymbol array. + * GetColor is exported. + + 30/09/2000 (Brad Jorsch, anomie@users.sourceforge.net) + * You know, wmgen.mask sounds like a much nicer place to store the + mask... why don't we do that? + + 21/09/1999 (Brad Jorsch, anomie@users.sourceforge.net) + * Changed openXwindow to use only the filename, sans path, + as the name and class properties of the app. + + 14/09/1998 (Dave Clark, clarkd@skyia.com) + * Updated createXBMfromXPM routine + * Now supports >256 colors + 11/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Removed a bug from parse_rcfile. You could + not use "start" in a command if a label was + also start. + * Changed the needed geometry string. + We don't use window size, and don't support + negative positions. + 03/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added parse_rcfile2 + 02/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added -geometry support (untested) + 28/08/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added createXBMfromXPM routine + * Saves a lot of work with changing xpm's. + 02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon + * debugged the parse_rc file. + 30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Ripped similar code from all the wm* programs, + and put them in a single file. + +*/ + +#include "mouse_regions.h" + + /*****************/ + /* Mouse Regions */ +/*****************/ + +typedef struct { + int enable; + int top; + int bottom; + int left; + int right; +} MOUSE_REGION; + +MOUSE_REGION mouse_region[MAX_MOUSE_REGION]; + +/******************************************************************************\ +|* AddMouseRegion *| +\******************************************************************************/ + +void AddMouseRegion(int index, int left, int top, int right, int bottom) { + + if (index < MAX_MOUSE_REGION) { + mouse_region[index].enable = 1; + mouse_region[index].top = top; + mouse_region[index].left = left; + mouse_region[index].bottom = bottom; + mouse_region[index].right = right; + } +} + +/******************************************************************************\ +|* CheckMouseRegion *| +\******************************************************************************/ + +int CheckMouseRegion(int x, int y) { + int i; + int found; + + found = 0; + + for (i=0; i= mouse_region[i].left && + y <= mouse_region[i].bottom && + y >= mouse_region[i].top) + found = 1; + } + if (!found) return -1; + return (i-1); +} + +/******************************************************************************\ +|* EnableMouseRegion *| +\******************************************************************************/ + +void EnableMouseRegion(int i) { + if(i +#include +#include + +#include "mpd_func.h" + +char * mpd_host; +int mpd_port; +char * mpd_password = NULL; + +mpd_Connection * connection = NULL; +mpd_Status * status = NULL; + +int MpdIsErrored() { + if(!connection->error) return 0; + if(connection->error==MPD_ERROR_UNKHOST || + connection->error==MPD_ERROR_SYSTEM || + connection->error==MPD_ERROR_NOTMPD) { + fprintf(stderr,"%s\n",connection->errorStr); + exit(-1); + } + else if(connection->error==MPD_ERROR_TIMEOUT || + connection->error==MPD_ERROR_SENDING || + connection->error==MPD_ERROR_CONNCLOSED || + connection->error==MPD_ERROR_NORESPONSE || + connection->error==MPD_ERROR_CONNPORT) { + /*fprintf(stderr,"%s\n",connection->errorStr); + fprintf(stderr,"resetting connection\n");*/ + mpd_closeConnection(connection); + connection = NULL; + } + else { + fprintf(stderr,"%s\n",connection->errorStr); + connection->error = 0; + } + return 1; +} + +void MpdPlay() { + if(status && status->state==MPD_STATUS_STATE_PAUSE) { + MpdPause(); + return; + } + + mpd_sendPlayCommand(connection,MPD_PLAY_AT_BEGINNING); + if(MpdIsErrored()) return; + mpd_finishCommand(connection); + if(MpdIsErrored()) return; +} + +void MpdStop() { + mpd_sendStopCommand(connection); + if(MpdIsErrored()) return; + mpd_finishCommand(connection); + if(MpdIsErrored()) return; +} + +void MpdPause() { + mpd_sendPauseCommand(connection); + if(MpdIsErrored()) return; + mpd_finishCommand(connection); + if(MpdIsErrored()) return; +} + +void MpdEject() { +} + +void MpdPrev() { + mpd_sendPrevCommand(connection); + if(MpdIsErrored()) return; + mpd_finishCommand(connection); + if(MpdIsErrored()) return; +} + +void MpdNext() { + mpd_sendNextCommand(connection); + if(MpdIsErrored()) return; + mpd_finishCommand(connection); + if(MpdIsErrored()) return; +} + +void MpdFastr() { + if(!status || status->state==MPD_STATUS_STATE_STOP) return; + mpd_sendSeekCommand(connection,status->song,status->elapsedTime-10); + if(MpdIsErrored()) return; + mpd_finishCommand(connection); + if(MpdIsErrored()) return; + MpdStatus(); +} + +void MpdFastf() { + if(!status || status->state==MPD_STATUS_STATE_STOP) return; + mpd_sendSeekCommand(connection,status->song,status->elapsedTime+10); + if(MpdIsErrored()) return; + mpd_finishCommand(connection); + if(MpdIsErrored()) return; + MpdStatus(); +} + +int MpdGetVolume() { + if(status && status->volume!=MPD_STATUS_NO_VOLUME) { + return status->volume; + } + return 0; +} + +void MpdToggleRandom() { + mpd_sendRandomCommand(connection,!status->random); + if(MpdIsErrored()) return; + mpd_finishCommand(connection); + if(MpdIsErrored()) return; +} + +void MpdToggleRepeat() { + mpd_sendRepeatCommand(connection,!status->repeat); + if(MpdIsErrored()) return; + mpd_finishCommand(connection); + if(MpdIsErrored()) return; +} + +int MpdStatus() { + if(!connection) { + connection = mpd_newConnection(mpd_host,mpd_port,10); + if(MpdIsErrored()) return 0; + if(mpd_password && strlen(mpd_password)) { + mpd_sendPasswordCommand(connection,mpd_password); + if(MpdIsErrored()) return 0; + mpd_finishCommand(connection); + if(MpdIsErrored()) return 0; + } + } + if(status) mpd_freeStatus(status); + status = mpd_getStatus(connection); + if(MpdIsErrored()) return 0; + mpd_finishCommand(connection); + if(MpdIsErrored()) return 0; + if(!status) return 0; + + return 1; +} + +int MpdPauseStatus() { + if(status) return (status->state == MPD_STATUS_STATE_PAUSE); + return 0; +} + +int MpdRandomStatus() { + if(status) return status->random; + return 0; +} + +int MpdRepeatStatus() { + if(status) return status->repeat; + return 0; +} + +int MpdPlayStatus() { + if(status) return (status->state == MPD_STATUS_STATE_PLAY); + return 0; +} + +int MpdGetTrack() { + if(status) return status->song; + return 0; +} + +char *MpdGetTitle() { + static char * ret = NULL; + static unsigned long lastVersion = 0; + static int lastSong = -1; + mpd_InfoEntity * entity; + + + if(!status || (status->state!=MPD_STATUS_STATE_PLAY && + status->state!=MPD_STATUS_STATE_PAUSE)) { + if(ret) free(ret); + lastVersion = 0; + lastSong = -1; + ret = strdup(""); + return ret; + } + + if(ret && lastVersion == status->playlist && + lastSong == status->song) { + return ret; + } + + lastVersion = status->playlist; + lastSong = status->song; + + if(ret) free(ret); + + mpd_sendPlaylistInfoCommand(connection,status->song); + if(MpdIsErrored()) { + ret = strdup(""); + return ret; + } + if((entity = mpd_getNextInfoEntity(connection))) { + if(entity->info.song->artist && entity->info.song->title) { + ret = malloc(strlen(entity->info.song->artist) + + strlen(entity->info.song->title) + 4); + sprintf(ret,"%s - %s",entity->info.song->artist, + entity->info.song->title); + } + else ret = strdup(entity->info.song->file); + mpd_freeInfoEntity(entity); + } + if(MpdIsErrored()) return ret; + mpd_finishCommand(connection); + if(MpdIsErrored()) return ret; + return ret; +} + +int MpdGetTime() { + if(status) return status->elapsedTime; + return 0; +} + +void MpdSetVolume(int v) { + if(!status || status->volume == MPD_STATUS_NO_VOLUME) return; + + mpd_sendSetvolCommand(connection,v); + if(connection->error) { + fprintf(stderr,"%s\n",connection->errorStr); + } + mpd_finishCommand(connection); + if(connection->error) { + fprintf(stderr,"%s\n",connection->errorStr); + } + MpdStatus(); +} diff --git a/dockapps/wmmp/src/mpd_func.h b/dockapps/wmmp/src/mpd_func.h new file mode 100644 index 0000000..0c2b7ef --- /dev/null +++ b/dockapps/wmmp/src/mpd_func.h @@ -0,0 +1,31 @@ +#ifndef MPD_FUNC_H +#define MPD_FUNC_H + +#include "libmpdclient.h" + +extern char * mpd_host; +extern char * mpd_password; +extern int mpd_port; + +void MpdPlay(); +void MpdPause(); +void MpdStop(); +void MpdEject(); +void MpdPrev(); +void MpdNext(); +void MpdFastr(); +void MpdFastf(); +int MpdGetVolume(); +int MpdStatus(); +int MpdGetTime(); +int MpdGetTrack(); +char * MpdGetTitle(); +int MpdPlayStatus(); +int MpdPauseStatus(); +int MpdRepeatStatus(); +int MpdRandomStatus(); +void MpdSetVolume(int v); +void MpdToggleRepeat(); +void MpdToggleRandom(); + +#endif diff --git a/dockapps/wmmp/src/parts.xpm b/dockapps/wmmp/src/parts.xpm new file mode 100644 index 0000000..2aee48c --- /dev/null +++ b/dockapps/wmmp/src/parts.xpm @@ -0,0 +1,224 @@ +/* XPM */ +static char * parts_xpm[] = { +"166 105 116 2", +" c #202020", +". c #20B2AE", +"+ c #004841", +"@ c #020202", +"# c #000000", +"$ c #107C78", +"% c #FFFFFF", +"& c #FCFAFA", +"* c #FAF5F5", +"= c #F8F0F0", +"- c #F6EBEB", +"; c #F4E6E6", +"> c #F2E1E1", +", c #F0DCDC", +"' c #EED7D7", +") c #EBD2D2", +"! c #E9CDCD", +"~ c #E7C8C8", +"{ c #E5C3C3", +"] c #E3BEBE", +"^ c #E1B9B9", +"/ c #DFB4B4", +"( c #DDAFAF", +"_ c #DAAAAA", +": c #D8A5A5", +"< c #D6A0A0", +"[ c #D49B9B", +"} c #D29696", +"| c #D09191", +"1 c #CE8C8C", +"2 c #CC8787", +"3 c #C98282", +"4 c #C77D7D", +"5 c #C57878", +"6 c #C37373", +"7 c #C16E6E", +"8 c #BF6969", +"9 c #BD6464", +"0 c #BA5F5F", +"a c #B85A5A", +"b c #B65555", +"c c #B45050", +"d c #B24B4B", +"e c #B04646", +"f c #AE4141", +"g c #AC3C3C", +"h c #A93737", +"i c #A73232", +"j c #A52D2D", +"k c #A32828", +"l c #A12323", +"m c #9F1E1E", +"n c #9D1919", +"o c #9B1414", +"p c #980F0F", +"q c #007D71", +"r c #1FB2AE", +"s c #003E3A", +"t c #141414", +"u c #017D71", +"v c #31B7B2", +"w c #21AFAA", +"x c #25ABA5", +"y c #27A7A2", +"z c #2AA39F", +"A c #2DA09C", +"B c #2F9D99", +"C c #329996", +"D c #359593", +"E c #379290", +"F c #3A8E8D", +"G c #3D8B8A", +"H c #3F8787", +"I c #428383", +"J c #458080", +"K c #487D7D", +"L c #4A797A", +"M c #4D7577", +"N c #4F7274", +"O c #526E71", +"P c #556B6E", +"Q c #57676B", +"R c #5A6468", +"S c #5D6065", +"T c #5F5C62", +"U c #62595E", +"V c #65565B", +"W c #685258", +"X c #6A4E55", +"Y c #6D4B52", +"Z c #70474F", +"` c #72444C", +" . c #754049", +".. c #773C46", +"+. c #7A3943", +"@. c #7D3640", +"#. c #7F323D", +"$. c #822E39", +"%. c #852B36", +"&. c #882733", +"*. c #8A2430", +"=. c #8D202D", +"-. c #901C2A", +";. c #921927", +">. c #951624", +",. c #981221", +"'. c #9A0E1E", +"). c #9E0A1A", +"!. c #9E0716", +"~. c #20B1AC", +"{. c #20B2AC", +"]. c #3E463E", +"^. c #004941", +"/. c #188983", +"(. c #010101", +"_. c #4F8327", +" . . . . . . + + + + + + . . . . . . . . . . . . + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", +". . . . . . + + + + + . + . . . . . + . . . . . . + + + + . . . . . . + . . . . . + + . . . . . . . . . . . . . . . . . . . # . . . . . . . . . . . . # . . . . . . . . . . . # . . . . . . . . . . . # . . . . . . . . . . . . # ", +". . . . + + . . + + . . + + . . . . . . . . + + . . + + + + . . . . . . . . . . . . @ @ # . . # . . # . . # . . . # . . . . # . . # . . . # . . . # . . # . . . . # . . . # . . # . . # . . # ", +". . . . + + . . + + . . + + . . . . . . . . + + . . + + + + . . . . . . . . . . . . # . . # . # # . # # . . . # . . . # # . # # . . . # . . . # # . # # . . . # . . . # # . # # . # . . # ", +". . . . + + . . + + . . + + . . . . . . . . + + . . + + + + . . . . . . . . . . . . @ @ # . . # # # # # # # . . . # . . # # # # # # . . . # . . . # # # # # # . . # . . . # # # # # # # . . # ", +". . . . + + . . + + . . + + . . . . . . . . + + . . + + + + . . . . . . . . . . . . # . . # . # # . # # . . . # . . . # # . # # . . . # . . . # # . # # . . . # . . . # # . # # . # . . # ", +". . . . + + . . + + . . + + . . . . . . . . + + . . + + + + . . . . . . . . . . . . @ @ # . . # . . # . . # . . . # . . . . # . . # . . . # . . . # . . # . . . . # . . . # . . # . . # . . # ", +". . . . + + . . + + . . + + . . . . . . . . + + . . + + + + . . . . . . . . . . . . # . . . . . . . . . . . . # . . . . . . . . . . . # . . . . . . . . . . . # . . . . . . . . . . . . # ", +". . . . + + . . + + . . + + . . . . . . . . + + . . + + + + . . . . . . . . . . . . @ @ # # # # # # # # # # # # # $ # # # # # # # # # # # $ # # # # # # # # # # # $ # # # # # # # # # # # # # ", +". + + + + . + + + + + . + . . . . . + . . . . . . . . . . . . . . . . + . . . . . + + + + + + . . . . . . . . . . . . . . . # % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p # ", +" + + + + + + + + + + + + . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . + + + + + + . . . . . . . . . . . . . . @ @ # % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p # ", +". . + . . + + . + . + . . . + . . . + . . . # % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p # ", +". . . . + + . . . . + + + + . . + + . . + + . . . . . . + + . . . . . . + + . . . . @ @ # % & * = - ; > , ' ) ! ~ { ] ^ / ( _ : < [ } | 1 2 3 4 5 6 7 8 9 0 a b c d e f g h i j k l m n o p # ", +". . . . + + . . . . + + + + . . + + . . + + . . . . . . + + . . . . . . + + . . . . # # # # # # # # # $ # # # # # # # # # # # # # # # # # # # # $ # # # # # # # # # $ # # # # # # # # # # ", +". . . . + + . . . . + + + + . . + + . . + + . . . . . . + + . . . . . . + + . . . . @ @ # . . . . . . . . # . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . # . . . . . . . . . # ", +". . . . + + . . . . + + + + . . + + . . + + . . . . . . + + . . . . . . + + . . . . # . . . . . . . . # . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . # . . . . . . . . . # ", +". . . . + + . . . . + + + + . . + + . . + + . . . . . . + + . . . . . . + + . . . . @ @ # . . . # # . . . # . . . . . . . . # # . . . . . . . . . . # . . # # . # # . . # . . # # # # # . . # ", +". . . . + + . . . . + + + + . . + + . . + + . . . . . . + + . . . . . . + + . . . . # . . # # # # . . # . . . . . . . . # # # # . . . . . . . . # . . # # . # # . . # . . # # # # # . . # ", +". . . . . . + + + + + . . . . . . + + . . . . . + + + + + . + . . . . . . . . . . . + + + + + . . . . . . . + . . . . . . . @ @ # . # # # # # # . # . . . . . . . . # # # # # # . . . . . . # . . # # . # # . . # . . # # # # # . . # ", +" . . . . . . + + + + + + . . . . . . . . . . . . + + + + + + . . . . . . . . . . . . + + + + + + . . . . . . . . . . . . . . # . . . . . . . . # . . . . . . . . # # # # . . . . . . . . # . . # # . # # . . # . . # # # # # . . # ", +". . @ @ @ @ @ @ . . . . q q q q q q . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . q q q q q q . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ r . @ @ @ @ # . # # # # # # . # . . . . . . . . # # . . r . . . . . . . # . . . . . . . . . # . . . . . . . . . # ", +"@ . . @ @ @ @ . . @ q . . q q q q . . @ q . . @ @ @ @ . . @ q . . @ @ @ @ . . @ @ . . q q q q . . @ @ . . @ @ @ @ . . q @ . . @ @ @ @ . . q q . . @ @ @ @ . . @ @ . . @ @ @ @ . . @ @ . . @ @ @ @ . . @ # . . . . . . . . # . . . . . . . . . . . . . . . . . . . . # . . . . . . . . . # . . . . . . . . . # ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . q q @ @ . . . . . . q q q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . @ @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ r . . . . . q q @ @ . . . . . . q q q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . @ @ ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . q q @ @ . . . . . . q q q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . @ @ ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . q q @ @ . . . . . . q q q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . @ @ s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . q q @ @ . . . r . . q q q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . @ @ s t t t t t t t t t t t t s t t t t t t t t t t t s t t t t t t t t t t t s t t t t t t t t t t t t s ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . q q @ @ . . . . . . q q q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . @ @ s t t s t t s t t s t t t s t t t t s t t s t t t s t t t s t t s t t t t s t t t s t t s t t s t t s ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ q q . . . r . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . q q @ @ . . . . . . q q q q . . . . . . @ @ @ @ . . . . . . @ @ @ @ . . . . . . @ @ s t t s t s s t s s t t t s t t t s s t s s t t t s t t t s s t s s t t t s t t t s s t s s t s t t s ", +"@ . . q q q q . . @ q . . q q q q . . @ q . . @ @ @ @ . . @ q . . @ @ @ @ . . @ @ . . @ @ @ @ . . @ @ . . @ @ @ @ . . q @ . . @ @ @ @ . . q q . . q q q q . . @ @ . . @ @ @ @ . . @ @ . . @ @ @ @ . . @ s t t s s s s s s s t t t s t t s s s s s s t t t s t t t s s s s s s t t s t t t s s s s s s s t t s ", +". . q q q q q q . . . . q q q u q q . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . q q q q q q . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . s t t s t s s t s s t t t s t t t s s t s s t t t s t t t s s t s s t t t s t t t s s t s s t s t t s ", +"@ . . . . . . . . @ q . . . . . . . . @ @ . . . . . . . . q q . . . . . . . . @ q . . . . . . . . @ q . . . . . . . . @ @ . . . . . . . . @ q . . . . . . . . @ @ . . . . . . . . @ q . . . . . . . . @ . . . s t t s t t s t t s t t t s t t t t s t t s t t t s t t t s t t s t t t t s t t t s t t s t t s t t s ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . q q q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ . s t t t t t t t t t t t t s t t t t t t t t t t t s t t t t t t t t t t t s t t t t t t t t t t t t s ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . q q q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ . s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . q q q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ . v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", +"@ @ . . . . . . @ @ q u . . . . . . @ @ @ @ . . . . . . q q q q . r . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ $ $ $ ~.w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . q q q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q u . . . . . . @ @ . ~.w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", +"@ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . q q q q . . . . . . @ @ q q . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ @ @ . . . . . . @ @ q q . . . . . . @ @ . v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", +"@ . . @ @ @ @ . . @ q . . q q q q . . @ @ . . @ @ @ @ . . q q . . @ @ @ @ . . @ q . . q q q q . . @ q . . @ @ @ @ . . @ @ . . @ @ @ @ . . @ q . . q q q q . . @ @ . . @ @ @ @ . . @ q . . @ @ @ @ . . @ . s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s ", +". . @ @ @ @ @ @ . . . . q q q q q q . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . q q q q q q . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . q q q q q q . . . . @ @ @ @ @ @ . . . . @ @ @ @ @ @ . . . . . s t t t t t t t t s t t t t t t t t t t t t t t t t t t t t s t t t t t t t t t s t t t t t t t t t s ", +" {.{.{. + + + $ {.{.{. {.{.{. $ + + + $ $ {.{.{. {.{.{. {.{.{.$ {.{.{. {.{.{. . @ @ @ . . q q q ].. @ @ @ . . @ @ @ . ].q q q ].].@ @ @ . . @ @ @ . . @ @ @ ].. @ @ @ . . @ @ @ . . @ @ @ s t t t t t t t t s t t t t t t t t s s t t t t t t t t t t s t t s s t s s t t s t t s s s s s s t s ", +"{. {.+ {.+ {.+ {.{. {.{. + {. + + {.{. {.{. {.@ . . . @ q . . . @ q . . . @ q . . . @ @ . . . @ @ . . . q @ . . . q q . . . @ @ . . . @ @ . . r @ @ . . . s t t t s s t t t s t t t t t t t t s s s s t t t t t t t t s t t s s t s s t t s t t s s s s s s t s ", +"{. {.+ {.+ {.+ {.{. {.{. + {. + + {.{. {.{. {.@ . . . @ q . . . @ q . . . @ q . . . @ @ . . . @ @ . . . q @ r . . q q . . . @ @ . . . @ @ . . . @ @ . . . s t t s s s s t t s t t t t t t t t s s s s s s t t t t t t s t t s s t s s t t s t t s s s s s s t s ", +"{. {.+ {.+ {.+ {.{. {.{. + {. + + {.{. {.{. {.@ . . . @ q . . . @ u . . . @ u . . . @ @ . . . @ @ . . . q @ . . . q q . . . @ @ . . . @ @ . . . @ @ . . . s t s s s s s s t s t t t t t t t t s s s s s s t t t t t t s t t s s t s s t t s t t s s s s s s t s ", +"$ + + + $ + + + $ {.{.{. {.{.{.$ $ {.{.{.$ $ {.{.{. {.{.{. + + + $ {.{.{. {.{.{.$ ].q q q ].. q q q ].. @ @ @ . . @ @ @ ].].@ @ @ ].].@ @ @ . . @ @ @ . . q q q ].. @ @ @ . . @ @ @ ].].q q q s t t t t t t t t s t t t t t t t t s s s s t t t t t t t t s t t s s t s s t t s t t s s s s s s t s ", +"{. {.+ {.{. + + {.+ {.+ {.{. {.+ {.{. {.+ {.@ . . . @ q . . . @ @ . . . q q . . . @ q . . . @ q . . . @ @ . . . @ q . . . @ @ . . . @ q . . . @ @ . . . s t s s s s s s t s t t t t t t t t s s t t t t t t t t t t s t t s s t s s t t s t t s s s s s s t s ", +"{. {.+ {.{. + + {.+ {.+ {.{. {.+ {.{. {.+ {.@ . . . @ q . . . @ @ . . . q q . . . @ q . . . @ q . . . @ @ . . . @ q . . . @ @ . . . @ q . . . @ @ . . . s t t t t t t t t s t t t t t t t t t t t t t t t t t t t t s t t t t t t t t t s t t t t t t t t t s ", +"{. {.+ {.{. + + {.+ {.+ {.{. {.+ {.{. {.+ {.@ . . . @ q . . . @ @ . . . q q . . . @ q . . . @ q . . . @ @ . . . @ q . . . @ @ . . . @ q . . . @ @ . . . s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s s ", +" {.{.{. + + + $ {.{.{.$ {.{.{. + + + $ $ {.{.{. {.{.{. + + + $ {.{.{. {.{.{. . @ @ @ . . q q q ].. @ @ @ ].. @ @ @ . . q q q ].].@ @ @ . . @ @ @ . . q q q ].. @ @ @ . . @ @ @ . . @ @ @ ", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". t t t t t t t t t t t t . t t t t t t t t t t t . t t t t t t t t t t t . t t t t t t t t t t t t . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". t t . t t . t t . t t t . t t t t . t t . t t t . t t t . t t . t t t t . t t t . t t . t t . t t . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". t t . t . . t . . t t t . t t t . . t . . t t t . t t t . . t . . t t t . t t t . . t . . t . t t . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". t t . . . . . . . t t t . t t . . . . . . t t t . t t t . . . . . . t t . t t t . . . . . . . t t . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". t t . t . . t . . t t t . t t t . . t . . t t t . t t t . . t . . t t t . t t t . . t . . t . t t . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". t t . t t . t t . t t t . t t t t . t t . t t t . t t t . t t . t t t t . t t t . t t . t t . t t . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". t t t t t t t t t t t t . t t t t t t t t t t t . t t t t t t t t t t t . t t t t t t t t t t t t . % % o o o o o o t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % o o o o o o t t t t t t t t t t t t t t t t t t t t t ", +" v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. t t t t t t t t t t t t t t t t t t t t t ", +" ~.w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. t t t t t t t t t t t t t t t t t t t t t ", +" ~.w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. o o o o o o % % % % o o o o o o t t t t t t t t t t t t t t t t t t t t t ", +" v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. o o o o o o % % % % o o o o o o t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t t t t t t t t t t t t t t t t t t t t t v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", +". t t t t t t t t . t t t t t t t t t t t t t t t t t t t t . t t t t t t t t t . t t t t t t t t t . . . # # . . . . . . o o . . . . . . o o . . . . . . o o . . . . t t t t t t t t t t t t t t t t t t t t t ~.w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", +". t t t t t t t t . t t t t t t t t . . t t t t t t t t t t . t t . . t . . t t . t t . . . . . . t . . . # # . . . . . . o o . . . . . . o o . . . . . . o o . . . . t t t t t t t t t t t t t t t t t t t t t ~.w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", +". t t t . . t t t . t t t t t t t t . . . . t t t t t t t t . t t . . t . . t t . t t . . . . . . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . t t t t t t t t t t t t t t t t t t t t t v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!. ", +". t t . . . . t t . t t t t t t t t . . . . . . t t t t t t . t t . . t . . t t . t t . . . . . . t . . . . . . . . . . . . . . . . . . . . . . . . r . . . . . . . . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t ", +". t . . . . . . t . t t t t t t t t . . . . . . t t t t t t . t t . . t . . t t . t t . . . . . . t . o o . . o o . . o o . . # # . . # # . . o o . . o o . . o o . . t t t t t t t t t t t t t t t t t t t t t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". t t t t t t t t . t t t t t t t t . . . . t t t t t t t t . t t . . t . . t t . t t . . . . . . t . o o . . o o . . o o . . # # . . # # . . o o . . o o . . o o . . t t t t t t t t t t t t t t t t t t t t t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r . . . . . . . . . . . . . . . . ", +". t . . . . . . t . t t t t t t t t . . t t t t t t t t t t . t t . . t . . t t . t t . . . . . . t . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t . r . . . r . r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". t t t t t t t t . t t t t t t t t t t t t t t t t t t t t . t t t t t t t t t . t t t t t t t t t . t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +"^.. . . ^. q . . . q . . . q q . . . q . . . q q . . . q q . . . q q ^.^.^.q ^.^.^.q ^.^.^.q q ^.^.^.q q ^.^.^. . ^.^.^.. q . . . q . . . q q . . . q q . . . q q . . . q q . . . q q . . . q q ^.^.^.q q ^.^.^.q q ^.^.^.q q ^.^.^.q q ^.^.^.q q . . . q ", +". . . . . ^. . . . ^. . ^. . ^. . . ^. . ^. . . . . ^. . . . . . . . . . . . . . . . ^. ^. . ^. . . . . . . . . . . ^. . ", +". . . . . ^. . . . ^. . ^. . ^. . . ^. . ^. . . . ^. . ^. . . . . . . . . . . . . . . ^. ^. . ^. . . . . . . ^.. . ^. . . ^. . ^. ", +"q . . . q q . . . q ^.^.^. q ^.^.^.q q . . . q . . . q ^.. . q q . . . q ^.^.^.q ^.^.^.q q . . ^. q ^.^.^. q ^.^.^.q q ^.^.^.q q ^.^.^.q q . . . q q . ^.^.q q . . . q . . . q ^.q ^. q ^.^.^.q q ^.^.^.q q ^.^.^.q ^.. ^. q . . . q ^.. ^. ", +". . . . . ^. . . . ^. . ^. . . . . ^. . ^. . . . ^. . ^. . . . . . . . ^. . . . . . ^. . ^. . ^. . . . . . . . ^.. . ^. ^. . ^.. ^. ", +". . . . . ^. . . . ^. . ^. . . . . ^. . ^. . . . . ^. . . . . . . . ^. . . . . . ^. . ^. . ^. . . . . . . . . . . ^. . . ^. ", +"q ^.^.^.q q . . . q . . . q . . . . q . . . q . ^.^.^. q . . . q q ^.^.^.q ^.^.^.. q . . . q q ^.^.^.q q . . . ^. q ^.^.^.q . ^.^.^.. q . . . q q ^.^.^. q . . . q q ^.^.^.q q . . . q ^.q ^. ^.. . . . . . . . ^.^.^.. q ^.^.^.. q q . . . q q . . . q ", +" ", +" ", +" {.{.{. + + + /. /.{.{.{./. /.{.{.{./. /.+ + + /. /.{.{.{./. /.{.{.{./. /.{.{.{./. /.{.{.{./. /.{.{.{./. ^.^.^. ^.^.^. ^.^.^. . ^.^. . ^.^. ^.^.. ^.^.^. ^.^.. ", +"{. {. + {. + {. + {. {. {. {. + {. + + {. {. {. {. {. ^. ^. ^. ^. ^. ^. . ^. . ^. ^. . . q . ^. . ^. % % % % % % % % % % o o o o o o o o o o ", +"{. {. + {. + {. + {. {. {. {. + {. + + {. {. {. {. {. ^. ^. ^. ^. ^. ^. . ^. . ^. ^. . ^.q q q ^. ^. . ^. % % % o o o ", +"/.+ + + /. + + + /. /.{.{.{./. {.{.{./. /.{.{.{./. /.{.{.{./. /.{.{.{./. + + + /. /.{.{.{./. /.{.{.{./. ^.^.^. q . . . q ^.^.^. ^.^.^. q ^.^.^. ^.^.^.q . . . . . ^.. ^. % % % % % % % o o o o o o o ", +"{. {. + {. {. + + {. + {. + {. {. {. + {. {. {. + {. ^. ^. ^. ^. ^. ^. ^. ^. . ^. ^. . ^.q q q ^. ^. . ^. % % % % % % o o o o o o ", +"{. {. + {. {. + + {. + {. + {. {. {. + {. {. {. + {. ^. ^. ^. ^. ^. ^. ^. ^. . ^. ^. . . q . ^.. ^. ", +" {.{.{. + + + /. /.{.{.{./. /.{.{.{./. + + + /. /.{.{.{./. /.{.{.{./. + + + /. /.{.{.{./. /.{.{.{./. ^.^.^. ^.^.^. q . q ^.^.^. . ^.^. ^.^.. ^.^.^. . ^.^. ", +" ", +"q (.(.(.q . _.(.(.(.. . _.(.(.(._.. _.(.(.(.. . _.(.(.(._.. _.(.(.(._.. _.(.(.(._.. _.q q q _.. . q q q _.. . q q q _.. _.q q q _.. _.q q q . . (.q q q (.. _.(.(.(.. . _.(.(.(._.. _.(.(.(._.. _.(.(.(._.. _.(.(.(._.. _.(.(.(._.. _.(.(.(._.. _.q q q _.. _.q q q _.. _.q q q _.. _.q q q _.. _.q q q _.. _.(.(.(._.. ", +"(.. . . (.. (.. . . (.. (.. . . q . (.. . . (.. (.. . . q . (.. . . q . (.. . . q . (.. . . (.. q r . . (.. q . . . (.. (.. . . (.. (.. . . q . (.(.. (.(.. (.. . . (.. (.. . . (.. (.. . . (.. (.. . . (.. (.. . . (.. (.. . . q . q . (.. q . (.. . . (.. (.. . . (.. (.. . . (.. (.. . . (.. (.. . . (.. q . . . (.. ", +"(.. . . (.. (.. . . (.. (.. . . q . (.. . . (.. (.. . . q . (.. . . q . (.. . . q . (.. . . (.. q . . . (.. q . . . (.. (.. . (.q . (.. . . q . (.. (.. (.. (.. . . (.. (.. . . (.. (.. . . (.. (.. . . (.. (.. . . (.. (.. . . q . q . (.. q . (.. . . (.. (.. . . (.. (.. . . (.. q (.. (.q . (.. . . (.. q . . (.q . % % % % % % % % % % ", +"_.(.(.(._.. _.(.(.(.. . _.q q q . . _.q q q _.. _.(.(.(.. . _.(.(.(.. . _.q (.(._.. _.(.(.(._.. . q q q _.. . q q q _.. _.(.(.q . . _.q q q . . _.q q q _.. _.q q q _.. _.q q q _.. _.(.(.(._.. _.(.q q _.. _.(.(.(.. . _.(.(.(._.. . q _.q . . _.q q q _.. _.u q q _.. _.q q q _.. . q (.q . . _.(.(.(._.. . q (.q . . % % % % % % % % % % ", +"(.. . . (.. (.. . . (.. (.. . . q . (.. . . (.. (.. . . q . (.. . . q . (.. . . (.. (.. . . (.. q . . . (.. q . . . (.. (.. . (.q . (.. . . q . (.. . . (.. (.. . . (.. (.. . . (.. (.. . . q . (.. (.. (.. (.. . . (.. q . . . (.. q . (.. q . (.. . . (.. (.. . . (.. (.. (.. (.. q (.. (.q . q . . . (.. q (.. . q . % % % % % % % % % % ", +"(.. . . (.. (.. . . (.. (.. . . q . (.. . . (.. (.. . . q . (.. . . q . (.. . . (.. (.. . . (.. q . . . (.. q . . . (.. (.. . . (.. (.. . . q . (.. . . (.. (.. . . (.. (.. . . (.. (.. . . q . (.. . (.(.. (.. . . (.. q . . . (.. q . (.. q . (.. . . (.. (.. . . (.. (.(.. (.(.. (.. . . (.. q . . . (.. (.. . . q . % % % % % % % % % % ", +"_.q q q _.. _.(.(.(.. . _.(.(.(._.. (.(.(.(.. . _.(.(.(._.. (.q q q . . _.(.(.(._.. _.q q q _.. r q q q (.. _.(.(.(._.. _.q q q _.. _.(.(.(.q . _.q q q _.. (.q q q (.. _.(.(.(._.. _.q q q . . _.(.(.(._.. _.q q q _.. _.(.(.(._.. . u _.u . . q (.(.(.(.. . (.(.(.. . (.q q q (.. _.q u q (._._.(.(.(._.. _.(.(.(._.. % % % % % % % % % % ", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r . . . . . . . . . . . . . % % % % % % % % % % ", +". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % % % % % ", +". (.(.(.. . . q q q _.. _.(.(.(._.. _.(.(.(._.. _.q q q _.. _.(.(.(._.. _.(.(.(._.. _.(.(.(._.. _.(.(.(._.. _.(.(.(._.. . q q q . . . q q q . . . q q q . . . (.q q . . . (.q q . . . q q (.. . . q q q . . . q q (.. . . . . . . . . . . . . . . . . . . . . . r . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % % % % % ", +"(.. . . (.. q . . . (.. q . . . (.. q . . . (.. (.. . . (.. (.. . . q . (.. . . q . q . . . (.. (.. . . (.. (.. . . (.. q . . . q . u . . . q . q . . . q . (.. . . q . (.. . . q . q . . . (.. (.. _.. (.. q . . (.q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % % % % % ", +"(.. . . (.. q . . . (.. q r . . (.. q . . . (.. (.. . . (.. (.. . . q . (.. . . q . q . . . (.. (.. . . (.. (.. . . (.. q . . . q . q . . . q . q . . . q . (.. . . q . (.. . . q . q . . . (.. q _._._.q . q . (.. q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r . . . . . . . . . . . . . . . . . . . % % % % % % % % % % ", +"_.q q q _.. . q q q _.. _.(.(.(._.. . (.(.(._.. _.(.(.(._.. _.(.(.(._.. _.(.(.(._.. . q q q _.. q (.(.(.q . _.(.(.(._.. . q q q . . _.(.(.(._.. . q q q . . . q q q . . _.q q q . . . q q q _.. (.(.(.(.(.. . q (.q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . r . % % % % % % % % % % ", +"(.. . . (.. q . . . (.. (.. . . q . q . . . (.. q . . . (.. q . . . (.. (.. . . (.. q . . . (.. (.. . . (.. q . . . (.. q . . . q . q . . . q . q . . . q . q . . . q . (.. . . q . q . . . (.. q _._._.q . q . (.. q . . . . . . . . . . . . . . . . . . . r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % % % % % ", +"(.. . . (.. q . . . (.. (.. . . q . q . . . (.. q . . . (.. q . . . (.. (.. . . (.. q . . . (.. (.. . . (.. q . . . (.. q . . . q . q . . . u . q . . . q . q . . . q . (.. . . q . q . . . (.. (.. _.r (.. q (.. . q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % % % % % ", +". (.(.(.. . . q q q (.. _.(.(.(._.. _.(.(.(._.. . q q q _.. _.(.(.(._.. _.(.(.(._.. . q q q _.. _.(.(.(._.. _.(.(.(._.. . q q q . . . q q q . . . _.(._.. . . q q q . . . (.q q . . . q q (.. . . q q q . . . (.q q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % % % % % "}; diff --git a/dockapps/wmmp/src/wmmp.c b/dockapps/wmmp/src/wmmp.c new file mode 100644 index 0000000..88d2787 --- /dev/null +++ b/dockapps/wmmp/src/wmmp.c @@ -0,0 +1,802 @@ +/* + * WMmp - Music Player Daemon client dockapp for Window Maker + * Copyright (c) 2017, 2018 Nicolas Herry + * Copyright (C) 2002 Thomas Nemeth + * + * Based on work by Seiichi SATO + * Copyright (C) 2001,2002 Seiichi SATO + * and on work by Mark Staggs + * Copyright (C) 2002 Mark Staggs + + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + * + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include +#include +#include "dockapp.h" +#include "backlight_on.xpm" +#include "backlight_off.xpm" +#include "parts.xpm" +#include "mpd_func.h" +#include "mouse_regions.h" + +#ifdef linux +#include +#endif + +#define FREE(data) {if (data) free (data); data = NULL;} + +#define SIZE 58 +#define MAXSTRLEN 512 +#define WINDOWED_BG ". c #AEAAAE" +#define MAX_HISTORY 16 +#define CPUNUM_NONE -1 +#define SEPARATOR " ** " + +#define DEFAULT_HOST "localhost" +#define DEFAULT_PORT "6600" +#define PACKAGE "WMmp" +#define VERSION "0.12.5" + +typedef struct MpdInfos { + int shuffling; + int playing; + int paused; + int repeat; + int running; + int volume; + int time; + int track; + char *title; +} MpdInfos; + +typedef enum { LIGHTOFF, LIGHTON } light; + +Pixmap pixmap; +Pixmap backdrop_on; +Pixmap backdrop_off; +Pixmap parts; +Pixmap mask; +int but_stat = -1; +int left_down = 0; +int triangle_loc = 0; +float title_pos = 0; +int motion = 0; +static char *display_name = ""; +static char *light_color = NULL; /* back-light color */ +static unsigned update_interval = 1; +static light backlight = LIGHTOFF; +static MpdInfos cur_mpd_infos; + + +#ifdef linux +# ifndef ACPI_32_BIT_SUPPORT +# define ACPI_32_BIT_SUPPORT 0x0002 +# endif +#endif + + +/* prototypes */ +static void update(); +static void switch_light(); +static void parse_arguments(int argc, char **argv); +static void print_help(char *prog); +static void init_buttons(); +static void button_down(int w,int x, int y); +static void unhighlight_button(int x, int y, int b); +static void track_motion(int x, int y); +static void update_slider(int x); +static void highlight_button(int z); +static void update_triangle(); +static void update_track(int trk); +static void update_time(int tme); +static void update_title(char *name); + +int count; + + +int main(int argc, char **argv) { + XEvent event; + XpmColorSymbol colors[2] = { {"Back0", NULL, 0}, {"Back1", NULL, 0} }; + int ncolor = 0; + struct sigaction sa; + char * test; + char * port; + + sa.sa_handler = SIG_IGN; +#ifdef SA_NOCLDWAIT + sa.sa_flags = SA_NOCLDWAIT; +#else + sa.sa_flags = 0; +#endif + sigemptyset(&sa.sa_mask); + sigaction(SIGCHLD, &sa, NULL); + + /* Parse CommandLine */ + parse_arguments(argc, argv); + + if(!(mpd_host = getenv("MPD_HOST"))) { + mpd_host = DEFAULT_HOST; + } + mpd_host = strdup(mpd_host); + + if(!(port = getenv("MPD_PORT"))) { + port = DEFAULT_PORT; + } + + mpd_port = strtol(port,&test,10); + if(*test!='\0' || mpd_port<0) { + fprintf(stderr,"MPD_PORT \"%s\" is not a postiive integer\n",port); + exit(-1); + } + + /* parse password and host */ + { + char * ret = strstr(mpd_host,"@"); + int len = ret-mpd_host; + + if(ret) { + *ret = '\0'; + if(len) mpd_password = strdup(mpd_host); + mpd_host = ret+1; + } + } + + /* Initialize Application */ + dockapp_open_window(display_name, PACKAGE, SIZE, SIZE, argc, argv); + dockapp_set_eventmask(); + + if (light_color) { + colors[0].pixel = dockapp_getcolor(light_color); + colors[1].pixel = dockapp_blendedcolor(light_color, -24, -24, -24, 1.0); + ncolor = 2; + } + + /* change raw xpm data to pixmap */ + if (dockapp_iswindowed) + backlight_on_xpm[1] = backlight_off_xpm[1] = WINDOWED_BG; + + if (!dockapp_xpm2pixmap(backlight_on_xpm, &backdrop_on, &mask, colors, ncolor)) { + fprintf(stderr, "Error initializing back-lit background image.\n"); + exit(1); + } + if (!dockapp_xpm2pixmap(backlight_off_xpm, &backdrop_off, NULL, NULL, 0)) { + fprintf(stderr, "Error initializing background image.\n"); + exit(1); + } + if (!dockapp_xpm2pixmap(parts_xpm, &parts, NULL, colors, ncolor)) { + fprintf(stderr, "Error initializing parts image.\n"); + exit(1); + } + + /* shape window */ + if (!dockapp_iswindowed) dockapp_setshape(mask, 0, 0); + if (mask) XFreePixmap(display, mask); + + /* pixmap : draw area */ + pixmap = dockapp_XCreatePixmap(SIZE, SIZE); + + /* Initialize pixmap */ + if (backlight == LIGHTON) + dockapp_copyarea(backdrop_on, pixmap, 0, 0, SIZE, SIZE, 0, 0); + else + dockapp_copyarea(backdrop_off, pixmap, 0, 0, SIZE, SIZE, 0, 0); + + dockapp_set_background(pixmap); + dockapp_show(); + init_buttons(); + + update(); + + /* Main loop */ + while (1) { + if(dockapp_nextevent_or_timeout(&event, update_interval*200)) { + /* Next Event */ + switch (event.type) { + case ButtonPress: + button_down(event.xbutton.button,event.xbutton.x, event.xbutton.y); + break; + case ButtonRelease: + left_down = 0; + unhighlight_button(event.xbutton.x, event.xbutton.y, 0); + break; + case MotionNotify: + track_motion(event.xmotion.x, event.xmotion.y); + break; + default: break; + } + } + else { + if((!motion) && (!left_down)) { + update(); + } + else motion = 0; + } + } + return 0; +} + +static void track_motion(int x, int y) { + + if(cur_mpd_infos.running) { + if(left_down) { + motion = 1; + if ((x > 3) && (x < 55) && (y > 41) && (y < 45)) { + fprintf(stderr,"%d %d\n",x,y); + MpdSetVolume((x-4)*2); + update_slider(x-4); + } + } + } +} + +static void unhighlight_button(int x, int y, int b) { + MpdInfos *mpd = &cur_mpd_infos; + + int z; + int q; + + q = 25; + + + if( backlight == LIGHTON) + q = 0; + + mpd->running = MpdStatus(); + + /*if(left_down && !motion) + left_down = 0; + */ + + + if (!b) + z = CheckMouseRegion(x, y); + else z = b; + + if(cur_mpd_infos.running) { + + switch (z) { + + case 0: + if (cur_mpd_infos.repeat != 1) + dockapp_copyarea(parts, pixmap, 135, 81, 10, 6, 44, 5); + break; + case 1: + if (cur_mpd_infos.shuffling != 1) + dockapp_copyarea(parts, pixmap, 148, 81, 10, 6, 44, 12); + break; + case 2: + dockapp_copyarea(parts, pixmap, 105, q, 13, 8, 4, 32); + break; + case 3: + dockapp_copyarea(parts, pixmap, 118, q, 13, 8, 17, 32); + break; + case 4: + dockapp_copyarea(parts, pixmap, 130, q, 13, 8, 29, 32); + break; + case 5: + dockapp_copyarea(parts, pixmap, 142, q, 13, 8, 41, 32); + break; + case 6: + dockapp_copyarea(parts, pixmap, 105, q+13, 9, 9, 4, 45); + break; + case 7: + if (!cur_mpd_infos.playing) { + triangle_loc = 3; + dockapp_copyarea(parts, pixmap, 114, q+13, 21, 9, 13, 45); + } + break; + case 8: + if (!cur_mpd_infos.paused) + dockapp_copyarea(parts, pixmap, 135, q+13, 10, 9, 34, 45); + break; + case 9: + dockapp_copyarea(parts, pixmap, 145, q+13, 10, 9, 44, 45); + break; + } + } + dockapp_copy2window(pixmap); +} + +void highlight_button(int z) { + + switch (z) { + case 0: + dockapp_copyarea(parts, pixmap, 109, 81, 10, 6, 44, 5); + break; + case 1: + dockapp_copyarea(parts, pixmap, 122, 81, 10, 6, 44, 12); + break; + case 2: + dockapp_copyarea(parts, pixmap, 0, 49, 13, 8, 4, 32); + break; + case 3: + dockapp_copyarea(parts, pixmap, 13, 49, 13, 8, 17, 32); + break; + case 4: + dockapp_copyarea(parts, pixmap, 25, 49, 13, 8, 29, 32); + break; + case 5: + dockapp_copyarea(parts, pixmap, 37, 49, 13, 8, 41, 32); + break; + case 6: + dockapp_copyarea(parts, pixmap, 0, 62, 9, 9, 4, 45); + break; + case 7: + dockapp_copyarea(parts, pixmap, 9, 62, 21, 9, 13, 45); + break; + case 8: + dockapp_copyarea(parts, pixmap, 30, 62, 10, 9, 34, 45); + unhighlight_button(0,0,7); + break; + case 9: + dockapp_copyarea(parts, pixmap, 40, 62, 10, 9, 44, 45); + unhighlight_button(0,0,7); + unhighlight_button(0,0,8); + break; + } + dockapp_copy2window(pixmap); + } + +static void button_down(int w,int x, int y) { + + MpdInfos *mpd = &cur_mpd_infos; + int z; + + if(w == 1) left_down = 1; + else if (w == 3) switch_light(); + + mpd->running = MpdStatus(); + + z = CheckMouseRegion(x, y); + + if(cur_mpd_infos.running) { + + if (w == 4) { /* up */ + int tmp = mpd->volume + 5; + if(tmp>100) tmp = 100; + MpdSetVolume(tmp); + update_slider(tmp / 2); + } else if (w == 5) { /* down */ + int tmp = mpd->volume - 5; + if(tmp<0) tmp = 0; + MpdSetVolume(tmp); + update_slider(tmp / 2); + } else { + switch (z) { + case 0: MpdToggleRepeat(); + if(!cur_mpd_infos.repeat) { + highlight_button(0); + mpd->repeat = 1; + } + else { + mpd->repeat = 0; + unhighlight_button(x,y,0); + } + + break; + + case 1: + MpdToggleRandom(); + if(!cur_mpd_infos.shuffling) { + highlight_button(1); + mpd->shuffling = 1; + } + else { + mpd->shuffling = 0; + unhighlight_button(0,0,1); + } + break; + case 2: + highlight_button(2); + MpdPrev(); + break; + case 3: + highlight_button(3); + MpdFastr(); + break; + case 4: + highlight_button(4); + MpdFastf(); + break; + case 5: + highlight_button(5); + MpdNext(); + break; + case 6: + highlight_button(6); + MpdEject(); + break; + case 7: + if (!cur_mpd_infos.playing) { + MpdPlay(); + highlight_button(7); + mpd->playing = 1; + } + break; + case 8: + if (!cur_mpd_infos.paused) { + highlight_button(8); + mpd->paused = 1; + if(cur_mpd_infos.playing) { + mpd->playing = 0; + unhighlight_button(0,0,7); + mpd->playing = 1; + } + MpdPause(); + } + else { + mpd->paused = 0; + if(cur_mpd_infos.playing) + highlight_button(7); + MpdPause(); + } + break; + case 9: + highlight_button(9); + mpd->playing = 0; + mpd->paused = 0; + unhighlight_button(0,0,7); + unhighlight_button(0,0,8); + MpdStop(); + break; + } + } + } + else + dockapp_copy2window(pixmap); +} + +static void init_buttons() { + + MpdInfos *mpd = &cur_mpd_infos; + + AddMouseRegion(0,44,5,54,10); + AddMouseRegion(1,44,12,54,17); + AddMouseRegion(2,4,33,16,40); + AddMouseRegion(3,17,33,28,40); + AddMouseRegion(4,30,33,40,40); + AddMouseRegion(5,42,33,53,40); + AddMouseRegion(6,4,46,12,54); + AddMouseRegion(7,13,46,33,54); + AddMouseRegion(8,35,46,44,54); + AddMouseRegion(9,45,46,53,54); + + mpd->shuffling = 0; + mpd->playing = 0; + mpd->paused = 0; + mpd->repeat = 0; + mpd->volume = MpdGetVolume(); + mpd->running = MpdStatus(); + mpd->title = MpdGetTitle(); + if(cur_mpd_infos.running) + update_slider(cur_mpd_infos.volume/2); + else + update_slider(25); +} + +static void update_triangle() { + + int y; + int x; + + y = 56; + x = 52; + + if(backlight == LIGHTON) y = 63; + + dockapp_copyarea(parts,pixmap,(x + (triangle_loc * 8)),y,6,6,34,20); + triangle_loc++; + dockapp_copy2window(pixmap); + + if ( triangle_loc > 2) triangle_loc = 0; +} + +static void update_slider(int x) { + + int y; + MpdInfos *mpd = &cur_mpd_infos; + + y = 57; + mpd->volume = x*2; + + if(backlight == LIGHTON) y = 67; + if (x == 50) x = 49; + dockapp_copyarea(parts,pixmap,105,62,x,4,5,41); + /*fprintf(stderr,"X = %d\n",x);*/ + dockapp_copyarea(parts,pixmap,105,y,(49 - x),4,x+5,41); + dockapp_copy2window(pixmap); +} + +static void update_track(int trk) { + + char posstr[16]; + char *p = posstr; + int i = 1; + int y; + + y = 81; + + if(backlight == LIGHTON) + y = 98; + + trk++; + + if (trk > 99) trk = 0; + sprintf(posstr, "%02d",trk); + + for (;i<3;i++) + { + dockapp_copyarea(parts,pixmap,(*p - '0')*6 ,y,6,7,(i*6)+38,20); + p++; + + } +} + +static void update_time(int tme) { + + char timestr[16]; + char *p = timestr; + int i = 0; + int y; + int x; + + y = 40; + x = 0; + + if(backlight == LIGHTON) + x = 50; + + if (tme < 6000) + { + sprintf(timestr,"%02d%02d",tme / 60, tme % 60); + } else { + if (tme < 360000) + { + sprintf(timestr, "%02d%02d", tme / 3600, tme % 3600 / 60); + } else { + sprintf(timestr, "%02d%02d", 0 , 0); + } + } + + for (;i < 4; i++) + { + dockapp_copyarea(parts,pixmap,(*p - '0')*5 + x ,y, 5, 9,i<2 ?(i*6)+5:(i*6)+7,18); + p++; + } +} + +static void update_title(char *name) +{ + int i,len,max,pos; + char *title = NULL; + char c = ' '; + + int y; + + y = 0; + + if (backlight == LIGHTON) + y = 17; + + if (name == NULL) + return; + + pos = title_pos; + + len = strlen(name); + + if (len < 6) + { + max = len; + title = strdup(name); + } else { + max = 6; + title = malloc(strlen(name)+strlen(SEPARATOR)+1); + sprintf(title,"%s%s", name,SEPARATOR); + len = strlen(title); + } + + if ( pos >= len) + { + title_pos = 0; + pos = 0; + } + + for (i=0; i 6) + title_pos = title_pos + 0.5; + free(title); +} + +/* called by timer */ +static void update() { + MpdInfos *mpd = &cur_mpd_infos; + + mpd->running = MpdStatus(); + mpd->playing = MpdPlayStatus(); + mpd->paused = MpdPauseStatus(); + mpd->shuffling = MpdRandomStatus(); + mpd->repeat = MpdRepeatStatus(); + mpd->track = MpdGetTrack(); + mpd->time = MpdGetTime(); + mpd->title = MpdGetTitle(); + + if(cur_mpd_infos.running) { + if(cur_mpd_infos.shuffling) + highlight_button(1); + else + unhighlight_button(0,0,1); + if(cur_mpd_infos.repeat) + highlight_button(0); + else + unhighlight_button(48,8,0); + if(!cur_mpd_infos.paused) { + unhighlight_button(0,0,8); + if(!cur_mpd_infos.playing) { + triangle_loc = 3; + unhighlight_button(0,0,7); + } + else + highlight_button(7); + } + else { + mpd->playing = 0; + unhighlight_button(0,0,7); + highlight_button(8); + } + update_slider(MpdGetVolume()/2); + update_triangle(); + update_title(cur_mpd_infos.title); + update_track(cur_mpd_infos.track); + update_time(cur_mpd_infos.time); + } + else { + if (backlight == LIGHTON) + dockapp_copyarea(backdrop_on, pixmap, 0, 0, 58, 58, 0, 0); + else + dockapp_copyarea(backdrop_off, pixmap, 0, 0, 58, 58, 0, 0); + triangle_loc = 3; + mpd->playing = 0; + update_slider(25); + update_triangle(); + } + +} + + +/* called when mouse button pressed */ +static void switch_light() { + switch (backlight) { + case LIGHTOFF: + backlight = LIGHTON; + dockapp_copyarea(backdrop_on, pixmap, 0, 0, 58, 58, 0, 0); + break; + case LIGHTON: + backlight = LIGHTOFF; + dockapp_copyarea(backdrop_off, pixmap, 0, 0, 58, 58, 0, 0); + break; + } + + /* show */ + dockapp_copy2window(pixmap); +} + +static void parse_arguments(int argc, char **argv) { + int i; + int integer; + for (i = 1; i < argc; i++) { + if (!strcmp(argv[i], "--help") || !strcmp(argv[i], "-h")) { + print_help(argv[0]), exit(0); + } else if (!strcmp(argv[i], "--version") || !strcmp(argv[i], "-v")) { + printf("%s version %s\n", PACKAGE, VERSION), exit(0); + } else if (!strcmp(argv[i], "--display") || !strcmp(argv[i], "-d")) { + display_name = argv[i + 1]; + i++; + } else if (!strcmp(argv[i], "--backlight") || !strcmp(argv[i], "-bl")) { + backlight = LIGHTON; + } else if (!strcmp(argv[i], "--light-color") || !strcmp(argv[i], "-lc")) { + light_color = argv[i + 1]; + i++; + } else if (!strcmp(argv[i], "--interval") || !strcmp(argv[i], "-i")) { + if (argc == i + 1) + fprintf(stderr, "%s: error parsing argument for option %s\n", + argv[0], argv[i]), exit(1); + if (sscanf(argv[i + 1], "%i", &integer) != 1) + fprintf(stderr, "%s: error parsing argument for option %s\n", + argv[0], argv[i]), exit(1); + if (integer < 1) + fprintf(stderr, "%s: argument %s must be >=1\n", + argv[0], argv[i]), exit(1); + update_interval = integer; + i++; + } else { + fprintf(stderr, "%s: unrecognized option '%s'\n", argv[0], argv[i]); + print_help(argv[0]), exit(1); + } + } +} + + +static void print_help(char *prog) +{ + printf("Usage : %s [OPTIONS]\n" + "%s - Window Maker MPD dockapp\n" + " -d, --display display to use\n" + " -bl, --backlight turn on back-light\n" + " -lc, --light-color back-light color(rgb:6E/C6/3B is default)\n" + " -i, --interval number of secs between updates (1 is default)\n" + " -h, --help show this help text and exit\n" + " -v, --version show program version and exit\n", + prog, prog); + /* OPTIONS SUPP : + * ? -f, --file : configuration file + */ +} diff --git a/dockapps/wmnd/AUTHORS b/dockapps/wmnd/AUTHORS new file mode 100644 index 0000000..b2342c1 --- /dev/null +++ b/dockapps/wmnd/AUTHORS @@ -0,0 +1,7 @@ +Copyright(c) 1993-1994 by Kresten Krab Thorup +Copyright(c) 1994 by The Australian National University. +Copyright(c) 1997 by Alfredo K. Kojima +Copyright(c) 2000-2001 by Reed Lai +Copyright(c) 2001 by Arthur Korn +Copyright(c) 2001 by Timecop +Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" diff --git a/dockapps/wmnd/COPYING b/dockapps/wmnd/COPYING new file mode 100644 index 0000000..7a1fb3f --- /dev/null +++ b/dockapps/wmnd/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/dockapps/wmnd/ChangeLog b/dockapps/wmnd/ChangeLog new file mode 100644 index 0000000..fdf726a --- /dev/null +++ b/dockapps/wmnd/ChangeLog @@ -0,0 +1,1487 @@ +commit ec1fb9cba4104a245fef32cf0ade858a8c4488a7 +Author: Yuri D'Elia +Date: Thu Jun 14 17:03:18 2012 +0200 + + Bump WMND to 0.4.17. + +commit c96f86d4e2d925049cdf98d10887f8a468d8db9d +Author: Yuri D'Elia +Date: Wed Jun 6 19:27:13 2012 +0200 + + Fix the installation path of wmndrc. + +commit 4445971e5bc19e77972d86cf322eb9bcab107254 +Author: Yuri D'Elia +Date: Wed Jun 6 15:50:16 2012 +0200 + + Doc fixes: follow the suggestions form Alexey I. Froloff + + - Fix FSF address in COPYING, src/list.h + - Recode NEWS to UTF-8 + +commit a1fe24e2267d4cfa4fa2c372156b66383762f02a +Author: Yuri D'Elia +Date: Sun Jan 22 21:15:13 2012 +0100 + + Update configure.ac for the latest autoconf. + +commit 7a38a98e1000cb77055fc92cda94bac297192b79 +Author: Yuri D'Elia +Date: Sun Jan 22 21:14:01 2012 +0100 + + Reformat documentation. + +commit ab81744cb20cb2ad82f5004217e47a57eb380d00 +Author: Yuri D'Elia +Date: Mon Aug 16 17:57:46 2010 +0200 + + Fix build failure on FreeBSD 8.1 + +commit 6521413c6b88e9e8ac810ec1c313b6fddeb45734 +Author: Yuri D'Elia +Date: Mon Jun 7 18:51:47 2010 +0200 + + Spelling fixes. + +commit cb0296c7ebd0aac243148ec9c65610c78f7a75e4 +Author: Yuri D'Elia +Date: Tue Apr 6 18:24:35 2010 +0200 + + Bump to 0.4.15. + +commit 1c04c465a3a22fafb4844883a0f1615c26de118b +Author: Yuri D'Elia +Date: Sun Apr 4 23:40:06 2010 +0200 + + Fix net-snmp compilation errors. + + Define _BSD_SOURCE to unlock u_* types, hidden by _XOPEN_SOURCE. + +commit fe185dfc96c61729e8404b03726c4e3b23c91d4c +Author: Yuri D'Elia +Date: Sun Apr 4 23:39:31 2010 +0200 + + Fix signed/unsigned warning with -Wall. + +commit 240a8f8374e261c17e0af95dcb672b5c8dcf9a11 +Author: Yuri D'Elia +Date: Mon Mar 29 15:59:22 2010 +0200 + + Bump version to 0.4.14 + +commit c9480e5b346c507fa6df8b752e1c7c93e9fd3f59 +Author: Yuri D'Elia +Date: Mon Mar 29 15:47:45 2010 +0200 + + Remove spurious black line at the bottom of the pixmap. + + The pixmap used some data at exactly y=63, which would show up for a 64x64 + size. Due to the sunken edges of most icon themes/black themes, I never + noticed it before. Thanks to Mikael Magnusson for noticing this. + +commit d5893a4a519388bb6695f73a163c7393b12c1153 +Author: Yuri D'Elia +Date: Mon Mar 29 15:34:02 2010 +0200 + + Fix build with strict C99 standards enabled. + +commit d4fedd5e015be0b7cdb4eb3618dc49498f9d1359 +Author: Yuri D'Elia +Date: Thu Nov 19 19:15:12 2009 +0100 + + Fixed build on newer GLIBC versions. + +commit 1c6b3dd6d55b044daba3746368d8d4323b73a6e8 +Author: Yuri D'Elia +Date: Mon Mar 3 01:52:31 2008 +0100 + + Updated documentation/examples/release notes. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1581] + +commit 7d1062184d035bab567edcb2a7691a812dee05ca +Author: Yuri D'Elia +Date: Mon Mar 3 01:50:17 2008 +0100 + + Do not refill the trend window when live updating is enabled. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1580] + +commit f3670a35c9def8ae1a5ca309f35f1c02a1d4b73d +Author: Yuri D'Elia +Date: Tue Jan 29 15:21:51 2008 +0100 + + Do not require 'link_up' in solaris_kstat (but use it if present), + since on OpenSolaris many nic drivers seem to be broken. + Hooray opensource! Wake me up when it's standardized. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1577] + +commit cb3399ef2e4a3f59e1af3019f038ab49270db04e +Author: Yuri D'Elia +Date: Tue Jan 29 02:41:37 2008 +0100 + + Updating THANKS; removing dead urls. Reed, if you can read this, + please get in touch. All your addresses are dead! + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1576] + +commit 06532a30e10ebdda9d7b974be12bd96c0deebe80 +Author: Yuri D'Elia +Date: Tue Jan 29 02:27:05 2008 +0100 + + GPL compliance Act #2: correcty tag all source files. Removed + URLs in the source. Updated URLs to reflect new locations. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1575] + +commit 88757aab05e97c8497243f409fe9baef27449504 +Author: Yuri D'Elia +Date: Tue Jan 29 01:40:59 2008 +0100 + + Do not blink leds when an interface is offline (better behavior for + sine_dummy). Check drifts using milliseconds instead of tenths, + reducing cumulative roundoffs. Remove support for --enable-sine-dummy: + this is now the only supported dummy driver. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1574] + +commit 311ec4affd8b203efb86f298e652e24c6f98bac6 +Author: Yuri D'Elia +Date: Tue Jan 29 00:57:59 2008 +0100 + + Removed support for --enable-snmp-descr. This is workaround for + broken hardware. It shouldn't be needed anymore since Debian's #253109 + and DLink's firmware upgrades. If needed, better _runtime_ probing + should be used instead! + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1573] + +commit e67bb77f06e3673280e1144084604e3e64c95687 +Author: Yuri D'Elia +Date: Tue Jan 29 00:48:51 2008 +0100 + + Removed support for INEXACT_TIMING. We're supposed to show + correct stats after all. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1572] + +commit 05cd8c8f9782fcbce5482c06f8b9751740509526 +Author: Yuri D'Elia +Date: Tue Jan 29 00:43:30 2008 +0100 + + Set trend support on by default. Update documentation to reflect + new features. Updated wmndrc for new config options. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1571] + +commit fe1c34f1ddf8e679c9ca5a2b7cd173eece596008 +Author: Yuri D'Elia +Date: Mon Jan 28 23:23:23 2008 +0100 + + Rewritten trend patch to support live updating, multiple trend windows, + combined I/O, flags and history customization. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1570] + +commit bcdf61140c467b925ba6039db809eb47c6c573cc +Author: Yuri D'Elia +Date: Sun Jan 27 17:17:11 2008 +0100 + + Integrate FreeBSD's driver patch. NOTE: it would be VERY nice to report + those changes back upstream. Thanks for understanding. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1569] + +commit 156df4c2097e88bd31459274d3639dc8ef784a24 +Author: Yuri D'Elia +Date: Sun Jan 27 17:12:40 2008 +0100 + + Rewrite Becker's patch to use just a single pipe, do not kill random + pids, less resources needed. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1568] + +commit a63b6baf8988fa30037e136f0a098b9f9257c400 +Author: Yuri D'Elia +Date: Sun Jan 27 16:57:21 2008 +0100 + + Include Becker's changes for trend support enhancements. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1567] + +commit f1876ec9a98b5dfe81463f42d40b835ceabba51d +Author: Yuri D'Elia +Date: Mon Jan 14 12:44:00 2008 +0100 + + Fix incorrect linux device name lookup (compare the whole device name, + not just the beginning). + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1565] + +commit e0129b455d9f1c59966e0f3ebee76bf47878fc21 +Author: Yuri D'Elia +Date: Sun Dec 16 17:33:07 2007 +0100 + + Fixed buffer overflow in draw_rate, exposed in 64 sistems due to + extended precision in floating point values. Thanks to Andreas + Westin for noticing this. Bumped version to 0.4.13. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1561] + +commit bee01393c48e88ea72ed3f3ba4b9bae5c33ac8c3 +Author: Yuri D'Elia +Date: Tue Jun 6 13:13:16 2006 +0100 + + Remove lsm and spec files from the source distribution. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1277] + +commit 36ffe4959be7104386927397f6b706b12dc1a1df +Author: Yuri D'Elia +Date: Thu Apr 20 15:19:10 2006 +0100 + + Different handling of traces. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1232] + +commit f7cf60312a32d218ea63cc3c405c1e162763a3d1 +Author: Yuri D'Elia +Date: Tue Apr 11 11:12:57 2006 +0100 + + Do not depend on GCC 'inline' behaviour. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1221] + +commit cc1b4661e6455d7ee21e81ed691a31f11dd6f46e +Author: Yuri D'Elia +Date: Tue Apr 11 10:28:51 2006 +0100 + + Fixing debian's #360935 "the proper way": nobody sayd ppp_defs.h + is linux/glibc specific. __u stuff already removed in prev. changes. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1220] + +commit 1f9757ede7e35c1ac32414f8b80f8a4713e8f49f +Author: Yuri D'Elia +Date: Tue Apr 11 09:48:04 2006 +0100 + + Merged documentation from the webpage (README/wmndrc is now up-to-date). + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1219] + +commit a5202d68f850d28bd6e244fc745c638025a487c3 +Author: Yuri D'Elia +Date: Sun Apr 9 23:46:34 2006 +0100 + + Reworked docs in rst syntax. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1218] + +commit 4e4a27fb9e09e0b0009c79886befaa35edb84bda +Author: Yuri D'Elia +Date: Sun Apr 9 22:11:41 2006 +0100 + + Final adjustement of configure.ac (removed acinclude macros, + use conventional naming for configure flags, print final status + on exit, update drivers list/flag names in docs). + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1217] + +commit 82fb7c9067a13ccf8514f1ffad2b1b5f8270d65f +Author: Yuri D'Elia +Date: Sat Apr 8 16:44:54 2006 +0100 + + Remove gpl.[tex]info (there's COPYING already). + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1216] + +commit 1a07c0be022e905815ca8e88f32a07b77ebd9b44 +Author: Yuri D'Elia +Date: Sat Apr 8 16:38:04 2006 +0100 + + Use AC_C_INLINE from newer autoconf instead of hand-made. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1215] + +commit f1beb19e689aad14c58f60a22c4f0156d1dd0059 +Author: Yuri D'Elia +Date: Sat Apr 8 16:15:52 2006 +0100 + + Integrated NetBSD ioctl driver (modified) from Rui Paulo. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1214] + +commit a2fd452451373ca1e5ae442d27256c7753a7a953 +Author: Yuri D'Elia +Date: Fri Apr 7 16:03:47 2006 +0100 + + _init/_term handlers now optional. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1213] + +commit d3d4bf19062a788654ec484d6bbfb12b322176e2 +Author: Yuri D'Elia +Date: Fri Apr 7 15:55:02 2006 +0100 + + Block INT/TERM in during polling. + Added per-driver termination handlers (but not converted any + driver to use it -- thinking about generic_snmp). + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1212] + +commit d82e631c2f607fc32e1a673614a2177524719bb3 +Author: Yuri D'Elia +Date: Fri Apr 7 15:26:18 2006 +0100 + + Missed some configure.ac stuff in last submission. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1211] + +commit 85d9d007e19c2555f75985aec4ff9fa17c395636 +Author: Yuri D'Elia +Date: Fri Apr 7 15:05:34 2006 +0100 + + Handle both 32 and 64bits builds on solaris correctly. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1210] + +commit 16e8c3102d4e8f4c39ff55a02b5d3309e0f276e5 +Author: Yuri D'Elia +Date: Fri Apr 7 15:03:25 2006 +0100 + + configure update (removed some old stuff, use more predef. macros). + bump release to 0.4.12 and copyright dates update. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1209] + +commit 0115ed40b93b6c74b9444c80be695cba31ccb255 +Author: Yuri D'Elia +Date: Fri Apr 7 15:01:25 2006 +0100 + + Uniform include barriers. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1208] + +commit f1080a819f571475ae3af18b8447bdb79f89e2d7 +Author: Yuri D'Elia +Date: Sun Jan 22 12:11:56 2006 +0100 + + Solaris 7 build fixes. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1095] + +commit 597cad50300bde2792351295acf49f724f3f174d +Author: Yuri D'Elia +Date: Thu Nov 10 20:39:46 2005 +0100 + + removed unsafe devices_restart/SIGUSR1 (near to useless anyway). + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1071] + +commit 3b634ff1e948c2f710e9376f68ab83651f2f214d +Author: Yuri D'Elia +Date: Thu Nov 10 20:32:55 2005 +0100 + + auto-changelog renumbers changes correctly. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1070] + +commit 081fe85bacbf95df9d2cc0fca9b679493184fa91 +Author: Yuri D'Elia +Date: Thu Nov 10 20:13:21 2005 +0100 + + reap childs. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 1069] + +commit 7e95da056d75a70fd307aafdfe2b2fee0a3319af +Author: Yuri D'Elia +Date: Thu Oct 21 19:00:42 2004 +0100 + + 0.4.11 release notes and docs. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 618] + +commit c4447616b6b4f4dd408d7dad341709f5e40e07a3 +Author: Yuri D'Elia +Date: Thu Oct 21 18:14:33 2004 +0100 + + Added --enable-trend conditional. Release to 0.4.11. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 617] + +commit cf6015019c5c1d1868bcd575b1fadd03cbfa486a +Author: Yuri D'Elia +Date: Thu Oct 21 18:13:43 2004 +0100 + + Regions are now identified by defines, no longer hardcoded. + Added support for trend (it's amazing how I found another + spare zone to use in the pixmap!). + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 616] + +commit e118084307901bd1ba2e7cb83c385aee1ff630bd +Author: Yuri D'Elia +Date: Mon Sep 13 11:53:48 2004 +0100 + + Fixed generic_snmp by probing both ifName and ifDescr (required + for interoperation with Debian Sarge, closes #253109). + Release bump to 0.4.10 and release notes. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 585] + +commit eb43a0fc2300775ab985d5219f74e0ef50bf8354 +Author: wavemm +Date: Tue Sep 7 18:19:40 2004 +0100 + + Fix some [darn] new autoconf warnings. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 579] + +commit 24fb2bb52653ff0eb5914a42498df13cd6e12fc0 +Author: Yuri D'Elia +Date: Mon May 3 12:02:55 2004 +0100 + + Added a geometry flag (-g). + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 507] + +commit 2e53c987b08d2625f08b81f1ee3d0d482c7345d2 +Author: Yuri D'Elia +Date: Mon May 3 00:43:51 2004 +0100 + + write_conf now writes only changed values. + changed release to 0.4.9. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 506] + +commit c3af2b28d33fb49a3e79b1a9e92393b2e3e7801e +Author: Yuri D'Elia +Date: Sat Apr 10 22:40:51 2004 +0100 + + Pre-prelease lint. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 492] + +commit 06f793d1a38175cfb66212c64f94dc18bdb43053 +Author: Yuri D'Elia +Date: Sat Apr 10 22:21:34 2004 +0100 + + Support for fixed scales in the bytes modes. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 491] + +commit 5b02d968fc1e01eef28c280d1334beaad82b90fd +Author: Yuri D'Elia +Date: Sat Apr 10 19:02:04 2004 +0100 + + testing_dummy_list now skips the initialization if a device name is + provided so the user doesn't think it does something. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 490] + +commit f2cd96e0bc8f49c087980f46067622129a4ee8a5 +Author: Yuri D'Elia +Date: Sat Apr 10 17:55:57 2004 +0100 + + Integrated support for mouse wheel. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 489] + +commit 066d3bfe2a47183f48528bb687d9d1e72eea7c10 +Author: Yuri D'Elia +Date: Sat Apr 10 17:08:02 2004 +0100 + + Documentation about the new linux_proc functionalities. + Bumped release to 0.4.8. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 488] + +commit d98f1414343e7e0efdad38c2ce2207f3a8728a1e +Author: Yuri D'Elia +Date: Fri Mar 12 16:15:52 2004 +0100 + + Support for linux multiple interfaces (separated by commas) + on the command line. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 472] + +commit 60a49490f2db43f56f239af9a0133ec3be555744 +Author: Yuri D'Elia +Date: Fri Mar 12 13:59:56 2004 +0100 + + Added the %style substitution on command triggers. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 471] + +commit 1df7d9a604832975b9f2c58024f0f1b7da2b4748 +Author: Yuri D'Elia +Date: Mon Mar 8 00:30:44 2004 +0100 + + linux_proc_get should check for fopen failures. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 470] + +commit 2d81b83683e26f33fbff5a2b05d9a41190088ffc +Author: Yuri D'Elia +Date: Sun Nov 16 04:49:16 2003 +0100 + + implementazione parziale della gestione della scala fissa. + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 356] + +commit 24f30384febbacb8493a2b141f0f0df932a5a47d +Author: Yuri D'Elia +Date: Sun Nov 16 01:52:52 2003 +0100 + + p4 don't need this crap + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 355] + +commit 78479b83deb6b6fb2e0136ed26a0a7ad4ca725ae +Author: Yuri D'Elia +Date: Mon Jun 9 00:36:49 2003 +0100 + + Some notes about new configure flags. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 223] + +commit 4d6713d5972174e9725e983d891b8683f4fbd4c3 +Author: Yuri D'Elia +Date: Mon Jun 9 00:30:00 2003 +0100 + + Old release transition notes. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 222] + +commit 31934078ac1abbb0babd9fd4d0a1198f554b93e9 +Author: Yuri D'Elia +Date: Mon Jun 9 00:24:03 2003 +0100 + + Fixed the copyright informations to match GPL requirements. Changed the url + to the reed site. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 221] + +commit 52073800e45de86aedcf9209957b675a41cc206e +Author: Yuri D'Elia +Date: Mon Jun 9 00:21:08 2003 +0100 + + Changed the link to the original Reed site (avoid the redirection). + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 220] + +commit a8803c4d60cd481bbff9740be96be086b5c2ee23 +Author: Yuri D'Elia +Date: Thu Jun 5 08:48:52 2003 +0100 + + New Ideas from Jeff. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 219] + +commit 66f732a633e69719f8efa255e1c64479809449af +Author: Yuri D'Elia +Date: Wed Jun 4 09:36:10 2003 +0100 + + Notes for afterstep users. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 206] + +commit 9d5a0c76c7a44289423e950a4303d9e6b6b178cc +Author: Yuri D'Elia +Date: Wed Jun 4 09:34:14 2003 +0100 + + Updated the embedded wmndrc. Added the -n switch. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 205] + +commit 5841927a8a5739c9746d145772eb9f4f5487a8c0 +Author: Yuri D'Elia +Date: Wed Jun 4 09:29:54 2003 +0100 + + Fixed some spelling errors. Added the description about "name". Changed the + description for "smooth". + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 204] + +commit d11976f4c6bb7ae1e9b7a48b33d59b6e9e04502c +Author: Yuri D'Elia +Date: Wed Jun 4 09:07:49 2003 +0100 + + Some release notes about 0.4.7. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 203] + +commit 8fc19e97dd13186e9611cf602a38106664575c52 +Author: Yuri D'Elia +Date: Wed Jun 4 09:07:37 2003 +0100 + + New release 0.4.7. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 202] + +commit 5f5227514aabd336d49fb5f544890a715c9b5193 +Author: Yuri D'Elia +Date: Wed Jun 4 08:48:32 2003 +0100 + + The 'max' history must be cleaned with 'zeroes', not with the current + packet/bytes counters. It is calculated later automatically. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 201] + +commit 35c0914d0f518c33a0883aec5dbd703c81318b94 +Author: Yuri D'Elia +Date: Wed Jun 4 08:39:13 2003 +0100 + + Some more code cleanup. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 200] + +commit 6ec0416e2355e42304cdcd6b983712cfd05fc4dc +Author: Yuri D'Elia +Date: Wed Jun 4 08:25:08 2003 +0100 + + Some code cleanup. Fixed a bad cast. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 199] + +commit d6e011b9bd32cde8a002ada67299487d19a7cc31 +Author: Yuri D'Elia +Date: Wed Jun 4 08:24:41 2003 +0100 + + Some code cleanup. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 198] + +commit 3158f3000c68140987dc868208f57cf0164766ea +Author: Yuri D'Elia +Date: Tue Jun 3 19:25:47 2003 +0100 + + Fixed the wmnd.scroll bug again for INEXACT_TIMING. Note also that I do no + longer 'smooth' packets (quite useless). I can now use theyr values to make the + leds blink happy again! + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 197] + +commit 2f3830ddf19c568ef4e0a2b5f46015a071cb4287 +Author: Yuri D'Elia +Date: Tue Jun 3 19:20:46 2003 +0100 + + Fixed a bad cast in scale. Use wmnd.scroll instead of the fixed '10' value + for average stats. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 196] + +commit c90a6a353cde42415c52eb6de22605691995ac80 +Author: Yuri D'Elia +Date: Tue Jun 3 16:49:23 2003 +0100 + + Removed the 'twinkling' problem when averaging. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 195] + +commit 214568954195021aecd7a290394cb693c58fd961 +Author: Yuri D'Elia +Date: Tue Jun 3 16:34:52 2003 +0100 + + Use the real time gap beween updates to scale the metrics. This will give + extra precision, but it may cause values to 'twinkle' even if -S is specified. + Use res_name and res_class instead of name/class to not clash with c++ "class" + keyword. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 194] + +commit b4b05f186cb79178f6adc6d949b483c370fa0cb7 +Author: Yuri D'Elia +Date: Tue Jun 3 14:18:57 2003 +0100 + + Better formatting of the --help messages. Swich some code to use + the AC_ARG_EC macro. Added the INEXACT_TIMING macro upon request. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 193] + +commit 06de0830142f6e3b40a2d1518b919e990d749772 +Author: Yuri D'Elia +Date: Tue Jun 3 13:32:05 2003 +0100 + + New function AC_ARG_EC for reducing the duplicate code inside configure.ac. + Reformatting of the help strings is now correct (no line wraps). + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 192] + +commit adc546f9ab71da87bf189f35ebccac349eff5357 +Author: Yuri D'Elia +Date: Tue Jun 3 13:30:36 2003 +0100 + + Some notes about the driver subsystem. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 191] + +commit bbf0cb9e9d690dea3c068fcf8965bf495ffe31a7 +Author: Yuri D'Elia +Date: Tue Jun 3 10:58:46 2003 +0100 + + Reintroduced the time-based check in order to remove cumulative errors. + Probably beat_gap should be used to do perfect rates. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 190] + +commit 3c7df90bc57e2b6efc786b486b82d09b97c38cfc +Author: Yuri D'Elia +Date: Tue Jun 3 10:29:24 2003 +0100 + + Spelling errors on some comments. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 189] + +commit 11cab93c9f8129d147edb95b41f4b287f8af8fc3 +Author: Yuri D'Elia +Date: Sat May 31 22:29:41 2003 +0100 + + Added the ability to change the WMND class/title name, in order to separate + icons into the wharf bar. Requested by "David" . + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 188] + +commit 1e41407dff7c3f259fcf3e81d3ff9b74ce3302c1 +Author: Yuri D'Elia +Date: Sat May 31 22:22:15 2003 +0100 + + Some spell fixes. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 187] + +commit 1f57af18f32aec0f0829e0caa5b8c28993eaa728 +Author: Yuri D'Elia +Date: Thu May 15 17:03:05 2003 +0100 + + News about WMND 0.4.6. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 179] + +commit 3897e5d43402035007c061a9148d95fbf0677bd8 +Author: Yuri D'Elia +Date: Thu May 15 17:02:51 2003 +0100 + + Descriptive issues about ifDescr/ifName (generic_snmp). + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 178] + +commit e0724abe6253d3febe0d6fce81e86555320cb009 +Author: Yuri D'Elia +Date: Thu May 15 16:44:11 2003 +0100 + + Use ifName instead of ifDescr by default but allow the user to switch back + in case it uses a buggy firmware vendor. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 177] + +commit d7cdd2c82b010af05072039f06c8f14be5316bf6 +Author: Yuri D'Elia +Date: Thu May 15 16:43:03 2003 +0100 + + Bumped version to 0.4.6 and added an ifName/ifDescr configuration flag. + See the README for more informations. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 176] + +commit e53170cd70c149a84653ddefea77e61dbad24664 +Author: Yuri D'Elia +Date: Thu May 15 16:16:17 2003 +0100 + + silly typo that makes some test implementations spiffy. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 175] + +commit 38facb27dd44ec19dc59685f90e7e513f1df877a +Author: Yuri D'Elia +Date: Wed Apr 9 23:06:36 2003 +0100 + + notes about sine-dummy. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 120] + +commit becb2ff33ca0efb7875542b9844aeb518f026ac7 +Author: Yuri D'Elia +Date: Wed Apr 9 23:05:03 2003 +0100 + + Changed some drivers to use devices_append. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 119] + +commit d9e44899dbe9de10de411e314a4dac2653505716 +Author: Yuri D'Elia +Date: Wed Apr 9 22:48:34 2003 +0100 + + Cast checks. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 118] + +commit e2b0c24fd572efede5d2a5807a07088e52ca5d5f +Author: Yuri D'Elia +Date: Wed Apr 9 22:33:08 2003 +0100 + + Some packager's notes. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 117] + +commit b5da869e92227044631d169810c5e7a10e4e57aa +Author: Yuri D'Elia +Date: Wed Apr 9 22:18:31 2003 +0100 + + Notes about driver parameters (driver_interface, or -I). + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 116] + +commit 503e15cdf8a5062293645cb94d48da29afb628e1 +Author: Yuri D'Elia +Date: Wed Apr 9 22:17:57 2003 +0100 + + Notes about generic_snmp. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 115] + +commit b9f61c406ff9148decd31a096d6ef5fc953417ae +Author: Yuri D'Elia +Date: Wed Apr 9 13:34:40 2003 +0100 + + Informations about the generic_snmp driver. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 114] + +commit 64bbea72d2044aa335020cfbf3a40621c1677fb4 +Author: Yuri D'Elia +Date: Wed Apr 9 12:07:05 2003 +0100 + + News about the sounding new release. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 113] + +commit f2ed72853aa53703128f2cdd03d96c91253a8720 +Author: Yuri D'Elia +Date: Wed Apr 9 12:06:39 2003 +0100 + + config.h.in is now handled correctly by automake. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 112] + +commit 0cef2a2c60f6ddb788f4e0a39c6b667a50515d49 +Author: Yuri D'Elia +Date: Tue Apr 8 19:25:00 2003 +0100 + + Ignore vim swap files. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 111] + +commit b3048d165e3ae1ea4fcd789b620aba50bad4f05d +Author: Yuri D'Elia +Date: Tue Apr 8 19:24:43 2003 +0100 + + Added an helper functions to push devices into the devices list, and + added the generic_snmp driver. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 110] + +commit 7827faacf5b50beea918fe50af7dd678440240c9 +Author: Yuri D'Elia +Date: Tue Apr 8 19:24:00 2003 +0100 + + Test for generic_snmp that uses net-snmp >= 5 + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 109] + +commit f1f1213f13c4fcfdde6191ec83ef6013b813a08d +Author: Yuri D'Elia +Date: Tue Apr 8 19:23:35 2003 +0100 + + Added the generic_snmp driver into the drivers list. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 108] + +commit 7b4f246cfe006b95ecfb7f05a7bd6b961a639987 +Author: Yuri D'Elia +Date: Mon Feb 10 12:59:29 2003 +0100 + + Changed the website (www.hydra.ubiest.com) to the new domain www.yuv.info. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 91] + +commit 3ec7116af3cd32d09c5335a7a08ee5decd35e46d +Author: Yuri D'Elia +Date: Mon Jan 27 21:56:08 2003 +0100 + + added config.h.in to the distribution (manually!) + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 90] + +commit 3550370b12fa833a1636c632adb4d7ad38866afd +Author: Yuri D'Elia +Date: Sun Jan 19 19:39:40 2003 +0100 + + Added addictional compilations notes for IRIX. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 83] + +commit 5dd5a1e946143cb5eb280cf8701e3959f3816c14 +Author: Yuri D'Elia +Date: Tue Jan 14 17:57:34 2003 +0100 + + changed the revision number to 4a + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 82] + +commit 2b0f188b4d87ecc017f99d96fe1deb87a5db684a +Author: Yuri D'Elia +Date: Tue Jan 14 17:49:42 2003 +0100 + + use configure-ed values for __u8 and __u32 + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 81] + +commit 7fedc425a7c68b75c5a5e96955cfe4ed844b002d +Author: Yuri D'Elia +Date: Tue Jan 14 17:49:04 2003 +0100 + + Added extended checks for determining a correct 32 bits type + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 80] + +commit 2f6e4fa830db33239edba073cb193261e5ee74ac +Author: Yuri D'Elia +Date: Sun Jan 12 17:20:36 2003 +0100 + + ChangeLog.0 must be included into the distribution + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 79] + +commit 677f4d8dc215707005a63623e18d86a3bace973d +Author: Yuri D'Elia +Date: Sun Jan 12 17:18:17 2003 +0100 + + WMND rc, not WMND config + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 78] + +commit e7dfb2e3fd4330ecf76b5cd181e124f095218b8c +Author: Yuri D'Elia +Date: Sun Jan 12 17:11:37 2003 +0100 + + ephemeral bug :), display the correct name when forcing an interface using linux_proc + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 77] + +commit ead994b011417f0d2b658b7f524edb3bf883352f +Author: Yuri D'Elia +Date: Sun Jan 12 16:57:29 2003 +0100 + + added infos about testing_dummy + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 76] + +commit 744d755ec0cbfbae0adc3aad134a42f0aef51715 +Author: Yuri D'Elia +Date: Sun Jan 12 16:57:14 2003 +0100 + + corrected the url of PCP + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 75] + +commit 42c62be62f84f309a1358c49c1f7a04980f59ce4 +Author: Yuri D'Elia +Date: Sun Jan 12 16:49:39 2003 +0100 + + updated docs about irix_pcp + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 74] + +commit 64cf87591bc4aedd32c52e773b0a97d9017b7d6f +Author: Yuri D'Elia +Date: Sun Jan 12 16:40:54 2003 +0100 + + driver subsystem lacks of flexibility + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 73] + +commit 7b1c5a33fff8b120e25f03831a6574ac571bf5f6 +Author: Yuri D'Elia +Date: Sun Jan 12 16:40:31 2003 +0100 + + added infos about irix_pcp + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 72] + +commit 571c06be6d4bd9fe2bfe35501981cbab6bffbc49 +Author: Yuri D'Elia +Date: Sun Jan 12 16:40:06 2003 +0100 + + added infos about the new pixmap, and the irix driver + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 71] + +commit b00e4a2a5459c5ee354671468206f53f8a008bc3 +Author: Yuri D'Elia +Date: Sun Jan 12 16:13:10 2003 +0100 + + documentation about -Q + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 70] + +commit 16ad40a65c7b2948ba2d0e4f282ba8bb391f09a7 +Author: Yuri D'Elia +Date: Sun Jan 12 16:12:15 2003 +0100 + + device timers are now handled externally so the "timer" now works with any + driver indipendendly. + However, the initial device timestamp resposability is still delegated + to the driver, so you need at least a device restart to the "timer" to appear. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 69] + +commit 6f929378b12c6229dee58454813a5aaee51c7696 +Author: Yuri D'Elia +Date: Sun Jan 12 15:56:50 2003 +0100 + + Added -Q to contrast with -q + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 68] + +commit aca3fbad38874df2548dd77629858773c73da9ce +Author: Yuri D'Elia +Date: Sun Jan 12 15:50:24 2003 +0100 + + re-fixed the led control mechanism + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 67] + +commit bcb0b35f9bfd05a8039b07a34bc5dd1f2ed4764a +Author: Yuri D'Elia +Date: Sun Jan 12 15:42:55 2003 +0100 + + Completed the implementation of the IRIX PCP driver. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 66] + +commit c6b9b98f1f2228d100080757290a0374ae2504ab +Author: Yuri D'Elia +Date: Sun Jan 12 14:38:01 2003 +0100 + + Added checks for irix_pcp + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 65] + +commit fef3f0bb5de02cf20b3187a4d73647ae450de509 +Author: Yuri D'Elia +Date: Sun Jan 12 14:33:15 2003 +0100 + + Cosmetic fixes (removed the usage of gettimeofday). + Corrected the implementation for the graph smoothing. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 64] + +commit ed48e0697598287ce580ca913b9ff73cfdd0ec1e +Author: Yuri D'Elia +Date: Sun Jan 12 14:29:45 2003 +0100 + + changed the main pixmap, reducing the number of used colors in the chart. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 63] + +commit 43de5f35188528ef5c984572b9d03b31daeaf5ce +Author: Yuri D'Elia +Date: Sun Jan 12 14:26:14 2003 +0100 + + master.xpm + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 62] + +commit 3b79a2a38dadca6a60e6f6ce808c3f847340bfec +Author: Yuri D'Elia +Date: Sun Jan 12 14:26:00 2003 +0100 + + README.master.xpm + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 61] + +commit 48304522e1e915310e7c940c3db900b913d2c083 +Author: Yuri D'Elia +Date: Wed Jan 8 15:57:39 2003 +0100 + + a good value for smooth is 0.1, not 0.01. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 60] + +commit 5bfb717bb0748a04f29822c0ed58887a71f9926a +Author: Yuri D'Elia +Date: Wed Jan 8 15:51:31 2003 +0100 + + fixed average sampling (it would only work for the lastest device avaible + and it would report wrong speeds if avg_steps > 1) + indentation. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 59] + +commit 97d8e8a82cfb16e10ffdba7652081cd594a55237 +Author: Yuri D'Elia +Date: Wed Jan 8 12:22:01 2003 +0100 + + better checks for bsd net/if_mib.h inclusion + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 58] + +commit 14c1cb74c13a6c3fd29f188527775f05d447e0b7 +Author: Yuri D'Elia +Date: Wed Jan 8 11:12:12 2003 +0100 + + added the smoothing factor implementation. + changed sigtly the sampling loop to not use gettimeofday (less timing/rounding + errors). + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 57] + +commit 216cd764be52349e6f5a310d86fac899f62e3d3d +Author: Yuri D'Elia +Date: Wed Jan 8 11:10:04 2003 +0100 + + added the smoothing factor, some indentation + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 56] + +commit a4076377e9a3b581358da4c49299adb616649369 +Author: Yuri D'Elia +Date: Wed Jan 8 11:08:29 2003 +0100 + + added "smooth" inside the rc file + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 55] + +commit a4cfafa754c996cf18deb632e4e47bee65944dd1 +Author: Yuri D'Elia +Date: Wed Jan 8 11:07:23 2003 +0100 + + informations about smoothing factor + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 54] + +commit f291ceba4c80e1fd73ca0c30663adcf7678f87eb +Author: Yuri D'Elia +Date: Tue Jan 7 20:12:33 2003 +0100 + + adding cvs Id number + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 53] + +commit 6907c7cba9dc4ddb0f12db2a38114125e91ce281 +Author: Yuri D'Elia +Date: Tue Jan 7 20:11:55 2003 +0100 + + added infos about lines and IRIX/AIX's compilers + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 52] + +commit 6c8b72b5382b772d8b44594808ad5b0933b8a3a2 +Author: Yuri D'Elia +Date: Tue Jan 7 20:10:55 2003 +0100 + + added lines to the defauls series of display modes + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 51] + +commit c18949ebb26ab3210e6e9f3fd4d50da6ef2ee6e9 +Author: Yuri D'Elia +Date: Sun Dec 22 19:56:27 2002 +0100 + + new display mode: lines + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 50] + +commit 11f4b7481c4bc7b65a317991e5b2c12b0eee62d2 +Author: Yuri D'Elia +Date: Sun Dec 22 18:52:11 2002 +0100 + + linux_proc can be forced to monitor anything + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 49] + +commit 6ae38703e1711c5e33ad29aca047e6bfe86ffd3b +Author: Yuri D'Elia +Date: Sun Dec 22 18:51:53 2002 +0100 + + some spelling fixes + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 48] + +commit 94f62449527784c1146ec231213bfa01bb730a1a +Author: Yuri D'Elia +Date: Fri Dec 20 19:06:40 2002 +0100 + + imported the new definitions for ppp drivers + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 47] + +commit 2a1321ede95529eedc71515bd70283f2213196d9 +Author: Yuri D'Elia +Date: Fri Dec 20 18:52:23 2002 +0100 + + removed some useless variabled + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 46] + +commit 15ad30113c9c9b06cb51ef46bbe4e0e48d1baa10 +Author: Yuri D'Elia +Date: Fri Dec 20 18:51:13 2002 +0100 + + added the enchanged testing driver + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 45] + +commit 996685cec7219072d13ead3a9ff067455ed60f05 +Author: Yuri D'Elia +Date: Fri Dec 20 18:49:37 2002 +0100 + + I no longer use the msg_dbg macro with a variable number of arguments. + I use a static inline function instead. + + Fixed some syntax and indentation. + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 44] + +commit a348ed17956704367785e6faee5cc9b3c9fcc9a2 +Author: Yuri D'Elia +Date: Fri Dec 20 15:46:16 2002 +0100 + + better syntax, management of __inline + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 43] + +commit db5451c051fa4b224335aefc830b2928b05d42a0 +Author: Yuri D'Elia +Date: Fri Dec 20 14:49:22 2002 +0100 + + ignore auto* files + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 42] + +commit 832ae489ba11b2a5e35836faea03ad8d78bdfd72 +Author: Yuri D'Elia +Date: Fri Dec 20 11:30:31 2002 +0100 + + even more regenerated files, adding ignores + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 41] + +commit 53c382adf1b652b6b9b497a52b0c73b6182aef45 +Author: Yuri D'Elia +Date: Fri Dec 20 11:30:31 2002 +0100 + + even more regenerated files, adding ignores + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 40] + +commit b09f424c85a5e93c362f486f6393670f397a04f0 +Author: Yuri D'Elia +Date: Fri Dec 20 11:26:12 2002 +0100 + + more regenerated files + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 39] + +commit b7213aa90a87718d8a28c8809247422c4754e5c4 +Author: Yuri D'Elia +Date: Fri Dec 20 11:23:59 2002 +0100 + + removing some autogenerated files + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 38] + +commit 8524e673d115c6a42a8c185485b35c71e7a79a79 +Author: Yuri D'Elia +Date: Fri Dec 20 11:19:38 2002 +0100 + + Initial revision + + [imported from CVS by cvs2p4 at 2003/11/15 23:23:15] + + [git-p4: depot-paths = "//depot/wmnd/main/": change = 37] diff --git a/dockapps/wmnd/ChangeLog.0 b/dockapps/wmnd/ChangeLog.0 new file mode 100644 index 0000000..0577818 --- /dev/null +++ b/dockapps/wmnd/ChangeLog.0 @@ -0,0 +1,312 @@ +2002-11-29 wave++ + + * AUTHORS: sync with Reed's version. + +2002-10-23 wave++ + + * configure.ac: inserted stubs for using automake 1.4 for packaging. + * doc/Makefile.am: now builds correctly the info file! + * example/Makefile.am: now installs correctly wmndrc. + +2002-08-27 wave++ + + * configure.ac: I now use AC_HELP_STRING to format help strings. Done + some fixes around the code. + * acinclude.m4: now using directly autoconf generated variables + +2002-08-20 wave++ + + * configure.ac: changed release to 0.4.4 + * wmnc.c: signals are no longer an error + * messages.c/h: a filter to displayed messages is now avaible + * wmnc.c: added the -q switch + * cfgdata.c: added the quiet option + * wmnd.1 wmndrc: added the description about -q/quiet + +2002-08-06 wave++ + + * wmnd.1: Added some infos about signals and the new -S flag + (as Arthur is getting late). + * wmndrc: ispell-ed! + +2002-07-25 wave++ + + * drivers.c: fixed a race condition on freebsd_sysctl_list which would + return an invalid (+1, or more) number of devices. + +2002-07-22 wave++ + + * drivers.c: freebsd_sysctl now monitors 'lo' only when specified + +2002-07-12 wave++ + + * wmnd.h: Removed the now useless scale function pointer. Added two new + buffers for the average sampling. + * wmnd.c: Added the ability to sample a larger time for the speed + indicator (specified in number of samples). Removed some useless code + inside the X loop. + * drivers.c: Now the name of each driver mustn't deallocated by the + destructor. wmnd driver subsystems takes care of that when needed. + * wmnd.c: sending a SIGUSR1 to wmnd will make wmnd to restart all drivers + without quitting. wmnd won't list interfaces again but restart _each_ + interface manually. This makes this signal useful only for some drivers + (actually only solaris_kstat) that performs initialization on a + per-interface basis. + +2002-07-03 wave++ + + * wmnd.1: Arthur Korn sent new documentation + +2002-07-01 wave++ + + * wmnd.c: added a check for wmnd.speed == 0 to fix math exceptions, + fixed the bad speed division that was stuck with integral seconds. + +2002-06-25 wave++ + + * cfgdata.c: changed the default scrolling speed back to one second. + +2002-06-15 wave++ + + * AUTHORS: updated the position of the WMND debian package. + * configure.ac: changed release to 0.4.3 + * wmnd.1: Arthur Korn sent updated documentation + +2002-06-14 wave++ + + * drivers.c: freebsd_sysctl driver now works again on all MIB interfaces. + +2002-06-12 wave++ + + * drivers.c: the freebsd_sysctl driver now doesn't make wmnd exit when + the sysctl call fails. + * AUTHORS: updated the status of Arthur Korn. + +2002-06-11 wave++ + + * display.c, configure.ac: Added new visual mode: mgraph + +2002-06-10 wave++ + + * drivers.c: Integrated some differences inside freebsd_sysctl from the + freebsd official port. + * wmnd.1: integrated the new manpage from Arthur Korn. + * configure.ac: drivers can now be manually forced. + * README: added the full list of driver names and display modes. + +2002-05-29 wave++ + + * changed a bit the driver detection scheme (driver names are now defined + into configure.ac directly) + * added the ability to use tenth of seconds instead of seconds for + the scrolling graph. Experience now the fluid-motion(tm)! + * added generalized message functions + * wmnd can now be built using a c++ compiler (export CC=g++) + * changed release to 0.4.2 + +2002-05-28 wave++ + + * configure.ac: minor corrections for proper kstat configuration + under autoconf 2.53 + * README: added notices about automake 1.5 + * acinclude.m4: updated the compiler detection + +2002-05-22 wave++ + + * REAME: minor corrections + * NEWS, configure.ac: changed release to 0.4.1 + +2002-05-21 wave++ + + * drivers.c: fixed all occurences of the old enum + solaris_fpppd_connstatus inside the solaris_fpppd driver. + +2002-05-17 wave++ + + * README: corrected some errors and written a little section about + rebuilding wmnd using the new configure script + +2002-05-08 wave++ + + * integrated the autodock patch from Michael Shigorin + * wmnd files are now compliant to GNU packaging standards + +2002-05-03 wave++ + + * now using autotools for automatic compilation and installation + * partial integration with 0.4.0 by Reed + +2001-XX-XX wave++ + + * Check for NULL when displaying "open display" failure that would + crash wmnd on some systems with gcc3 + * Cleaned a bit the drivers code (drivers.(c|h)) + * General code cleanup (less warnings) + * You can now eliminate unnecessary display modes in config.h + +2001-XX-XX wave++ + + * Now capturing also SIGTERM. + * solaris kstat driver now also checks for link_up in the devices + statistics. wmnd now recognize device status as it always had to do. + +2001-XX-XX wave++ + + * Added file checking in linux_proc_list + * Wmnd now handles SIGINT for correct device deallocation + * Separation of drawing functions in display.(c|h) + * Corrected bug in strval_fe + * Now usage shows also builtin visualizations + * Added new vis mode: wmwave + * Added new vis mode: sepgraphs + * Added new vis mode: twisted + * Modified original pixmap (inserted shaded graphs, old pixmap is avaible + as src/old-master.xpm) + * Added new vis mode: charts + * Dockapp struct now contains pixel color ids for standard values + * Extended pixmap for new needle vis, corrected minor bug in vis charts + * Added new vis mode: needle (this one is really cool :)) + +2001-XX-XX wave++ + + * Some bugfixes in solaris drivers (testing_dummy, solaris_kstat) + * Linux proc driver finally reported to linux, I can't report linux ppp + since my linux machine hasn't any ppp connections. Ask to reed :) + * Solaris_fpppd works on any streams compatible kernel (some *bsd and svr4), + also solaris_kstat works in kstat compatible kernels (some *bsd). + * Fine tuneup of makefile version detection, now we can change the wmnd + version only touching src/wmnd.h + +2001-04-26 wave++ + + * 26/04/2K+1 wave++ has restarted coding: first fix: now a specific device + for a driver can fail without removing the entire driver. + * uhm, too many comments here :), I start feeling the need of cvs :). + However: minor modification in main: now when a device disconnects the + graph won't be fucked up with gigantic values (eg: 2450-2500 on unsigned) + * started to develope a kstat driver for solaris. I think also that + solaris_fpppd driver with some little hack will work also on linux (just + installing mandrake to test it :)) + * kstat driver completed, how cooool :), new fix for graph scale fuckup with + random values ( wmnd.c::main ) + * It's a good idea to not undefine TESTING_DUMMY in config.h, so + when wmnd can't find any device, at least shows the dummy device "off" + * Corrected minor bug on MAX history calculation ( has someone noticed that + this changelog is in reverse order?) + * Minor correction with makefile (directive clean) + +2000-XX-XX wave++ + + * Sorry for new code reindentation, but + I'm a c++ developer so I've found this pretty ugly :) + * Now main driver selection is done in config.h, + warning: some drivers cannot tell the devices list. + contact me for any portability issues + * removed #include : it's a portable function but it's definition + is in stdio.h (getopt.h it's usually for gnu version) + * removed asm/bitops.h and replaced with bits.c/h for more portability + see bits.h for infos, functions names terminate with a trailing "bit" + * added config.h, devices.h, devices.c, and created 2 drivers, including + a dummy test driver for debugging purposes + * removed original device handling functions and (for now) moved to drivers.c + * moved preprocessor defines in wmnd.h + * added definition of MAX in wmnd.h + * urgh! beat.c captures a SIGALRM and in the same time we call usleep? + removed beat.* and replaced with a time() check (why using microsecond when + we need only simple seconds?) + * added CFG_SHOWTIME for any device, toggle with main region with Button3 + * added command line attributes and config file values for any customizable + part of wmnd + * added more responsiveness to the app :)), look at the X loop + * modifyed conf_read so now existing values that differs from standard + won't be overwritten + * now usage shows also built-in drivers + * the draw_error function is now obsolete. still there, commented out + +2000-XX-XX Reed Lai + + * Wrong scale at 1K, 1M, and 1G. + * Wrong display scale when (rx_max + tx_max) is bigger than the value of + the unsigned long int. + +XXXX-XX-XX Reed Lai + + * User configurable items in wmnd source file (.wmndrc) + rx/tx graph color, status refresh interval, graph scroll speed + user scripts for 3 buttons, PPP conection time. + +XXXX-XX-XX Reed Lai + + * Changed time gap method from time() to signal driven. This + change resolves the race problem when the system wakes up from + hibernation mode. + * The values of max-meter and rate-meter are defaultly scaled by + base 10 floating point division. K=1000 (10e3), M=10000000 (10e6), + G=1000000000 (10e9). Using the option -b scales bitwise instead. + K=1024 (2^10), M=1048576 (2^20), G=1073741824 (2^30). There is no + floating point in binary mode. + * Displayed device name defaults to short format. Right click on + the device name to toggle between full name and short name. For + example, tunl1 is normally shortened to tun1, but in full name + mode, tunl1 is displayed. + * Added a new graph display mode that is similar to wmnet, right + click on the main display area to switch modes. + * Now there are two modes for max-meter. Default shows the + maximum value from screen graphed. The second mode shows the + maximum value from historical record since wmnd is started. + Left click on max-meter to switch modes, right click on + max-meter to toggle the display of the max-meter. + * Fixed the overflow bug when reading a statistics value from + /proc/net/dev that's larger than INT_MAX by replacing a + long integer with an unsigned long integer. + +XXXX-XX-XX Reed Lai + + * One more bug has been fixed. Replace line 1200 in wmnd.c + while (!stat_devices[j].name[0] && j < MAX_STAT_DEVICES) { + with + while (j < MAX_STAT_DEVICES && !stat_devices[j].name[0]) { + This bug allowed stat_devices[j] to be checked even if j is out + of the range of stat_devices[], and causes a segmentation fault + on some system. Thanks to Ben (rain@insane.loonybin.net) + +XXXX-XX-XX Reed Lai + + * The size of the device name buffer from WMiFS is 4. In other words, + if there are more than 4 network devices on system, wmnd will crash. + I do not know what the reasonable number is. Just change 4 to 32 if + You need more. Theoretically, it will support up to 32 devices. + Thanks to Paul (paul@luon.net) + +XXXX-XX-XX Reed Lai + + * Changed the size of reading buffer to 256 bytes. The original + size is 128 bytes, and will cause segmentation fault when the + line from /proc/net/dev or /proc/net/route is longer than + 128 bytes. Thanks to John Bafford (dshadow@zort.net) + +XXXX-XX-XX Reed Lai + + * Corrected the AddMouseRegion for mouse-triggered user script. + Thanks to Anstinus (http://www.acm.rpi.edu/~anstinus/) + + * Added codes to skip the statistics reading of invalid device "irda?." + The invalid entries in /proc/net/dev look like this: + ... + irda0: No statistics available. + irlan0: 0 0 0 0 ... + ... + Thanks to Paul (paul@luon.net) + +XXXX-XX-XX Reed Lai + + * Initially created by Reed Lai (reed@wingeer.org) + * Created and modified based on WMiFS-1.3b. + * Displays last send and receive bytes/packets. + * Displays the maxima for rx and tx in current display history. + * Default update time gap is 1 sec. + * Defaults to waveform mode. + * Runtime switchable to waveform or traditional mode. + * Runtime switchable to packets or bytes mode. + * Runtime togglable display of maxima. + diff --git a/dockapps/wmnd/INSTALL b/dockapps/wmnd/INSTALL new file mode 100644 index 0000000..a1e89e1 --- /dev/null +++ b/dockapps/wmnd/INSTALL @@ -0,0 +1,370 @@ +Installation Instructions +************************* + +Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, +Inc. + + Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. This file is offered as-is, +without warranty of any kind. + +Basic Installation +================== + + Briefly, the shell commands `./configure; make; make install' should +configure, build, and install this package. The following +more-detailed instructions are generic; see the `README' file for +instructions specific to this package. Some packages provide this +`INSTALL' file but do not implement all of the features documented +below. The lack of an optional feature in a given package is not +necessarily a bug. More recommendations for GNU packages can be found +in *note Makefile Conventions: (standards)Makefile Conventions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, and a +file `config.log' containing compiler output (useful mainly for +debugging `configure'). + + It can also use an optional file (typically called `config.cache' +and enabled with `--cache-file=config.cache' or simply `-C') that saves +the results of its tests to speed up reconfiguring. Caching is +disabled by default to prevent problems with accidental use of stale +cache files. + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If you are using the cache, and at +some point `config.cache' contains results you don't want to keep, you +may remove or edit it. + + The file `configure.ac' (or `configure.in') is used to create +`configure' by a program called `autoconf'. You need `configure.ac' if +you want to change it or regenerate `configure' using a newer version +of `autoconf'. + + The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. + + Running `configure' might take a while. While running, it prints + some messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package, generally using the just-built uninstalled binaries. + + 4. Type `make install' to install the programs and any data files and + documentation. When installing into a prefix owned by root, it is + recommended that the package be configured and built as a regular + user, and only the `make install' phase executed with root + privileges. + + 5. Optionally, type `make installcheck' to repeat any self-tests, but + this time using the binaries in their final installed location. + This target does not install anything. Running this target as a + regular user, particularly if the prior `make install' required + root privileges, verifies that the installation completed + correctly. + + 6. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + + 7. Often, you can also type `make uninstall' to remove the installed + files again. In practice, not all packages have tested that + uninstallation works correctly, even though it is required by the + GNU Coding Standards. + + 8. Some packages, particularly those that use Automake, provide `make + distcheck', which can by used by developers to test that all other + targets like `make install' and `make uninstall' work correctly. + This target is generally not run by end users. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. Run `./configure --help' +for details on some of the pertinent environment variables. + + You can give `configure' initial values for configuration parameters +by setting variables in the command line or in the environment. Here +is an example: + + ./configure CC=c99 CFLAGS=-g LIBS=-lposix + + *Note Defining Variables::, for more details. + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you can use GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. This +is known as a "VPATH" build. + + With a non-GNU `make', it is safer to compile the package for one +architecture at a time in the source code directory. After you have +installed the package for one architecture, use `make distclean' before +reconfiguring for another architecture. + + On MacOS X 10.5 and later systems, you can create libraries and +executables that work on multiple system types--known as "fat" or +"universal" binaries--by specifying multiple `-arch' options to the +compiler but only a single `-arch' option to the preprocessor. Like +this: + + ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ + CPP="gcc -E" CXXCPP="g++ -E" + + This is not guaranteed to produce working output in all cases, you +may have to build one architecture at a time and combine the results +using the `lipo' tool if you have problems. + +Installation Names +================== + + By default, `make install' installs the package's commands under +`/usr/local/bin', include files under `/usr/local/include', etc. You +can specify an installation prefix other than `/usr/local' by giving +`configure' the option `--prefix=PREFIX', where PREFIX must be an +absolute file name. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +pass the option `--exec-prefix=PREFIX' to `configure', the package uses +PREFIX as the prefix for installing programs and libraries. +Documentation and other data files still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=DIR' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. In general, the +default for these options is expressed in terms of `${prefix}', so that +specifying just `--prefix' will affect all of the other directory +specifications that were not explicitly provided. + + The most portable way to affect installation locations is to pass the +correct locations to `configure'; however, many packages provide one or +both of the following shortcuts of passing variable assignments to the +`make install' command line to change installation locations without +having to reconfigure or recompile. + + The first method involves providing an override variable for each +affected directory. For example, `make install +prefix=/alternate/directory' will choose an alternate location for all +directory configuration variables that were expressed in terms of +`${prefix}'. Any directories that were specified during `configure', +but not in terms of `${prefix}', must each be overridden at install +time for the entire installation to be relocated. The approach of +makefile variable overrides for each directory variable is required by +the GNU Coding Standards, and ideally causes no recompilation. +However, some platforms have known limitations with the semantics of +shared libraries that end up requiring recompilation when using this +method, particularly noticeable in packages that use GNU Libtool. + + The second method involves providing the `DESTDIR' variable. For +example, `make install DESTDIR=/alternate/directory' will prepend +`/alternate/directory' before all installation names. The approach of +`DESTDIR' overrides is not required by the GNU Coding Standards, and +does not work on platforms that have drive letters. On the other hand, +it does better at avoiding recompilation issues, and works well even +when some directory options were not specified in terms of `${prefix}' +at `configure' time. + +Optional Features +================= + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + + Some packages offer the ability to configure how verbose the +execution of `make' will be. For these packages, running `./configure +--enable-silent-rules' sets the default to minimal output, which can be +overridden with `make V=1'; while running `./configure +--disable-silent-rules' sets the default to verbose, which can be +overridden with `make V=0'. + +Particular systems +================== + + On HP-UX, the default C compiler is not ANSI C compatible. If GNU +CC is not installed, it is recommended to use the following options in +order to use an ANSI C compiler: + + ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" + +and if that doesn't work, install pre-built binaries of GCC for HP-UX. + + HP-UX `make' updates targets which have the same time stamps as +their prerequisites, which makes it generally unusable when shipped +generated files such as `configure' are involved. Use GNU `make' +instead. + + On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot +parse its `' header file. The option `-nodtk' can be used as +a workaround. If GNU CC is not installed, it is therefore recommended +to try + + ./configure CC="cc" + +and if that doesn't work, try + + ./configure CC="cc -nodtk" + + On Solaris, don't put `/usr/ucb' early in your `PATH'. This +directory contains several dysfunctional programs; working variants of +these programs are available in `/usr/bin'. So, if you need `/usr/ucb' +in your `PATH', put it _after_ `/usr/bin'. + + On Haiku, software installed for all users goes in `/boot/common', +not `/usr/local'. It is recommended to use the following options: + + ./configure --prefix=/boot/common + +Specifying the System Type +========================== + + There may be some features `configure' cannot figure out +automatically, but needs to determine by the type of machine the package +will run on. Usually, assuming the package is built to be run on the +_same_ architectures, `configure' can figure that out, but if it prints +a message saying it cannot guess the machine type, give it the +`--build=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name which has the form: + + CPU-COMPANY-SYSTEM + +where SYSTEM can have one of these forms: + + OS + KERNEL-OS + + See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the machine type. + + If you are _building_ compiler tools for cross-compiling, you should +use the option `--target=TYPE' to select the type of system they will +produce code for. + + If you want to _use_ a cross compiler, that generates code for a +platform different from the build platform, you should specify the +"host" platform (i.e., that on which the generated programs will +eventually be run) with `--host=TYPE'. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Defining Variables +================== + + Variables not defined in a site shell script can be set in the +environment passed to `configure'. However, some packages may run +configure again during the build, and the customized values of these +variables may be lost. In order to avoid this problem, you should set +them in the `configure' command line, using `VAR=value'. For example: + + ./configure CC=/usr/local2/bin/gcc + +causes the specified `gcc' to be used as the C compiler (unless it is +overridden in the site shell script). + +Unfortunately, this technique does not work for `CONFIG_SHELL' due to +an Autoconf bug. Until the bug is fixed you can use this workaround: + + CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash + +`configure' Invocation +====================== + + `configure' recognizes the following options to control how it +operates. + +`--help' +`-h' + Print a summary of all of the options to `configure', and exit. + +`--help=short' +`--help=recursive' + Print a summary of the options unique to this package's + `configure', and exit. The `short' variant lists options used + only in the top level, while the `recursive' variant lists options + also present in any nested packages. + +`--version' +`-V' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`--cache-file=FILE' + Enable the cache: use and save the results of the tests in FILE, + traditionally `config.cache'. FILE defaults to `/dev/null' to + disable caching. + +`--config-cache' +`-C' + Alias for `--cache-file=config.cache'. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--prefix=DIR' + Use DIR as the installation prefix. *note Installation Names:: + for more details, including other options available for fine-tuning + the installation locations. + +`--no-create' +`-n' + Run the configure checks, but stop before creating any output + files. + +`configure' also accepts some other, not widely useful, options. Run +`configure --help' for more details. + diff --git a/dockapps/wmnd/Makefile b/dockapps/wmnd/Makefile new file mode 100644 index 0000000..76a2416 --- /dev/null +++ b/dockapps/wmnd/Makefile @@ -0,0 +1,862 @@ +# Makefile.in generated by automake 1.11.5 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + + +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } +pkgdatadir = $(datadir)/wmnd +pkgincludedir = $(includedir)/wmnd +pkglibdir = $(libdir)/wmnd +pkglibexecdir = $(libexecdir)/wmnd +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +target_triplet = x86_64-unknown-linux-gnu +subdir = . +DIST_COMMON = README $(am__configure_deps) $(dist_examples_DATA) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS COPYING \ + ChangeLog INSTALL NEWS THANKS TODO config.guess config.sub \ + depcomp install-sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(examplesdir)" +NROFF = nroff +MANS = $(man_MANS) +DATA = $(dist_examples_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run aclocal-1.11 +AMTAR = $${TAR-tar} +AUTOCONF = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run autoconf +AUTOHEADER = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run autoheader +AUTOMAKE = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run automake-1.11 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +GREP = /usr/bin/grep +INSTALL = /usr/bin/ginstall -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = -lSM -lICE +LIBOBJS = +LIBS = -lnetsnmp -lXpm -lXext -lX11 -lm +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = wmnd +PACKAGE_BUGREPORT = wavexx@users.sf.net +PACKAGE_NAME = wmnd +PACKAGE_STRING = wmnd 0.4.17 +PACKAGE_TARNAME = wmnd +PACKAGE_URL = +PACKAGE_VERSION = 0.4.17 +PATH_SEPARATOR = : +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 0.4.17 +XMKMF = +X_CFLAGS = +X_EXTRA_LIBS = +X_LIBS = +X_PRE_LIBS = -lSM -lICE +abs_builddir = /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd +abs_srcdir = /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd +abs_top_builddir = /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd +abs_top_srcdir = /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd +ac_ct_CC = gcc +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target = x86_64-unknown-linux-gnu +target_alias = +target_cpu = x86_64 +target_os = linux-gnu +target_vendor = unknown +top_build_prefix = +top_builddir = . +top_srcdir = . + +# go through subdirs +SUBDIRS = src + +# extra distribution files +man_MANS = doc/wmnd.1 +examplesdir = $(docdir)/examples +dist_examples_DATA = examples/wmndrc +EXTRA_DIST = $(man_MANS) $(data_DATA) ChangeLog.0 +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @list='$(MANS)'; if test -n "$$list"; then \ + list=`for p in $$list; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ + if test -n "$$list" && \ + grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ + echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ + grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ + echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ + echo " typically \`make maintainer-clean' will remove them" >&2; \ + exit 1; \ + else :; fi; \ + else :; fi + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(MANS) $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-dist_examplesDATA install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-dist_examplesDATA uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-hdr \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-dist_examplesDATA uninstall-man uninstall-man1 + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/dockapps/wmnd/Makefile.am b/dockapps/wmnd/Makefile.am new file mode 100644 index 0000000..5138ec9 --- /dev/null +++ b/dockapps/wmnd/Makefile.am @@ -0,0 +1,8 @@ +# go through subdirs +SUBDIRS = src + +# extra distribution files +man_MANS = doc/wmnd.1 +examplesdir = $(docdir)/examples +dist_examples_DATA = examples/wmndrc +EXTRA_DIST = $(man_MANS) $(data_DATA) ChangeLog.0 diff --git a/dockapps/wmnd/Makefile.in b/dockapps/wmnd/Makefile.in new file mode 100644 index 0000000..6feb9ef --- /dev/null +++ b/dockapps/wmnd/Makefile.in @@ -0,0 +1,862 @@ +# Makefile.in generated by automake 1.11.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +subdir = . +DIST_COMMON = README $(am__configure_deps) $(dist_examples_DATA) \ + $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ + $(srcdir)/config.h.in $(top_srcdir)/configure AUTHORS COPYING \ + ChangeLog INSTALL NEWS THANKS TODO config.guess config.sub \ + depcomp install-sh missing +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ + html-recursive info-recursive install-data-recursive \ + install-dvi-recursive install-exec-recursive \ + install-html-recursive install-info-recursive \ + install-pdf-recursive install-ps-recursive install-recursive \ + installcheck-recursive installdirs-recursive pdf-recursive \ + ps-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +am__installdirs = "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(examplesdir)" +NROFF = nroff +MANS = $(man_MANS) +DATA = $(dist_examples_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ + $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ + distdir dist dist-all distcheck +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMKMF = @XMKMF@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# go through subdirs +SUBDIRS = src + +# extra distribution files +man_MANS = doc/wmnd.1 +examplesdir = $(docdir)/examples +dist_examples_DATA = examples/wmndrc +EXTRA_DIST = $(man_MANS) $(data_DATA) ChangeLog.0 +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) +install-dist_examplesDATA: $(dist_examples_DATA) + @$(NORMAL_INSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(examplesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(examplesdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(examplesdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(examplesdir)" || exit $$?; \ + done + +uninstall-dist_examplesDATA: + @$(NORMAL_UNINSTALL) + @list='$(dist_examples_DATA)'; test -n "$(examplesdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(examplesdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run `make' without going through this Makefile. +# To change the values of `make' variables: instead of editing Makefiles, +# (1) if the variable is set in `config.status', edit `config.status' +# (which will cause the Makefiles to be regenerated when you run `make'); +# (2) otherwise, pass the desired values on the `make' command line. +$(RECURSIVE_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +$(RECURSIVE_CLEAN_TARGETS): + @fail= failcom='exit 1'; \ + for f in x $$MAKEFLAGS; do \ + case $$f in \ + *=* | --[!k]*);; \ + *k*) failcom='fail=yes';; \ + esac; \ + done; \ + dot_seen=no; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + rev=''; for subdir in $$list; do \ + if test "$$subdir" = "."; then :; else \ + rev="$$subdir $$rev"; \ + fi; \ + done; \ + rev="$$rev ."; \ + target=`echo $@ | sed s/-recursive//`; \ + for subdir in $$rev; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done && test -z "$$fail" +tags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ + done +ctags-recursive: + list='$(SUBDIRS)'; for subdir in $$list; do \ + test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ + done + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @list='$(MANS)'; if test -n "$$list"; then \ + list=`for p in $$list; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ + if test -n "$$list" && \ + grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ + echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ + grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ + echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ + echo " typically \`make maintainer-clean' will remove them" >&2; \ + exit 1; \ + else :; fi; \ + else :; fi + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__remove_distdir) + +dist-lzma: distdir + tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma + $(am__remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__remove_distdir) + +dist dist-all: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lzma*) \ + lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir); chmod a+w $(distdir) + mkdir $(distdir)/_build + mkdir $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(MANS) $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(examplesdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-dist_examplesDATA install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-dist_examplesDATA uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ + ctags-recursive install-am install-strip tags-recursive + +.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ + all all-am am--refresh check check-am clean clean-generic \ + ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ + dist-lzip dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-hdr \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dist_examplesDATA \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-man1 install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + uninstall-dist_examplesDATA uninstall-man uninstall-man1 + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/dockapps/wmnd/NEWS b/dockapps/wmnd/NEWS new file mode 100644 index 0000000..db2f968 --- /dev/null +++ b/dockapps/wmnd/NEWS @@ -0,0 +1,205 @@ +WMND 0.4.17 +----------- + + * Minor documentation/packaging fixes. + + +WMND 0.4.16 +----------- + + * Fixed build failure on FreeBSD 8.1. + + +WMND 0.4.15 +----------- + + * Fixed build failure of the SNMP driver. + + +WMND 0.4.14 +----------- + + * Fixed build on newer GLIBC versions. + * Remove spurious black line at the bottom of the pixmap + (Thanks to Mikael Magnusson) + + +WMND 0.4.13 +----------- + + * Fixed crash due to buffer overflow on 64bit systems. + * Fixed incorrect display on linux for devices having similar names. + * Fixed FreeBSD driver on 64bit systems. + * Added OpenSolaris support for broken kstat interfaces. + * Enhanced trend support with live monitoring (even with multiple + interfaces at once), customizable flags and history. + Trend support is now on by default (Rev #68 required). + * Removed support for "inexact timing". + * The enhanced dummy driver is now the default. + + +WMND 0.4.12 +----------- + + * Executed processes are no longer left as zombies. + * Solaris 7 build fixes and kstat enhancements. + * NetBSD ioctl support. + * Maintainers warning: some flag names changed in 'configure'. + + +WMND 0.4.11 +----------- + + * Édition spécial Parisienne! + * Added support for history zoom/inspection through trend. + See README for more details. + + +WMND 0.4.10 +----------- + + * Fixed generic_snmp for old snmpd by probing both ifName and + ifDesc. --enable-snmp-descr is no longer needed. + + +WMND 0.4.9 +---------- + + * The auto-generated wmndrc now only includes changed values. + * Added a geometry flag (-g, requested by Johannes Middeke). + + +WMND 0.4.8 +---------- + + * linux_proc supports multiple interfaces on the command + line (integrated patch wmnd-0.4.7-lxext, requested by + Jesper Anderson). + * Mouse button actions now supports several %-escapes so you + can send active interface parameters to your scripts. + (requested by Jesper Anderson). + * Support for mouse wheel (integrated patch wmnd-0.4.7-wheel + by Noberasco Michele). + * Support for fixed scales for the bytes modes (requested by + Jeff Greenfield a looong time ago). + + +WMND 0.4.7 +---------- + + * WMND statistics are more accurate now with a finer + time-based method (should remove a 10% error). You can switch + back to the old method (produces a smoother graph if you + don't mind about stats) with --enable-inexact-timing. + * Packets mode is no longer smoothed (quite useless) with -o. + * Leds blinks again even when smoothing is enabled. + * Fixed a bug in the smooth function (could produce an empty + graph depending on the compiler used). + * The 'whole history' max stats should now report real + values instead of an huge nonsense. + * You can now change the title/class name of WMND using -n. + This is useful on wharf (afterstep) to not swallow multiple + instances into a single dock. + + +WMND 0.4.6 +---------- + + * Fixed a typo in the configure script that could cause some + shells to interrupt the configuration. + * generic_snmp will now use ifName instead of ifDescr, which + is usually shorter. Again, issues in the README. + + +WMND 0.4.5 +---------- + + * Added a new IF-MIB snmp driver! You can now monitor local + and remote snmp interfaces a-la MRTG, but in realtime! Read + CAREFULLY the README about issues with this driver. + * Some packaging 'hints' into the README. + + +WMND 0.4.4a +----------- + + * Fixed a bug into the solaris_fpppd driver (won't compile). + + +WMND 0.4.4 +---------- + + * WMND can now be quiet (-q/Q or quiet into ~/.wmndrc). + * Fixed some parts of the configure script. Some options have + changed their names: + + --without-dummy_driver is now --without-dummy-driver, + --with-display_modes is now --with-display-modes + + * WMND is now fully packaged with 'make dist' (fixes some bugs + in the installation procedure). WMND now requires autoconf 5 + and automake 1.7 for regenerating the configure script. + * Tired of the boring dummy driver? Enable the sine-o-matic + bandwidth generator with --enable-sine-dummy! Then, experience + it with: + + wmnd -D testing_dummy -s 1 + + * The --enable-debug switch should now work again. + * I now maintain WMND with cvs, so I use cvs2cl to produce the + ChangeLog directly from the repository. Old entries are moved + to the ChangeLog.0 file. + * The linux_proc driver can be forced to monitor devices that + are actually offline (useful for ppp interfaces). + * New display mode: lines (trend-like behavior). Mainly useful + with a low smoothing factor and a fast scroll speed. + * Added the smoothing factor thing to clear-up the graph while using a + fast scroll speed and the lines mode. Read the docs for more + informations. + * Fixed average sampling (-S) for multiple devices and values != 1 + * Added a new IRIX Performance Co-Pilot driver! + * Re-touched the "charts" pixmap, in order to use less colors + (PseudoColor users will appreciate this). I find it nicer anyway :) + * The timer now works for *every* device. linux_proc users can + now use it for ppp links. + + +WMND 0.4.3 +---------- + + * Fixed a minor bug into the freebsd_sysctl driver that would + crash WMND under some circumstances. + * Added the new -S flag for slowing down the rate meter. + * Minor code/spell corrections. + + +WMND 0.4.2 +---------- + + * added the missing -lkstat flag to the solaris kstat driver. + * the graph scrolling speed is now specified in tenth of seconds + (so update your .wmndrc accordingly). wmnet mode under wmnd is + now identical to the wmnd dockapp (except for colors). The needle + mode is also much nicer with a fast refresh. + * big improvements around the code, now wmnd compiles fine with + a c++ compiler in strict mode. + * man page update (Thanks Arthur Korn). + * New visual mode: mgraph + * Drivers can be now selected manually again + * Tune-up of the freebsd_sysctl driver + + +WMND 0.4.1 +---------- + + * fixed the solaris fpppd driver + + +WMND 0.4.0 +---------- + + * auto-detection stuff + * remove visualization modes from configure + * FreeBSD is now supported + * general code cleanup + * package reorganization diff --git a/dockapps/wmnd/README b/dockapps/wmnd/README new file mode 100644 index 0000000..7bc7d09 --- /dev/null +++ b/dockapps/wmnd/README @@ -0,0 +1,417 @@ +WMND - Window Maker Network Devices +=================================== + +WMND (WindowMaker Network Devices) is a highly customizable network monitoring +dockapp for Window Maker (and compatibles) for many operative systems and +devices. WMND can be found at http://www.thregr.org/~wavexx/software/wmnd/ + +.. contents:: + + +Hints for WMND +-------------- + +Generic +~~~~~~~ + +WMND supports command-line options, 'wmnd -h' prints help about them. + +Use option -i to monitor a particular interface at startup:: + + wmnd -i eth0 & + wmnd -i ppp0 & + +Without the -i option, wmnd will auto-magically use the interface that is first +found in /proc/net/dev (or the current driver), but skip the lo and irda. + +Use the -I option to load only a specific interface into wmnd. By default wmnd +loads all available interfaces. + +To monitor the lo or irda devices you must manually force wmnd as shown below:: + + wmnd -I lo & + wmnd -I irda & + +To monitor dialup interfaces under linux either use the -I ppp0 flag or use the +streams solaris_fpppd driver (-D solaris_fpppd -I ppp0). The linux_proc driver +supports multiple interfaces on the command line through the -I flag:: + + wmnd -D linux_proc -I eth0,eth1,ppp0 + +This way you can combine multiple interfaces (whether they're online or not) on +the same WMND instance. This trick allows also to create handy dialup shortcuts +using the button actions (by passing the active interface name and status on +the command line). Look at the example wmndrc file for details. + + +GUI Usage +~~~~~~~~~ + +You can cycle in real-time through all available active interfaces by simply +left-clicking on the interface name gadget on the upper-left corner of wmnd. + +By default, wmnd show device name in short term of four characters, for +example, the ippp0 will be displayed as ipp0. You can toggle the device name +between short and long by right-click on it. + +Left-click on the main graphic area to cycle the graphic mode. + +Left-click to toggle the history max or screen max, default is screen max when +wmnd is startup. Right-click to hide or display. + +Left-click on the letter gadgeted on the right-top corner can switch between +the Byte or Packet counter mode. "B" for byte, "p" for packet. + +Click on the bottom rate meter can invoke the user command defined in resource +file .wmndrc. + +Be sure to drag WMND on it's outer edges, it's a bit picky due to the large gfx +pixmap it keeps ;-). You can also use a keyboard+mouse shortcut (perhaps +ALT+left-click) in your window manager to drag it around. + +The history/graph can be viewed and inspected more conveniently by clicking +with the middle button on the scale meter. With this feature, multiple +interfaces can be monitored concurrently. See the "trend" section below. + + +Transition from 0.2/0.3 +~~~~~~~~~~~~~~~~~~~~~~~ + +If you are coming from an old release of WMND (0.2/0.3 series) you must be +aware that some values/scales of the ~/.wmndrc file have changed. Copy a fresh +wmndrc from the source distribution (examples/wmndrc) or erase your old wmndrc +to get the new defaults. + + +Firing up WMND with sensible defaults +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Default values are easily changed from the command line or through the +~/.wmndrc file. The ~/.wmndrc file gets created automatically the first time +you execute WMND (unless you use -F) using the internal defaults and command +line flags. That is, if you want to change "permanently" the defaults (so you +can start it without command line fuss) just remove ~/.wmndrc and launch WMND +using all the flags again. Beware however that internal defaults may +change. Consider reading the example wmndrc that comes with the distribution. + + +Creating PPP dialup scripts +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Because a very good PPP HowTo already exists, it's quite pointless for us to +explain to you how you should and make them. Look for mouse button actions +(bt?_action) into the example wmndrc. + +Read the PPP HowTo, and you'll see that it's very easy to create your own PPP +scripts. + + +Window Managers +--------------- + +WindowMaker +~~~~~~~~~~~ + +WindowMaker users simply drag and drop the WMND dock.app on the WindowMaker +Dock (preferred) or on the Fiend, and then press the right mouse button on the +outer edges of WMND and then enable 'Auto launch' from the Dock pop-up menu. + + +AfterSTEP +~~~~~~~~~ + +AfterSTEP users put the following in their .steprc:: + + "Wharf wmnd - MaxSwallow "wmnd" wmnd -i eth0 -w &". + +Change the WMND's title name in order to not swallow multiple instances into a +single dock (see -n). + + +BlackBox or FluxBox +~~~~~~~~~~~~~~~~~~~ + +You must enable the slit in other make wmnd visible. To add wmnd to the slit +simply run wmnd from the command line:: + + wmnd & + +and it will pop-up into a new slot. + + +Other Window managers +~~~~~~~~~~~~~~~~~~~~~ + +For other windowmanagers, WMND runs nicely as 64x64 pixel shaped icon on your +desktop. + +Under gnome add the "swallow" applet and set it to run wmnd. The same thing can +be done under KDE using the kdeswallow applet. + +PS: FVWM can swallow it too, so we've heard ;-) + + +Display modes +------------- + +Configure --enable-modes flags (space separated): traditional mgraph waveform +wmwave wmnet sepgraphs twisted charts needle lines. + +Traditional: + Tx and Rx are piled on the same line within a single graph (like wmifs + original behavior). + +MGraph: + Tx and Rx scale is calculated uniquely and the slower channel is shown + in front of the other one. + +Waveform: + Tx and Rx are piled on the same line and mirrored using the central + line, in way to generate a "waveform like" silhouette + +WmWave: + Tx and Rx are opposite to the central line, however the scale is + calculated using both values + +WmNet: + This graph shows a reversed wmwave mode without the central line. + (like wmnet behavior) + +Sepgraphs: + Tx and Rx are shown on separated graphs. Tx in top and Rx in bottom, + divided by a central line. Scales are calculated separately. + +Twisted: + This mode displays two vertical "waveform like" graphs flowing in + reverse directions. The scale is unique. + +Charts: + Displays four charts disposed in this manner: + + | TX Current Speed Indicator + | TX Average Speed Indicator + | RX Current Speed Indicator + | RX Average Speed Indicator + + The range is from 0 to the maximal value in history. The average speed + is calculated using the latest 58 samples for each channel. + +Needle: + Displays three needles. The arrangement is as follows: + + | TX Average Needle + | Bandwidth utilization Needle + | RX Average Needle + + The range For TX and RX needles is between 0 and the maximal value in + history. The bandwidth utilization one uses this formula: + + (tx_avg+rx_avg)/(tx_max+rx_max) + + I particularly like this mode :), the needles speed are slow and smooth + like a real analog display. + +Lines: + Displays a trend graph using two lines. + + +Drivers +------- + +Introduction +~~~~~~~~~~~~ + +Since release 0.3, WMND is now portable to many operating systems by using +compile-time defines and an internal driver table (now it should be possible to +make WMND monitor just about anything). Current supported OSs/drivers includes: + +Configure --enable-drivers flags (space separated) drivers: linux_proc +freebsd_sysctl solaris_fpppd solaris_kstat irix_pcp generic_snmp netbsd_ioctl. + +linux_proc: + Supports Linux >2.2 by using the /proc/net/dev file. + +freebsd_sysctl: + FreeBSD (and Darwin) sysctl based. + +solaris_fpppd: + Free PPPd (for Linux, Solaris, and maybe others) for ppp dialup + interfaces. + +solaris_kstat: + Solaris kstat based. + +irix_pcp: + Based on PCP (Performance Co-Pilot API 2). + +generic_snmp: + Since WMND 0.4.5 you can now monitor IF-MIB local and/or remote snmp + interfaces a-la MRTG, but in realtime! + +netbsd_ioctl: + NetBSD ioctl based. + +Due to the new handling of the drivers, WMND won't add new devices (like PPP +interfaces in /proc/net/dev) and remove them as they appear on the +/proc/net/dev file. Offline devices are now shown as red (disabled). If you're +under linux and still require to monitor a dialup interface you'll need to feed +it on the command line through the -I flag. + + +irix_pcp +~~~~~~~~ + +The IRIX driver is based on the PCP API 2.x (Performance Co-Pilot). You'll need +'pcpd' running for WMND to work. Interface format:: + + [host@]interface + +These filesets are required:: + + pcp_eoe.sw.eoe + pcp.sw.base + +If you don't have these, you can download PCP directly from here: +http://www.sgi.com/software/co-pilot/ (pcp_eoe.* filesets are into +"IRIX Overlays, 2/4" and "Foundation 2"). + +In some cases WMND may fail to compile due to the presence of Motif XPM +headers: be sure to have freeware's XPM installed (see +http://freeware.sgi.com/) and have "/usr/freeware/include" paths before any +other. + +There seems to be a Linux version of PCP, but I can't (don't) want to try +it. It will probably work. + + +generic_snmp +~~~~~~~~~~~~ + +Since 0.4.5 wmnd adds a new snmp driver for local and/or remote IF-MIB +compliant devices. This driver requires the NET-SNMP library, available at +http://www.net-snmp.org/, version 5 or higher. The drivers name is +generic_snmp. It uses the parameters sent through the -I flag to initialize the +device/s list. The format is as follows:: + + [community@]host[:interface] + +Parameters inside [] are optional. If you do not explicitly supply these +parameters, generic_snmp will use "public@localhost". + +To monitor an entire switch, you can usually do:: + + wmnd -D generic_snmp -I public@switch + +(or "-I switch", which is shorter). To monitor only a specific interface:: + + wmnd -D generic_snmp -I public@switch:1 + +Interface numbers start at 1 (0 means all interfaces, like an empty interface +specification). Beware that EACH remote interface, at the default refresh +speed, burns AT LEAST 2kB/s of continuous data stream through your +network. Monitoring a complete switch (24 ports), always at the default refresh +speed, burns circa 30kB/s. You can slow down the refresh speed (-r) to reduce +this traffic. The extremely fast queries done by wmnd can also reduce the +available cpu of your snmp server/hardware and decrease overall performance. + +Also beware that using the -I flag on the command-line can potentially expose +the community name of your remote snmp server. Better to use ~/.wmndrc and +chmod it to 600 in this case. + + +Building WMND 0.4 +----------------- + +Configure flags +~~~~~~~~~~~~~~~ + +Since release 0.4 WMND is now compliant to the GNU Packaging standards and +enables to use the GNU autotools to automagically build WMND for your box with +little or no difficulty. See INSTALL for a first-time introduction. + +Configure accepts several options to enchance/minimize wmnd functionality and +size. To forcely disable the dummy driver:: + + $ ./configure --disable-dummy-driver + +To select only some display modes:: + + $ ./configure --enable-modes="traditional wmwave" + +To forcely build specified drivers (beware that the dummy driver should be +disabled with --disable-dummy-driver, also, extra libraries that may be needed +by the driver won't be checked automatically):: + + $ ./configure --enable-drivers="linux_proc" + +The --help flag will show you a complete list of command line flags that the +configure script supports. + + +GCC 2.96 sucks +~~~~~~~~~~~~~~ + +WMND 0.4 won't compile with RedHat's gcc 2.96. Either downgrade to 2.95 or +upgrade to 3. DON'T SEND bug reports about INLINE not working under gcc 2.96, +it's a RedHat-only bug. + + +Notes for packagers +~~~~~~~~~~~~~~~~~~~ + +I'm not a professional packager, but you may want to consider these notes to +improve the WMND package. + +The irix_pcp and generic_snmp drivers depends upon libraries that are not +installed on a distribution/OS by default. Both these drivers are supported by +different operating systems. I suggest you to build at least one package that +doesn't require them. + + +Trend support +~~~~~~~~~~~~~ + +You can examine the current history in a larger window by clicking with the +middle mouse button on the scale meter (the panel under the device name). +Bytes/Packets mode affects the counters involved. + +You can leave the trend's window open, cycle the active interface and +middle-click again to monitor multiple interfaces concurrently. trend settings +and history can be adjusted via wmndrc. Read the sample file coming in the +source for details. + +You will need trend[1] to be installed for this feature to work. +Any version of trend starting with Rev #68 02/11/2007 should work. + +[1] http://www.thregr.org/~wavexx/software/trend/ + + +Copyright +--------- + +WMND was originally based on WMiFS, forked around 2001 by Reed Lai. WMND is +currently maintained by Yuri D'Elia and distributed under GNU GPL v2 or +above. See AUTHORS and COPYING for detailed licensing details. + + +Bugs +---- + +A list of wishes and bugs can be found at the Debian WMND bugs page[1]. + +[1] http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=wmnd + +The FreeBSD driver is known to have problems on laptop systems where you can +dynamically insert/remove addictional PCMCIA interfaces. This is rather a +design problem of the driver. A developer with FreeBSD's MIB knowledge would be +helpful. + +Certainly there are more. I actually test WMND only on Solaris, Linux and IRIX +boxes. You can report bugs to the current maintainer's email: +. Please be as descriptive as possible and always include +at least: + +* WMND version +* your host/target operating system +* compiler used +* A backtrace of the crash would be helpful, but less essential. diff --git a/dockapps/wmnd/THANKS b/dockapps/wmnd/THANKS new file mode 100644 index 0000000..39378d3 --- /dev/null +++ b/dockapps/wmnd/THANKS @@ -0,0 +1,56 @@ +Reed Lai http://bv4qo.wingeer.org/: + + * Project initiation. + +Arthur Korn : + + * Original WMND man page author. + * Old Makefile system maintenance. + * Debian package maintenance: http://packages.debian.org/wmnd/ + +Michael Leuchtenburg: + + * Old web site administration: http://wmnd.wingeer.org/ + * English refinement of articles + +Paul van Tilburg (Mozillion) http://www.utopiamoo.net/: + + * Provided ultimate test environment for function and stability + of WMND. + +Timecop http://www.ne.jp/asahi/linux/timecop/: + + * Source code optimization (Re-wrote the source code of WMND 0.2.0) + +Yuri D'Elia (wave++) http://www.thregr.org/~wavexx/: + + * Driver architecture, new visualization structs, re-wrote source + code of WMND 0.3 series. + * Many minor things (see ChangeLog) + +Sebastian Liusnea : + + * A different Solaris port of WMND 0.2.0. + +Paulo E. Abreu : + + * Old RPM package maintenance. + +Michael Shigorin: + + * ALT Linux patch (better X session management). + +Thomas Ashton: + + * SMD patch for WMND 0.4.2 (speed measuring divided). + +Jesse Becker: + + * Enhanced trend support patches. + +Rui Paulo: + + * First NetBSD ioctl driver. + + +And many more... diff --git a/dockapps/wmnd/TODO b/dockapps/wmnd/TODO new file mode 100644 index 0000000..77b025b --- /dev/null +++ b/dockapps/wmnd/TODO @@ -0,0 +1,11 @@ +Planned features + + * wave++: selectively include drivers and specify driver options by + specifying the -D flag multiple times (something like -Ddriver:params + and remove the per-driver -I management). + + * wave++: the snmp driver could use a single session instance. + + * Bryan: multiple snmp devices on a single instance + + * Jeff Greenfield: logarithmic graph scale. diff --git a/dockapps/wmnd/aclocal.m4 b/dockapps/wmnd/aclocal.m4 new file mode 100644 index 0000000..24fcc4c --- /dev/null +++ b/dockapps/wmnd/aclocal.m4 @@ -0,0 +1,983 @@ +# generated automatically by aclocal 1.11.5 -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, +# Inc. +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically `autoreconf'.])]) + +# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software +# Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.11' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.11.5], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.11.5])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to +# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is `.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 9 + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ(2.52)dnl + ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, +# 2010, 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 12 + +# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "GCJ", or "OBJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +ifelse([$1], CC, [depcc="$CC" am_compiler_list=], + [$1], CXX, [depcc="$CXX" am_compiler_list=], + [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], UPC, [depcc="$UPC" am_compiler_list=], + [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE(dependency-tracking, +[ --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +#serial 5 + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each `.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 8 + +# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. +AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 16 + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.62])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) + AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) +AM_MISSING_PROG(AUTOCONF, autoconf) +AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) +AM_MISSING_PROG(AUTOHEADER, autoheader) +AM_MISSING_PROG(MAKEINFO, makeinfo) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AM_PROG_MKDIR_P])dnl +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES(CC)], + [define([AC_PROG_CC], + defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES(CXX)], + [define([AC_PROG_CXX], + defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES(OBJC)], + [define([AC_PROG_OBJC], + defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl +]) +_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl +dnl The `parallel-tests' driver may need to know about EXEEXT, so add the +dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro +dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, +# Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST(install_sh)]) + +# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 4 + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 6 + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it supports --run. +# If it does, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + AC_MSG_WARN([`missing' script is too old or missing]) +fi +]) + +# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, +# Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_PROG_MKDIR_P +# --------------- +# Check for `mkdir -p'. +AC_DEFUN([AM_PROG_MKDIR_P], +[AC_PREREQ([2.60])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, +dnl while keeping a definition of mkdir_p for backward compatibility. +dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. +dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of +dnl Makefile.ins that do not define MKDIR_P, so we do our own +dnl adjustment using top_builddir (which is defined more often than +dnl MKDIR_P). +AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl +case $mkdir_p in + [[\\/$]]* | ?:[[\\/]]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software +# Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 +# Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 5 + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; +esac + +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +alias in your environment]) + fi + + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT(yes)]) + +# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 1 + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor `install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in `make install-strip', and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 3 + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# serial 2 + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of `v7', `ustar', or `pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + [m4_case([$1], [ustar],, [pax],, + [m4_fatal([Unknown tar format])]) +AC_MSG_CHECKING([how to create a $1 tar archive]) +# Loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +_am_tools=${am_cv_prog_tar_$1-$_am_tools} +# Do not fold the above two line into one, because Tru64 sh and +# Solaris sh will not grok spaces in the rhs of `-'. +for _am_tool in $_am_tools +do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; + do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi +done +rm -rf conftest.dir + +AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/dockapps/wmnd/config.guess b/dockapps/wmnd/config.guess new file mode 100755 index 0000000..d622a44 --- /dev/null +++ b/dockapps/wmnd/config.guess @@ -0,0 +1,1530 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. + +timestamp='2012-02-10' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + exitcode=$? + trap '' 0 + exit $exitcode ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabihf + fi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo ${UNAME_MACHINE}-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + tile*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/dockapps/wmnd/config.h b/dockapps/wmnd/config.h new file mode 100644 index 0000000..091d47b --- /dev/null +++ b/dockapps/wmnd/config.h @@ -0,0 +1,172 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the declaration of `getopt', and to 0 if you don't. + */ +#define HAVE_DECL_GETOPT 1 + +/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't. + */ +#define HAVE_DECL_STRDUP 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the `X11' library (-lX11). */ +#define HAVE_LIBX11 1 + +/* Define to 1 if you have the `Xext' library (-lXext). */ +#define HAVE_LIBXEXT 1 + +/* Define to 1 if you have the `Xpm' library (-lXpm). */ +#define HAVE_LIBXPM 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_NET_PPP_DEFS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* shameless(tm) */ +#define NDEBUG 42 + +/* Name of package */ +#define PACKAGE "wmnd" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "wavexx@users.sf.net" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "wmnd" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "wmnd 0.4.17" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "wmnd" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "0.4.17" + +/* Define as the return type of signal handlers (`int' or `void'). */ +#define RETSIGTYPE void + +/* The size of `unsigned int', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_INT 4 + +/* The size of `unsigned long', as computed by sizeof. */ +#define SIZEOF_UNSIGNED_LONG 8 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* charts drawing mode */ +#define USE_DRW_CHARTS /**/ + +/* lines drawing mode */ +#define USE_DRW_LINES /**/ + +/* mgraph drawing mode */ +#define USE_DRW_MGRAPH /**/ + +/* needle drawing mode */ +#define USE_DRW_NEEDLE /**/ + +/* sepgraphs drawing mode */ +#define USE_DRW_SEPGRAPHS /**/ + +/* traditional drawing mode */ +#define USE_DRW_TRADITIONAL /**/ + +/* twisted drawing mode */ +#define USE_DRW_TWISTED /**/ + +/* waveform drawing mode */ +#define USE_DRW_WAVEFORM /**/ + +/* wmnet drawing mode */ +#define USE_DRW_WMNET /**/ + +/* wmwave drawing mode */ +#define USE_DRW_WMWAVE /**/ + +/* enable freebsd sysctl driver */ +/* #undef USE_FREEBSD_SYSCTL */ + +/* Generic SNMP module */ +#define USE_GENERIC_SNMP "generic_snmp" + +/* IRIX Performance Co-Pilot */ +/* #undef USE_IRIX_PCP */ + +/* enable linux proc driver */ +#define USE_LINUX_PROC "linux_proc" + +/* enable nebsd ioctl driver */ +/* #undef USE_NETBSD_IOCTL */ + +/* solaris streams pppd */ +/* #undef USE_SOLARIS_FPPPD */ + +/* enable solaris kstat driver */ +/* #undef USE_SOLARIS_KSTAT */ + +/* fallback driver */ +#define USE_TESTING_DUMMY "testing_dummy" + +/* trend support */ +#define USE_TREND /**/ + +/* Version number of package */ +#define VERSION "0.4.17" + +/* Define to 1 if the X Window System is missing or not being used. */ +/* #undef X_DISPLAY_MISSING */ + +/* BSD function declarations */ +/* #undef _BSD_SOURCE */ + +/* XOPEN function declarations */ +/* #undef _XOPEN_SOURCE */ + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +/* #undef inline */ +#endif + +/* Define to `int' if does not define. */ +/* #undef pid_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ diff --git a/dockapps/wmnd/config.h.in b/dockapps/wmnd/config.h.in new file mode 100644 index 0000000..0926279 --- /dev/null +++ b/dockapps/wmnd/config.h.in @@ -0,0 +1,171 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the declaration of `getopt', and to 0 if you don't. + */ +#undef HAVE_DECL_GETOPT + +/* Define to 1 if you have the declaration of `strdup', and to 0 if you don't. + */ +#undef HAVE_DECL_STRDUP + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the `X11' library (-lX11). */ +#undef HAVE_LIBX11 + +/* Define to 1 if you have the `Xext' library (-lXext). */ +#undef HAVE_LIBXEXT + +/* Define to 1 if you have the `Xpm' library (-lXpm). */ +#undef HAVE_LIBXPM + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_NET_PPP_DEFS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* shameless(tm) */ +#undef NDEBUG + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define as the return type of signal handlers (`int' or `void'). */ +#undef RETSIGTYPE + +/* The size of `unsigned int', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_INT + +/* The size of `unsigned long', as computed by sizeof. */ +#undef SIZEOF_UNSIGNED_LONG + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* charts drawing mode */ +#undef USE_DRW_CHARTS + +/* lines drawing mode */ +#undef USE_DRW_LINES + +/* mgraph drawing mode */ +#undef USE_DRW_MGRAPH + +/* needle drawing mode */ +#undef USE_DRW_NEEDLE + +/* sepgraphs drawing mode */ +#undef USE_DRW_SEPGRAPHS + +/* traditional drawing mode */ +#undef USE_DRW_TRADITIONAL + +/* twisted drawing mode */ +#undef USE_DRW_TWISTED + +/* waveform drawing mode */ +#undef USE_DRW_WAVEFORM + +/* wmnet drawing mode */ +#undef USE_DRW_WMNET + +/* wmwave drawing mode */ +#undef USE_DRW_WMWAVE + +/* enable freebsd sysctl driver */ +#undef USE_FREEBSD_SYSCTL + +/* Generic SNMP module */ +#undef USE_GENERIC_SNMP + +/* IRIX Performance Co-Pilot */ +#undef USE_IRIX_PCP + +/* enable linux proc driver */ +#undef USE_LINUX_PROC + +/* enable nebsd ioctl driver */ +#undef USE_NETBSD_IOCTL + +/* solaris streams pppd */ +#undef USE_SOLARIS_FPPPD + +/* enable solaris kstat driver */ +#undef USE_SOLARIS_KSTAT + +/* fallback driver */ +#undef USE_TESTING_DUMMY + +/* trend support */ +#undef USE_TREND + +/* Version number of package */ +#undef VERSION + +/* Define to 1 if the X Window System is missing or not being used. */ +#undef X_DISPLAY_MISSING + +/* BSD function declarations */ +#undef _BSD_SOURCE + +/* XOPEN function declarations */ +#undef _XOPEN_SOURCE + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t diff --git a/dockapps/wmnd/config.log b/dockapps/wmnd/config.log new file mode 100644 index 0000000..3539c5f --- /dev/null +++ b/dockapps/wmnd/config.log @@ -0,0 +1,1465 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by wmnd configure 0.4.17, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ ./configure + +## --------- ## +## Platform. ## +## --------- ## + +hostname = m75q. +uname -m = x86_64 +uname -r = 5.15.38 +uname -s = Linux +uname -v = #1 SMP PREEMPT Mon May 9 15:36:07 CDT 2022 + +/usr/bin/uname -p = AMD Ryzen 5 PRO 4650GE with Radeon Graphics +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /home/eukara/bin +PATH: /Network/bin +PATH: /usr/local/bin +PATH: /usr/bin +PATH: /bin +PATH: /usr/games +PATH: /usr/lib64/libexec/kf5 +PATH: /usr/lib64/qt5/bin +PATH: /home/eukara/Toolchains/mingw32/bin +PATH: /home/eukara/.local/bin +PATH: /home/eukara/.local/games +PATH: /home/eukara/Toolchains/mingw64/bin +PATH: /home/eukara/Toolchains/mingw32/bin +PATH: /home/eukara/.local/bin +PATH: /home/eukara/.local/games +PATH: /home/eukara/Toolchains/mingw64/bin + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:2495: checking build system type +configure:2509: result: x86_64-unknown-linux-gnu +configure:2529: checking host system type +configure:2542: result: x86_64-unknown-linux-gnu +configure:2562: checking target system type +configure:2575: result: x86_64-unknown-linux-gnu +configure:2617: checking for a BSD-compatible install +configure:2685: result: /usr/bin/ginstall -c +configure:2696: checking whether build environment is sane +configure:2746: result: yes +configure:2887: checking for a thread-safe mkdir -p +configure:2926: result: /usr/bin/mkdir -p +configure:2939: checking for gawk +configure:2955: found /usr/bin/gawk +configure:2966: result: gawk +configure:2977: checking whether make sets $(MAKE) +configure:2999: result: yes +configure:3137: checking for gcc +configure:3153: found /usr/bin/gcc +configure:3164: result: gcc +configure:3393: checking for C compiler version +configure:3402: gcc --version >&5 +gcc (GCC) 11.2.0 +Copyright (C) 2021 Free Software Foundation, Inc. +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +configure:3413: $? = 0 +configure:3402: gcc -v >&5 +Reading specs from /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/specs +COLLECT_GCC=gcc +COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-slackware-linux/11.2.0/lto-wrapper +Target: x86_64-slackware-linux +Configured with: ../gcc-11.2.0/configure --prefix=/usr --libdir=/usr/lib64 --mandir=/usr/man --infodir=/usr/info --enable-shared --enable-bootstrap --enable-languages=ada,brig,c,c++,d,fortran,go,lto,objc,obj-c++ --enable-threads=posix --enable-checking=release --enable-objc-gc --with-system-zlib --enable-libstdcxx-dual-abi --with-default-libstdcxx-abi=new --disable-libstdcxx-pch --disable-libunwind-exceptions --enable-__cxa_atexit --disable-libssp --enable-gnu-unique-object --enable-plugin --enable-lto --disable-install-libiberty --enable-gnu-indirect-function --with-linker-hash-style=gnu --with-gnu-ld --with-isl --verbose --with-arch-directory=amd64 --disable-gtktest --disable-werror --enable-clocale=gnu --enable-multilib --target=x86_64-slackware-linux --build=x86_64-slackware-linux --host=x86_64-slackware-linux +Thread model: posix +Supported LTO compression algorithms: zlib zstd +gcc version 11.2.0 (GCC) +configure:3413: $? = 0 +configure:3402: gcc -V >&5 +gcc: error: unrecognized command-line option '-V' +gcc: fatal error: no input files +compilation terminated. +configure:3413: $? = 1 +configure:3402: gcc -qversion >&5 +gcc: error: unrecognized command-line option '-qversion'; did you mean '--version'? +gcc: fatal error: no input files +compilation terminated. +configure:3413: $? = 1 +configure:3433: checking whether the C compiler works +configure:3455: gcc conftest.c >&5 +configure:3459: $? = 0 +configure:3507: result: yes +configure:3510: checking for C compiler default output file name +configure:3512: result: a.out +configure:3518: checking for suffix of executables +configure:3525: gcc -o conftest conftest.c >&5 +configure:3529: $? = 0 +configure:3551: result: +configure:3573: checking whether we are cross compiling +configure:3581: gcc -o conftest conftest.c >&5 +configure:3585: $? = 0 +configure:3592: ./conftest +configure:3596: $? = 0 +configure:3611: result: no +configure:3616: checking for suffix of object files +configure:3638: gcc -c conftest.c >&5 +configure:3642: $? = 0 +configure:3663: result: o +configure:3667: checking whether we are using the GNU C compiler +configure:3686: gcc -c conftest.c >&5 +configure:3686: $? = 0 +configure:3695: result: yes +configure:3704: checking whether gcc accepts -g +configure:3724: gcc -c -g conftest.c >&5 +configure:3724: $? = 0 +configure:3765: result: yes +configure:3782: checking for gcc option to accept ISO C89 +configure:3845: gcc -c -g -O2 conftest.c >&5 +configure:3845: $? = 0 +configure:3858: result: none needed +configure:3889: checking for style of include used by make +configure:3917: result: GNU +configure:3943: checking dependency style of gcc +configure:4054: result: gcc3 +configure:4075: checking how to run the C preprocessor +configure:4106: gcc -E conftest.c +configure:4106: $? = 0 +configure:4120: gcc -E conftest.c +conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory + 11 | #include + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4120: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| /* end confdefs.h. */ +| #include +configure:4145: result: gcc -E +configure:4165: gcc -E conftest.c +configure:4165: $? = 0 +configure:4179: gcc -E conftest.c +conftest.c:11:10: fatal error: ac_nonexistent.h: No such file or directory + 11 | #include + | ^~~~~~~~~~~~~~~~~~ +compilation terminated. +configure:4179: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| /* end confdefs.h. */ +| #include +configure:4208: checking for grep that handles long lines and -e +configure:4266: result: /usr/bin/grep +configure:4271: checking for egrep +configure:4333: result: /usr/bin/grep -E +configure:4338: checking for ANSI C header files +configure:4358: gcc -c -g -O2 conftest.c >&5 +configure:4358: $? = 0 +configure:4431: gcc -o conftest -g -O2 conftest.c >&5 +configure:4431: $? = 0 +configure:4431: ./conftest +configure:4431: $? = 0 +configure:4442: result: yes +configure:4450: checking whether time.h and sys/time.h may both be included +configure:4470: gcc -c -g -O2 conftest.c >&5 +configure:4470: $? = 0 +configure:4477: result: yes +configure:4490: checking for sys/types.h +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4490: $? = 0 +configure:4490: result: yes +configure:4490: checking for sys/stat.h +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4490: $? = 0 +configure:4490: result: yes +configure:4490: checking for stdlib.h +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4490: $? = 0 +configure:4490: result: yes +configure:4490: checking for string.h +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4490: $? = 0 +configure:4490: result: yes +configure:4490: checking for memory.h +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4490: $? = 0 +configure:4490: result: yes +configure:4490: checking for strings.h +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4490: $? = 0 +configure:4490: result: yes +configure:4490: checking for inttypes.h +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4490: $? = 0 +configure:4490: result: yes +configure:4490: checking for stdint.h +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4490: $? = 0 +configure:4490: result: yes +configure:4490: checking for unistd.h +configure:4490: gcc -c -g -O2 conftest.c >&5 +configure:4490: $? = 0 +configure:4490: result: yes +configure:4504: checking sys/time.h usability +configure:4504: gcc -c -g -O2 conftest.c >&5 +configure:4504: $? = 0 +configure:4504: result: yes +configure:4504: checking sys/time.h presence +configure:4504: gcc -E conftest.c +configure:4504: $? = 0 +configure:4504: result: yes +configure:4504: checking for sys/time.h +configure:4504: result: yes +configure:4516: checking net/ppp_defs.h usability +configure:4516: gcc -c -g -O2 conftest.c >&5 +configure:4516: $? = 0 +configure:4516: result: yes +configure:4516: checking net/ppp_defs.h presence +configure:4516: gcc -E conftest.c +configure:4516: $? = 0 +configure:4516: result: yes +configure:4516: checking for net/ppp_defs.h +configure:4516: result: yes +configure:4529: checking for u_int +configure:4529: gcc -c -g -O2 conftest.c >&5 +configure:4529: $? = 0 +configure:4529: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:60:20: error: expected expression before ')' token + 60 | if (sizeof ((u_int))) + | ^ +configure:4529: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((u_int))) +| return 0; +| ; +| return 0; +| } +configure:4529: result: yes +configure:4540: checking whether strdup is declared +configure:4540: gcc -c -g -O2 conftest.c >&5 +configure:4540: $? = 0 +configure:4540: result: yes +configure:4559: checking whether getopt is declared +configure:4559: gcc -c -g -O2 conftest.c >&5 +configure:4559: $? = 0 +configure:4559: result: yes +configure:4581: checking for library containing sin +configure:4612: gcc -o conftest -g -O2 conftest.c >&5 +conftest.c:33:6: warning: conflicting types for built-in function 'sin'; expected 'double(double)' [-Wbuiltin-declaration-mismatch] + 33 | char sin (); + | ^~~ +conftest.c:1:1: note: 'sin' is declared in header '' + 1 | /* confdefs.h */ +/usr/bin/ld: /tmp/ccPeSvBG.o: in function `main': +/home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/conftest.c:37: undefined reference to `sin' +collect2: error: ld returned 1 exit status +configure:4612: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char sin (); +| int +| main () +| { +| return sin (); +| ; +| return 0; +| } +configure:4612: gcc -o conftest -g -O2 conftest.c -lm >&5 +conftest.c:33:6: warning: conflicting types for built-in function 'sin'; expected 'double(double)' [-Wbuiltin-declaration-mismatch] + 33 | char sin (); + | ^~~ +conftest.c:1:1: note: 'sin' is declared in header '' + 1 | /* confdefs.h */ +configure:4612: $? = 0 +configure:4629: result: -lm +configure:4641: checking for X +configure:4780: gcc -o conftest -g -O2 conftest.c -lX11 -lm >&5 +configure:4780: $? = 0 +configure:4830: result: libraries , headers +configure:4929: gcc -o conftest -g -O2 conftest.c -lm -lX11 >&5 +configure:4929: $? = 0 +configure:5027: checking for gethostbyname +configure:5027: gcc -o conftest -g -O2 conftest.c -lm >&5 +configure:5027: $? = 0 +configure:5027: result: yes +configure:5124: checking for connect +configure:5124: gcc -o conftest -g -O2 conftest.c -lm >&5 +configure:5124: $? = 0 +configure:5124: result: yes +configure:5173: checking for remove +configure:5173: gcc -o conftest -g -O2 conftest.c -lm >&5 +configure:5173: $? = 0 +configure:5173: result: yes +configure:5222: checking for shmat +configure:5222: gcc -o conftest -g -O2 conftest.c -lm >&5 +configure:5222: $? = 0 +configure:5222: result: yes +configure:5280: checking for IceConnectionNumber in -lICE +configure:5305: gcc -o conftest -g -O2 conftest.c -lICE -lm >&5 +configure:5305: $? = 0 +configure:5314: result: yes +configure:5328: checking for main in -lX11 +configure:5347: gcc -o conftest -g -O2 -lSM -lICE conftest.c -lX11 -lm >&5 +configure:5347: $? = 0 +configure:5356: result: yes +configure:5370: checking for main in -lXext +configure:5389: gcc -o conftest -g -O2 -lSM -lICE conftest.c -lXext -lX11 -lm >&5 +configure:5389: $? = 0 +configure:5398: result: yes +configure:5412: checking for main in -lXpm +configure:5431: gcc -o conftest -g -O2 -lSM -lICE conftest.c -lXpm -lXext -lX11 -lm >&5 +configure:5431: $? = 0 +configure:5440: result: yes +configure:5456: checking for pid_t +configure:5456: gcc -c -g -O2 conftest.c >&5 +configure:5456: $? = 0 +configure:5456: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:65:20: error: expected expression before ')' token + 65 | if (sizeof ((pid_t))) + | ^ +configure:5456: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((pid_t))) +| return 0; +| ; +| return 0; +| } +configure:5456: result: yes +configure:5467: checking return type of signal handlers +configure:5485: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:35:10: error: void value not ignored as it ought to be + 35 | return *(signal (0, 0)) (0) == 1; + | ~^~~~~~~~~~~~~~~~~~ +configure:5485: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| /* end confdefs.h. */ +| #include +| #include +| +| int +| main () +| { +| return *(signal (0, 0)) (0) == 1; +| ; +| return 0; +| } +configure:5492: result: void +configure:5500: checking for size_t +configure:5500: gcc -c -g -O2 conftest.c >&5 +configure:5500: $? = 0 +configure:5500: gcc -c -g -O2 conftest.c >&5 +conftest.c: In function 'main': +conftest.c:66:21: error: expected expression before ')' token + 66 | if (sizeof ((size_t))) + | ^ +configure:5500: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| int +| main () +| { +| if (sizeof ((size_t))) +| return 0; +| ; +| return 0; +| } +configure:5500: result: yes +configure:5550: checking for /proc/net/dev +configure:5563: result: yes +configure:5572: checking for FreeBSD sysctl availability +configure:5581: gcc -E conftest.c +conftest.c:31:26: fatal error: net/if_mib.h: No such file or directory + 31 | #include + | ^~~~~~~~~~~~~~ +compilation terminated. +configure:5581: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| +| #include +| #include +| +configure:5589: result: no +configure:5596: checking sys/stropts.h usability +configure:5596: gcc -c -g -O2 conftest.c >&5 +conftest.c:63:10: fatal error: sys/stropts.h: No such file or directory + 63 | #include + | ^~~~~~~~~~~~~~~ +compilation terminated. +configure:5596: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:5596: result: no +configure:5596: checking sys/stropts.h presence +configure:5596: gcc -E conftest.c +conftest.c:30:10: fatal error: sys/stropts.h: No such file or directory + 30 | #include + | ^~~~~~~~~~~~~~~ +compilation terminated. +configure:5596: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| #include +configure:5596: result: no +configure:5596: checking for sys/stropts.h +configure:5596: result: no +configure:5624: checking kstat.h usability +configure:5624: gcc -c -g -O2 conftest.c >&5 +conftest.c:63:10: fatal error: kstat.h: No such file or directory + 63 | #include + | ^~~~~~~~~ +compilation terminated. +configure:5624: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:5624: result: no +configure:5624: checking kstat.h presence +configure:5624: gcc -E conftest.c +conftest.c:30:10: fatal error: kstat.h: No such file or directory + 30 | #include + | ^~~~~~~~~ +compilation terminated. +configure:5624: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| #include +configure:5624: result: no +configure:5624: checking for kstat.h +configure:5624: result: no +configure:5689: checking for NetBSD ioctl availability +configure:5703: gcc -c -g -O2 conftest.c >&5 +conftest.c:32:26: fatal error: sys/sockio.h: No such file or directory + 32 | #include + | ^~~~~~~~~~~~~~ +compilation terminated. +configure:5703: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| +| #include +| #include +| #include +| #include +| #include +| +| void aFunc() { ioctl(0, SIOCGIFDATA, NULL); } +| +configure:5711: result: no +configure:5718: checking pcp/pmapi.h usability +configure:5718: gcc -c -g -O2 conftest.c >&5 +conftest.c:63:10: fatal error: pcp/pmapi.h: No such file or directory + 63 | #include + | ^~~~~~~~~~~~~ +compilation terminated. +configure:5718: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| #include +| #ifdef HAVE_SYS_TYPES_H +| # include +| #endif +| #ifdef HAVE_SYS_STAT_H +| # include +| #endif +| #ifdef STDC_HEADERS +| # include +| # include +| #else +| # ifdef HAVE_STDLIB_H +| # include +| # endif +| #endif +| #ifdef HAVE_STRING_H +| # if !defined STDC_HEADERS && defined HAVE_MEMORY_H +| # include +| # endif +| # include +| #endif +| #ifdef HAVE_STRINGS_H +| # include +| #endif +| #ifdef HAVE_INTTYPES_H +| # include +| #endif +| #ifdef HAVE_STDINT_H +| # include +| #endif +| #ifdef HAVE_UNISTD_H +| # include +| #endif +| #include +configure:5718: result: no +configure:5718: checking pcp/pmapi.h presence +configure:5718: gcc -E conftest.c +conftest.c:30:10: fatal error: pcp/pmapi.h: No such file or directory + 30 | #include + | ^~~~~~~~~~~~~ +compilation terminated. +configure:5718: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| #include +configure:5718: result: no +configure:5718: checking for pcp/pmapi.h +configure:5718: result: no +configure:5783: checking net-snmp/net-snmp-config.h usability +configure:5783: gcc -c -g -O2 conftest.c >&5 +configure:5783: $? = 0 +configure:5783: result: yes +configure:5783: checking net-snmp/net-snmp-config.h presence +configure:5783: gcc -E conftest.c +configure:5783: $? = 0 +configure:5783: result: yes +configure:5783: checking for net-snmp/net-snmp-config.h +configure:5783: result: yes +configure:5785: checking for library containing snmp_sess_init +configure:5816: gcc -o conftest -g -O2 -lSM -lICE conftest.c -lXpm -lXext -lX11 -lm >&5 +/usr/bin/ld: /tmp/ccbdkNQK.o: in function `main': +/home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/conftest.c:41: undefined reference to `snmp_sess_init' +collect2: error: ld returned 1 exit status +configure:5816: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char snmp_sess_init (); +| int +| main () +| { +| return snmp_sess_init (); +| ; +| return 0; +| } +configure:5816: gcc -o conftest -g -O2 -lSM -lICE conftest.c -lsnmp -lXpm -lXext -lX11 -lm >&5 +/usr/bin/ld: cannot find -lsnmp +collect2: error: ld returned 1 exit status +configure:5816: $? = 1 +configure: failed program was: +| /* confdefs.h */ +| #define PACKAGE_NAME "wmnd" +| #define PACKAGE_TARNAME "wmnd" +| #define PACKAGE_VERSION "0.4.17" +| #define PACKAGE_STRING "wmnd 0.4.17" +| #define PACKAGE_BUGREPORT "wavexx@users.sf.net" +| #define PACKAGE_URL "" +| #define PACKAGE "wmnd" +| #define VERSION "0.4.17" +| #define STDC_HEADERS 1 +| #define TIME_WITH_SYS_TIME 1 +| #define HAVE_SYS_TYPES_H 1 +| #define HAVE_SYS_STAT_H 1 +| #define HAVE_STDLIB_H 1 +| #define HAVE_STRING_H 1 +| #define HAVE_MEMORY_H 1 +| #define HAVE_STRINGS_H 1 +| #define HAVE_INTTYPES_H 1 +| #define HAVE_STDINT_H 1 +| #define HAVE_UNISTD_H 1 +| #define HAVE_SYS_TIME_H 1 +| #define HAVE_NET_PPP_DEFS_H 1 +| #define HAVE_DECL_STRDUP 1 +| #define HAVE_DECL_GETOPT 1 +| #define HAVE_LIBX11 1 +| #define HAVE_LIBXEXT 1 +| #define HAVE_LIBXPM 1 +| #define RETSIGTYPE void +| /* end confdefs.h. */ +| +| /* Override any GCC internal prototype to avoid an error. +| Use char because int might match the return type of a GCC +| builtin and then its argument prototype would still apply. */ +| #ifdef __cplusplus +| extern "C" +| #endif +| char snmp_sess_init (); +| int +| main () +| { +| return snmp_sess_init (); +| ; +| return 0; +| } +configure:5816: gcc -o conftest -g -O2 -lSM -lICE conftest.c -lnetsnmp -lXpm -lXext -lX11 -lm >&5 +configure:5816: $? = 0 +configure:5833: result: -lnetsnmp +configure:5995: checking for inline +configure:6011: gcc -c -g -O2 conftest.c >&5 +configure:6011: $? = 0 +configure:6019: result: inline +configure:6043: checking size of unsigned int +configure:6048: gcc -o conftest -g -O2 -lSM -lICE conftest.c -lnetsnmp -lXpm -lXext -lX11 -lm >&5 +configure:6048: $? = 0 +configure:6048: ./conftest +configure:6048: $? = 0 +configure:6062: result: 4 +configure:6076: checking size of unsigned long +configure:6081: gcc -o conftest -g -O2 -lSM -lICE conftest.c -lnetsnmp -lXpm -lXext -lX11 -lm >&5 +configure:6081: $? = 0 +configure:6081: ./conftest +configure:6081: $? = 0 +configure:6095: result: 8 +configure:6232: creating ./config.status + +## ---------------------- ## +## Running config.status. ## +## ---------------------- ## + +This file was extended by wmnd config.status 0.4.17, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = + CONFIG_HEADERS = + CONFIG_LINKS = + CONFIG_COMMANDS = + $ ./config.status + +on m75q. + +config.status:892: creating Makefile +config.status:892: creating src/Makefile +config.status:892: creating config.h +config.status:1121: executing depfiles commands +configure:7557: configuration: + +disable trend support: no +enabled drivers: linux_proc generic_snmp testing_dummy +enabled display modes: traditional mgraph waveform wmwave wmnet sepgraphs twisted charts needle lines + + +## ---------------- ## +## Cache variables. ## +## ---------------- ## + +ac_cv_build=x86_64-unknown-linux-gnu +ac_cv_c_compiler_gnu=yes +ac_cv_c_inline=inline +ac_cv_env_CC_set= +ac_cv_env_CC_value= +ac_cv_env_CFLAGS_set= +ac_cv_env_CFLAGS_value= +ac_cv_env_CPPFLAGS_set= +ac_cv_env_CPPFLAGS_value= +ac_cv_env_CPP_set= +ac_cv_env_CPP_value= +ac_cv_env_LDFLAGS_set= +ac_cv_env_LDFLAGS_value= +ac_cv_env_LIBS_set= +ac_cv_env_LIBS_value= +ac_cv_env_XMKMF_set= +ac_cv_env_XMKMF_value= +ac_cv_env_build_alias_set= +ac_cv_env_build_alias_value= +ac_cv_env_host_alias_set= +ac_cv_env_host_alias_value= +ac_cv_env_target_alias_set= +ac_cv_env_target_alias_value= +ac_cv_file__proc_net_dev=yes +ac_cv_func_connect=yes +ac_cv_func_gethostbyname=yes +ac_cv_func_remove=yes +ac_cv_func_shmat=yes +ac_cv_have_decl_getopt=yes +ac_cv_have_decl_strdup=yes +ac_cv_have_x='have_x=yes ac_x_includes='\'''\'' ac_x_libraries='\'''\''' +ac_cv_header_inttypes_h=yes +ac_cv_header_kstat_h=no +ac_cv_header_memory_h=yes +ac_cv_header_net_ppp_defs_h=yes +ac_cv_header_net_snmp_net_snmp_config_h=yes +ac_cv_header_pcp_pmapi_h=no +ac_cv_header_stdc=yes +ac_cv_header_stdint_h=yes +ac_cv_header_stdlib_h=yes +ac_cv_header_string_h=yes +ac_cv_header_strings_h=yes +ac_cv_header_sys_stat_h=yes +ac_cv_header_sys_stropts_h=no +ac_cv_header_sys_time_h=yes +ac_cv_header_sys_types_h=yes +ac_cv_header_time=yes +ac_cv_header_unistd_h=yes +ac_cv_host=x86_64-unknown-linux-gnu +ac_cv_lib_ICE_IceConnectionNumber=yes +ac_cv_lib_X11=ac_cv_lib_X11_main +ac_cv_lib_X11_main=yes +ac_cv_lib_Xext=ac_cv_lib_Xext_main +ac_cv_lib_Xext_main=yes +ac_cv_lib_Xpm=ac_cv_lib_Xpm_main +ac_cv_lib_Xpm_main=yes +ac_cv_objext=o +ac_cv_path_EGREP='/usr/bin/grep -E' +ac_cv_path_GREP=/usr/bin/grep +ac_cv_path_install='/usr/bin/ginstall -c' +ac_cv_path_mkdir=/usr/bin/mkdir +ac_cv_prog_AWK=gawk +ac_cv_prog_CPP='gcc -E' +ac_cv_prog_ac_ct_CC=gcc +ac_cv_prog_cc_c89= +ac_cv_prog_cc_g=yes +ac_cv_prog_make_make_set=yes +ac_cv_search_sin=-lm +ac_cv_search_snmp_sess_init=-lnetsnmp +ac_cv_sizeof_unsigned_int=4 +ac_cv_sizeof_unsigned_long=8 +ac_cv_target=x86_64-unknown-linux-gnu +ac_cv_type_pid_t=yes +ac_cv_type_signal=void +ac_cv_type_size_t=yes +ac_cv_type_u_int=yes +am_cv_CC_dependencies_compiler_type=gcc3 + +## ----------------- ## +## Output variables. ## +## ----------------- ## + +ACLOCAL='${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run aclocal-1.11' +AMDEPBACKSLASH='\' +AMDEP_FALSE='#' +AMDEP_TRUE='' +AMTAR='$${TAR-tar}' +AUTOCONF='${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run autoconf' +AUTOHEADER='${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run autoheader' +AUTOMAKE='${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run automake-1.11' +AWK='gawk' +CC='gcc' +CCDEPMODE='depmode=gcc3' +CFLAGS='-g -O2 ' +CPP='gcc -E' +CPPFLAGS='' +CYGPATH_W='echo' +DEFS='-DHAVE_CONFIG_H' +DEPDIR='.deps' +ECHO_C='' +ECHO_N='-n' +ECHO_T='' +EGREP='/usr/bin/grep -E' +EXEEXT='' +GREP='/usr/bin/grep' +INSTALL_DATA='${INSTALL} -m 644' +INSTALL_PROGRAM='${INSTALL}' +INSTALL_SCRIPT='${INSTALL}' +INSTALL_STRIP_PROGRAM='$(install_sh) -c -s' +LDFLAGS=' -lSM -lICE ' +LIBOBJS='' +LIBS='-lnetsnmp -lXpm -lXext -lX11 -lm ' +LTLIBOBJS='' +MAKEINFO='${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run makeinfo' +MKDIR_P='/usr/bin/mkdir -p' +OBJEXT='o' +PACKAGE='wmnd' +PACKAGE_BUGREPORT='wavexx@users.sf.net' +PACKAGE_NAME='wmnd' +PACKAGE_STRING='wmnd 0.4.17' +PACKAGE_TARNAME='wmnd' +PACKAGE_URL='' +PACKAGE_VERSION='0.4.17' +PATH_SEPARATOR=':' +SET_MAKE='' +SHELL='/bin/sh' +STRIP='' +VERSION='0.4.17' +XMKMF='' +X_CFLAGS='' +X_EXTRA_LIBS='' +X_LIBS='' +X_PRE_LIBS=' -lSM -lICE' +ac_ct_CC='gcc' +am__EXEEXT_FALSE='' +am__EXEEXT_TRUE='#' +am__fastdepCC_FALSE='#' +am__fastdepCC_TRUE='' +am__include='include' +am__isrc='' +am__leading_dot='.' +am__nodep='_no' +am__quote='' +am__tar='$${TAR-tar} chof - "$$tardir"' +am__untar='$${TAR-tar} xf -' +bindir='${exec_prefix}/bin' +build='x86_64-unknown-linux-gnu' +build_alias='' +build_cpu='x86_64' +build_os='linux-gnu' +build_vendor='unknown' +datadir='${datarootdir}' +datarootdir='${prefix}/share' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +dvidir='${docdir}' +exec_prefix='${prefix}' +host='x86_64-unknown-linux-gnu' +host_alias='' +host_cpu='x86_64' +host_os='linux-gnu' +host_vendor='unknown' +htmldir='${docdir}' +includedir='${prefix}/include' +infodir='${datarootdir}/info' +install_sh='${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/install-sh' +libdir='${exec_prefix}/lib' +libexecdir='${exec_prefix}/libexec' +localedir='${datarootdir}/locale' +localstatedir='${prefix}/var' +mandir='${datarootdir}/man' +mkdir_p='/usr/bin/mkdir -p' +oldincludedir='/usr/include' +pdfdir='${docdir}' +prefix='/usr/local' +program_transform_name='s,x,x,' +psdir='${docdir}' +sbindir='${exec_prefix}/sbin' +sharedstatedir='${prefix}/com' +sysconfdir='${prefix}/etc' +target='x86_64-unknown-linux-gnu' +target_alias='' +target_cpu='x86_64' +target_os='linux-gnu' +target_vendor='unknown' + +## ----------- ## +## confdefs.h. ## +## ----------- ## + +/* confdefs.h */ +#define PACKAGE_NAME "wmnd" +#define PACKAGE_TARNAME "wmnd" +#define PACKAGE_VERSION "0.4.17" +#define PACKAGE_STRING "wmnd 0.4.17" +#define PACKAGE_BUGREPORT "wavexx@users.sf.net" +#define PACKAGE_URL "" +#define PACKAGE "wmnd" +#define VERSION "0.4.17" +#define STDC_HEADERS 1 +#define TIME_WITH_SYS_TIME 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_SYS_STAT_H 1 +#define HAVE_STDLIB_H 1 +#define HAVE_STRING_H 1 +#define HAVE_MEMORY_H 1 +#define HAVE_STRINGS_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_UNISTD_H 1 +#define HAVE_SYS_TIME_H 1 +#define HAVE_NET_PPP_DEFS_H 1 +#define HAVE_DECL_STRDUP 1 +#define HAVE_DECL_GETOPT 1 +#define HAVE_LIBX11 1 +#define HAVE_LIBXEXT 1 +#define HAVE_LIBXPM 1 +#define RETSIGTYPE void +#define USE_LINUX_PROC "linux_proc" +#define USE_GENERIC_SNMP "generic_snmp" +#define USE_TESTING_DUMMY "testing_dummy" +#define USE_TREND /**/ +#define NDEBUG 42 +#define USE_DRW_TRADITIONAL /**/ +#define USE_DRW_MGRAPH /**/ +#define USE_DRW_WAVEFORM /**/ +#define USE_DRW_WMWAVE /**/ +#define USE_DRW_WMNET /**/ +#define USE_DRW_SEPGRAPHS /**/ +#define USE_DRW_TWISTED /**/ +#define USE_DRW_CHARTS /**/ +#define USE_DRW_NEEDLE /**/ +#define USE_DRW_LINES /**/ +#define SIZEOF_UNSIGNED_INT 4 +#define SIZEOF_UNSIGNED_LONG 8 + +configure: exit 0 diff --git a/dockapps/wmnd/config.status b/dockapps/wmnd/config.status new file mode 100755 index 0000000..ffe4a5e --- /dev/null +++ b/dockapps/wmnd/config.status @@ -0,0 +1,1228 @@ +#! /bin/sh +# Generated by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by wmnd $as_me 0.4.17, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +# Files that config.status was made for. +config_files=" Makefile src/Makefile" +config_headers=" config.h" +config_commands=" depfiles" + +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +ac_cs_config="" +ac_cs_version="\ +wmnd config.status 0.4.17 +configured by ./configure, generated by GNU Autoconf 2.69, + with options \"$ac_cs_config\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='/home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd' +srcdir='.' +INSTALL='/usr/bin/ginstall -c' +MKDIR_P='/usr/bin/mkdir -p' +AWK='gawk' +test -n "$AWK" || AWK=awk +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +if $ac_cs_recheck; then + set X /bin/sh './configure' $ac_configure_extra_args --no-create --no-recursion + shift + $as_echo "running CONFIG_SHELL=/bin/sh $*" >&6 + CONFIG_SHELL='/bin/sh' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +# +# INIT-COMMANDS +# +AMDEP_TRUE="" ac_aux_dir="." + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["am__EXEEXT_FALSE"]="" +S["am__EXEEXT_TRUE"]="#" +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["X_EXTRA_LIBS"]="" +S["X_LIBS"]="" +S["X_PRE_LIBS"]=" -lSM -lICE" +S["X_CFLAGS"]="" +S["XMKMF"]="" +S["EGREP"]="/usr/bin/grep -E" +S["GREP"]="/usr/bin/grep" +S["CPP"]="gcc -E" +S["am__fastdepCC_FALSE"]="#" +S["am__fastdepCC_TRUE"]="" +S["CCDEPMODE"]="depmode=gcc3" +S["am__nodep"]="_no" +S["AMDEPBACKSLASH"]="\\" +S["AMDEP_FALSE"]="#" +S["AMDEP_TRUE"]="" +S["am__quote"]="" +S["am__include"]="include" +S["DEPDIR"]=".deps" +S["OBJEXT"]="o" +S["EXEEXT"]="" +S["ac_ct_CC"]="gcc" +S["CPPFLAGS"]="" +S["LDFLAGS"]=" -lSM -lICE " +S["CFLAGS"]="-g -O2 " +S["CC"]="gcc" +S["am__untar"]="$${TAR-tar} xf -" +S["am__tar"]="$${TAR-tar} chof - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="gawk" +S["mkdir_p"]="/usr/bin/mkdir -p" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="" +S["install_sh"]="${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/install-sh" +S["MAKEINFO"]="${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run makeinfo" +S["AUTOHEADER"]="${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run autoheader" +S["AUTOMAKE"]="${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run automake-1.11" +S["AUTOCONF"]="${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run autoconf" +S["ACLOCAL"]="${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run aclocal-1.11" +S["VERSION"]="0.4.17" +S["PACKAGE"]="wmnd" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_os"]="linux-gnu" +S["target_vendor"]="unknown" +S["target_cpu"]="x86_64" +S["target"]="x86_64-unknown-linux-gnu" +S["host_os"]="linux-gnu" +S["host_vendor"]="unknown" +S["host_cpu"]="x86_64" +S["host"]="x86_64-unknown-linux-gnu" +S["build_os"]="linux-gnu" +S["build_vendor"]="unknown" +S["build_cpu"]="x86_64" +S["build"]="x86_64-unknown-linux-gnu" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="" +S["LIBS"]="-lnetsnmp -lXpm -lXext -lX11 -lm " +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DHAVE_CONFIG_H" +S["mandir"]="${datarootdir}/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="${exec_prefix}/lib" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${datarootdir}/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["localstatedir"]="${prefix}/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="${prefix}/etc" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="${exec_prefix}/bin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr/local" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="wavexx@users.sf.net" +S["PACKAGE_STRING"]="wmnd 0.4.17" +S["PACKAGE_VERSION"]="0.4.17" +S["PACKAGE_TARNAME"]="wmnd" +S["PACKAGE_NAME"]="wmnd" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/sh" +_ACAWK +cat >>"$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +D["PACKAGE_NAME"]=" \"wmnd\"" +D["PACKAGE_TARNAME"]=" \"wmnd\"" +D["PACKAGE_VERSION"]=" \"0.4.17\"" +D["PACKAGE_STRING"]=" \"wmnd 0.4.17\"" +D["PACKAGE_BUGREPORT"]=" \"wavexx@users.sf.net\"" +D["PACKAGE_URL"]=" \"\"" +D["PACKAGE"]=" \"wmnd\"" +D["VERSION"]=" \"0.4.17\"" +D["STDC_HEADERS"]=" 1" +D["TIME_WITH_SYS_TIME"]=" 1" +D["HAVE_SYS_TYPES_H"]=" 1" +D["HAVE_SYS_STAT_H"]=" 1" +D["HAVE_STDLIB_H"]=" 1" +D["HAVE_STRING_H"]=" 1" +D["HAVE_MEMORY_H"]=" 1" +D["HAVE_STRINGS_H"]=" 1" +D["HAVE_INTTYPES_H"]=" 1" +D["HAVE_STDINT_H"]=" 1" +D["HAVE_UNISTD_H"]=" 1" +D["HAVE_SYS_TIME_H"]=" 1" +D["HAVE_NET_PPP_DEFS_H"]=" 1" +D["HAVE_DECL_STRDUP"]=" 1" +D["HAVE_DECL_GETOPT"]=" 1" +D["HAVE_LIBX11"]=" 1" +D["HAVE_LIBXEXT"]=" 1" +D["HAVE_LIBXPM"]=" 1" +D["RETSIGTYPE"]=" void" +D["USE_LINUX_PROC"]=" \"linux_proc\"" +D["USE_GENERIC_SNMP"]=" \"generic_snmp\"" +D["USE_TESTING_DUMMY"]=" \"testing_dummy\"" +D["USE_TREND"]=" /**/" +D["NDEBUG"]=" 42" +D["USE_DRW_TRADITIONAL"]=" /**/" +D["USE_DRW_MGRAPH"]=" /**/" +D["USE_DRW_WAVEFORM"]=" /**/" +D["USE_DRW_WMWAVE"]=" /**/" +D["USE_DRW_WMNET"]=" /**/" +D["USE_DRW_SEPGRAPHS"]=" /**/" +D["USE_DRW_TWISTED"]=" /**/" +D["USE_DRW_CHARTS"]=" /**/" +D["USE_DRW_NEEDLE"]=" /**/" +D["USE_DRW_LINES"]=" /**/" +D["SIZEOF_UNSIGNED_INT"]=" 4" +D["SIZEOF_UNSIGNED_LONG"]=" 8" + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+[_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ][_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789]*([\t (]|$)/ { + line = $ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${datarootdir}/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${datarootdir}/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 diff --git a/dockapps/wmnd/config.sub b/dockapps/wmnd/config.sub new file mode 100755 index 0000000..6205f84 --- /dev/null +++ b/dockapps/wmnd/config.sub @@ -0,0 +1,1782 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. + +timestamp='2012-04-18' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 +Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ + linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | be32 | be64 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | epiphany \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nds32 | nds32le | nds32be \ + | nios | nios2 \ + | ns16k | ns32k \ + | open8 \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ + | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + c54x) + basic_machine=tic54x-unknown + ;; + c55x) + basic_machine=tic55x-unknown + ;; + c6x) + basic_machine=tic6x-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nds32-* | nds32le-* | nds32be-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ + | tile*-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c54x-*) + basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c55x-*) + basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c6x-*) + basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16 | cr16-*) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + msys) + basic_machine=i386-pc + os=-msys + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + neo-tandem) + basic_machine=neo-tandem + ;; + nse-tandem) + basic_machine=nse-tandem + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc | ppcbe) basic_machine=powerpc-unknown + ;; + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tile*) + basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -nacl*) + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + hexagon-*) + os=-elf + ;; + tic54x-*) + os=-coff + ;; + tic55x-*) + os=-coff + ;; + tic6x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/dockapps/wmnd/configure b/dockapps/wmnd/configure new file mode 100755 index 0000000..6efd1ee --- /dev/null +++ b/dockapps/wmnd/configure @@ -0,0 +1,7571 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for wmnd 0.4.17. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: wavexx@users.sf.net about your system, including any +$0: error possibly output before this message. Then install +$0: a modern shell, or manually run the script under such a +$0: shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='wmnd' +PACKAGE_TARNAME='wmnd' +PACKAGE_VERSION='0.4.17' +PACKAGE_STRING='wmnd 0.4.17' +PACKAGE_BUGREPORT='wavexx@users.sf.net' +PACKAGE_URL='' + +ac_unique_file="src/wmnd.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +X_EXTRA_LIBS +X_LIBS +X_PRE_LIBS +X_CFLAGS +XMKMF +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_os +target_vendor +target_cpu +target +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_dependency_tracking +with_x +enable_drivers +enable_dummy_driver +enable_trend +enable_debug +enable_modes +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +XMKMF' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures wmnd 0.4.17 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/wmnd] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] + --target=TARGET configure for building compilers for TARGET [HOST] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of wmnd 0.4.17:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --disable-dependency-tracking speeds up one-time build + --enable-dependency-tracking do not reject slow dependency extractors + --enable-drivers="..." manually selects drivers. defaults to auto + --disable-dummy-driver disable the dummy driver + --disable-trend disable trend support + --enable-debug find the meaning of life, and everything + --enable-modes="..." manually select visual modes. defaults to all + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-x use the X Window System + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + XMKMF Path to xmkmf, Makefile generator for X Window System + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +wmnd configure 0.4.17 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ---------------------------------- ## +## Report this to wavexx@users.sf.net ## +## ---------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type + +# ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES +# --------------------------------------------- +# Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR +# accordingly. +ac_fn_c_check_decl () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + as_decl_name=`echo $2|sed 's/ *(.*//'` + as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 +$as_echo_n "checking whether $as_decl_name is declared... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +#ifndef $as_decl_name +#ifdef __cplusplus + (void) $as_decl_use; +#else + (void) $as_decl_name; +#endif +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_decl + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES +# -------------------------------------------- +# Tries to find the compile-time value of EXPR in a program that includes +# INCLUDES, setting VAR accordingly. Returns whether the value could be +# computed +ac_fn_c_compute_int () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=0 ac_mid=0 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid; break +else + as_fn_arith $ac_mid + 1 && ac_lo=$as_val + if test $ac_lo -le $ac_mid; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) < 0)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=-1 ac_mid=-1 + while :; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) >= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_lo=$ac_mid; break +else + as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val + if test $ac_mid -le $ac_hi; then + ac_lo= ac_hi= + break + fi + as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + done +else + ac_lo= ac_hi= +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# Binary search between lo and hi bounds. +while test "x$ac_lo" != "x$ac_hi"; do + as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +static int test_array [1 - 2 * !(($2) <= $ac_mid)]; +test_array [0] = 0; +return test_array [0]; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_hi=$ac_mid +else + as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +done +case $ac_lo in #(( +?*) eval "$3=\$ac_lo"; ac_retval=0 ;; +'') ac_retval=1 ;; +esac + else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +static long int longval () { return $2; } +static unsigned long int ulongval () { return $2; } +#include +#include +int +main () +{ + + FILE *f = fopen ("conftest.val", "w"); + if (! f) + return 1; + if (($2) < 0) + { + long int i = longval (); + if (i != ($2)) + return 1; + fprintf (f, "%ld", i); + } + else + { + unsigned long int i = ulongval (); + if (i != ($2)) + return 1; + fprintf (f, "%lu", i); + } + /* Do not output a trailing newline, as this causes \r\n confusion + on some platforms. */ + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + echo >>conftest.val; read $3 config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by wmnd $as_me 0.4.17, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +$as_echo_n "checking target system type... " >&6; } +if ${ac_cv_target+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$target_alias" = x; then + ac_cv_target=$ac_cv_host +else + ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +$as_echo "$ac_cv_target" >&6; } +case $ac_cv_target in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +esac +target=$ac_cv_target +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_target +shift +target_cpu=$1 +target_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +target_os=$* +IFS=$ac_save_IFS +case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac + + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- +am__api_version='1.11' + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Just in case +sleep 1 +echo timestamp > conftest.file +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; +esac + +# Do `set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + rm -f conftest.file + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +alias in your environment" "$LINENO" 5 + fi + + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --run true"; then + am_missing_run="$MISSING --run " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using `strip' when the user +# run `make install-strip'. However `strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the `STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +mkdir_p="$MKDIR_P" +case $mkdir_p in + [\\/$]* | ?:[\\/]*) ;; + */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; +esac + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='wmnd' + VERSION='0.4.17' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + +ac_config_headers="$ac_config_headers config.h" + + +# C compiler rules +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from `make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named `D' -- because `-MD' means `put the output + # in D'. + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with + # Solaris 8's {/usr,}/bin/sh. + touch sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with `-c' and `-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle `-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # after this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok `-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if ${ac_cv_header_time+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_time=yes +else + ac_cv_header_time=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in sys/time.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_TIME_H 1 +_ACEOF + +fi + +done + +for ac_header in net/ppp_defs.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "net/ppp_defs.h" "ac_cv_header_net_ppp_defs_h" "$ac_includes_default" +if test "x$ac_cv_header_net_ppp_defs_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_NET_PPP_DEFS_H 1 +_ACEOF + +fi + +done + + +# extend the namespace when building with strict c99 but do so conditionally, +# since it breaks FreeBSD's 8.1 which hasn't proper namespace separation. +ac_fn_c_check_type "$LINENO" "u_int" "ac_cv_type_u_int" "$ac_includes_default" +if test "x$ac_cv_type_u_int" = xyes; then : + +else + + +$as_echo "#define _BSD_SOURCE /**/" >>confdefs.h + + +fi + +ac_fn_c_check_decl "$LINENO" "strdup" "ac_cv_have_decl_strdup" "$ac_includes_default" +if test "x$ac_cv_have_decl_strdup" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_STRDUP $ac_have_decl +_ACEOF +if test $ac_have_decl = 1; then : + +else + + +$as_echo "#define _XOPEN_SOURCE 600" >>confdefs.h + + +fi +ac_fn_c_check_decl "$LINENO" "getopt" "ac_cv_have_decl_getopt" "$ac_includes_default" +if test "x$ac_cv_have_decl_getopt" = xyes; then : + ac_have_decl=1 +else + ac_have_decl=0 +fi + +cat >>confdefs.h <<_ACEOF +#define HAVE_DECL_GETOPT $ac_have_decl +_ACEOF +if test $ac_have_decl = 1; then : + +else + + +$as_echo "#define _XOPEN_SOURCE 600" >>confdefs.h + + +fi + + +# math library +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing sin" >&5 +$as_echo_n "checking for library containing sin... " >&6; } +if ${ac_cv_search_sin+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char sin (); +int +main () +{ +return sin (); + ; + return 0; +} +_ACEOF +for ac_lib in '' m; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_sin=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_sin+:} false; then : + break +fi +done +if ${ac_cv_search_sin+:} false; then : + +else + ac_cv_search_sin=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_sin" >&5 +$as_echo "$ac_cv_search_sin" >&6; } +ac_res=$ac_cv_search_sin +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + as_fn_error $? "math library is required" "$LINENO" 5 +fi + + +# X libraries +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 +$as_echo_n "checking for X... " >&6; } + + +# Check whether --with-x was given. +if test "${with_x+set}" = set; then : + withval=$with_x; +fi + +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + case $x_includes,$x_libraries in #( + *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( + *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : + $as_echo_n "(cached) " >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -f -r conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + cat >Imakefile <<'_ACEOF' +incroot: + @echo incroot='${INCROOT}' +usrlibdir: + @echo usrlibdir='${USRLIBDIR}' +libdir: + @echo libdir='${LIBDIR}' +_ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl dylib la dll; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ac_x_includes= ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /usr/lib64 | /lib | /lib64) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -f -r conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R7/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R7 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R7/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R7 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Xlib.h. + # First, try using that file with no special directory specified. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # We can compile using X headers with no special include directory. +ac_x_includes= +else + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.i conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lX11 $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +XrmInitialize () + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + LIBS=$ac_save_LIBS +for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl dylib la dll; do + if test -r "$ac_dir/libX11.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +case $ac_x_includes,$ac_x_libraries in #( + no,* | *,no | *\'*) + # Didn't find X, or a directory has "'" in its name. + ac_cv_have_x="have_x=no";; #( + *) + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$ac_x_includes'\ + ac_x_libraries='$ac_x_libraries'" +esac +fi +;; #( + *) have_x=yes;; + esac + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 +$as_echo "$have_x" >&6; } + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$x_includes'\ + ac_x_libraries='$x_libraries'" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 +$as_echo "libraries $x_libraries, headers $x_includes" >&6; } +fi + +if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h + + X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 +$as_echo_n "checking whether -R must be followed by a space... " >&6; } + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + ac_xsave_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + X_LIBS="$X_LIBS -R$x_libraries" +else + LIBS="$ac_xsave_LIBS -R $x_libraries" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + X_LIBS="$X_LIBS -R $x_libraries" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 +$as_echo "neither works" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_c_werror_flag=$ac_xsave_c_werror_flag + LIBS=$ac_xsave_LIBS + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XOpenDisplay (); +int +main () +{ +return XOpenDisplay (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 +$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } +if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dnet_ntoa (); +int +main () +{ +return dnet_ntoa (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dnet_dnet_ntoa=yes +else + ac_cv_lib_dnet_dnet_ntoa=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } +if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" +fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 +$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } +if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet_stub $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dnet_ntoa (); +int +main () +{ +return dnet_ntoa (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dnet_stub_dnet_ntoa=yes +else + ac_cv_lib_dnet_stub_dnet_ntoa=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } +if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" +fi + + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_xsave_LIBS" + + # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes; then : + +fi + + if test $ac_cv_func_gethostbyname = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +if ${ac_cv_lib_nsl_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_gethostbyname=yes +else + ac_cv_lib_nsl_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" +fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 +$as_echo_n "checking for gethostbyname in -lbsd... " >&6; } +if ${ac_cv_lib_bsd_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_bsd_gethostbyname=yes +else + ac_cv_lib_bsd_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 +$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } +if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" +fi + + fi + fi + + # lieder@skyler.mavd.honeywell.com says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the name server (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" +if test "x$ac_cv_func_connect" = xyes; then : + +fi + + if test $ac_cv_func_connect = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 +$as_echo_n "checking for connect in -lsocket... " >&6; } +if ${ac_cv_lib_socket_connect+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $X_EXTRA_LIBS $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char connect (); +int +main () +{ +return connect (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_connect=yes +else + ac_cv_lib_socket_connect=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 +$as_echo "$ac_cv_lib_socket_connect" >&6; } +if test "x$ac_cv_lib_socket_connect" = xyes; then : + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" +fi + + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" +if test "x$ac_cv_func_remove" = xyes; then : + +fi + + if test $ac_cv_func_remove = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 +$as_echo_n "checking for remove in -lposix... " >&6; } +if ${ac_cv_lib_posix_remove+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lposix $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char remove (); +int +main () +{ +return remove (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_posix_remove=yes +else + ac_cv_lib_posix_remove=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 +$as_echo "$ac_cv_lib_posix_remove" >&6; } +if test "x$ac_cv_lib_posix_remove" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +fi + + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" +if test "x$ac_cv_func_shmat" = xyes; then : + +fi + + if test $ac_cv_func_shmat = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 +$as_echo_n "checking for shmat in -lipc... " >&6; } +if ${ac_cv_lib_ipc_shmat+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lipc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shmat (); +int +main () +{ +return shmat (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ipc_shmat=yes +else + ac_cv_lib_ipc_shmat=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 +$as_echo "$ac_cv_lib_ipc_shmat" >&6; } +if test "x$ac_cv_lib_ipc_shmat" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +fi + + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 +$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } +if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lICE $X_EXTRA_LIBS $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char IceConnectionNumber (); +int +main () +{ +return IceConnectionNumber (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ICE_IceConnectionNumber=yes +else + ac_cv_lib_ICE_IceConnectionNumber=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } +if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +fi + + LDFLAGS=$ac_save_LDFLAGS + +fi + +CFLAGS="$CFLAGS $X_CFLAGS" +LDFLAGS="$LDFLAGS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS" + +# check for XPM headers, libraries +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lX11" >&5 +$as_echo_n "checking for main in -lX11... " >&6; } +if ${ac_cv_lib_X11_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lX11 $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_X11_main=yes +else + ac_cv_lib_X11_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_X11_main" >&5 +$as_echo "$ac_cv_lib_X11_main" >&6; } +if test "x$ac_cv_lib_X11_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBX11 1 +_ACEOF + + LIBS="-lX11 $LIBS" + +else + as_fn_error $? "X11 library is required" "$LINENO" 5 +fi +ac_cv_lib_X11=ac_cv_lib_X11_main + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lXext" >&5 +$as_echo_n "checking for main in -lXext... " >&6; } +if ${ac_cv_lib_Xext_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXext $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_Xext_main=yes +else + ac_cv_lib_Xext_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xext_main" >&5 +$as_echo "$ac_cv_lib_Xext_main" >&6; } +if test "x$ac_cv_lib_Xext_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBXEXT 1 +_ACEOF + + LIBS="-lXext $LIBS" + +else + as_fn_error $? "Xext library is required" "$LINENO" 5 +fi +ac_cv_lib_Xext=ac_cv_lib_Xext_main + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for main in -lXpm" >&5 +$as_echo_n "checking for main in -lXpm... " >&6; } +if ${ac_cv_lib_Xpm_main+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXpm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + +int +main () +{ +return main (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_Xpm_main=yes +else + ac_cv_lib_Xpm_main=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_Xpm_main" >&5 +$as_echo "$ac_cv_lib_Xpm_main" >&6; } +if test "x$ac_cv_lib_Xpm_main" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBXPM 1 +_ACEOF + + LIBS="-lXpm $LIBS" + +else + as_fn_error $? "Xpm library is required" "$LINENO" 5 +fi +ac_cv_lib_Xpm=ac_cv_lib_Xpm_main + + +# check for standard typedefs +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } +if ${ac_cv_type_signal+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +return *(signal (0, 0)) (0) == 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_signal=int +else + ac_cv_type_signal=void +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + + + +# like AC_ARG_ENABLE, but with COMMON SENSE(tm) added + + + + + +# drivers selection + + # Check whether --enable-drivers was given. +if test "${enable_drivers+set}" = set; then : + enableval=$enable_drivers; +else + enableval="no" +fi + + if test "$enableval" = "no"; then : + + # let the user specify an empty set + ac_drivers="auto" + +else + + ac_drivers="$enable_drivers" + { $as_echo "$as_me:${as_lineno-$LINENO}: overriding driver autodetection: $ac_drivers" >&5 +$as_echo "$as_me: overriding driver autodetection: $ac_drivers" >&6;} + +fi + + +# driver detection block: skip this block if the user manually specify +# drivers on the command line +if test "$ac_drivers" = "auto"; then : + + # reset the state variable + ac_drivers="" + + # linux_proc + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /proc/net/dev" >&5 +$as_echo_n "checking for /proc/net/dev... " >&6; } +if ${ac_cv_file__proc_net_dev+:} false; then : + $as_echo_n "(cached) " >&6 +else + test "$cross_compiling" = yes && + as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 +if test -r "/proc/net/dev"; then + ac_cv_file__proc_net_dev=yes +else + ac_cv_file__proc_net_dev=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__proc_net_dev" >&5 +$as_echo "$ac_cv_file__proc_net_dev" >&6; } +if test "x$ac_cv_file__proc_net_dev" = xyes; then : + ac_drivers="$ac_drivers linux_proc" + +fi + + + # freebsd_sysctl + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for FreeBSD sysctl availability" >&5 +$as_echo_n "checking for FreeBSD sysctl availability... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + + ac_drivers="$ac_drivers freebsd_sysctl" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # solaris_fpppd + ac_fn_c_check_header_mongrel "$LINENO" "sys/stropts.h" "ac_cv_header_sys_stropts_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_stropts_h" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for /dev/ppp" >&5 +$as_echo_n "checking for /dev/ppp... " >&6; } +if ${ac_cv_file__dev_ppp+:} false; then : + $as_echo_n "(cached) " >&6 +else + test "$cross_compiling" = yes && + as_fn_error $? "cannot check for file existence when cross compiling" "$LINENO" 5 +if test -r "/dev/ppp"; then + ac_cv_file__dev_ppp=yes +else + ac_cv_file__dev_ppp=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_file__dev_ppp" >&5 +$as_echo "$ac_cv_file__dev_ppp" >&6; } +if test "x$ac_cv_file__dev_ppp" = xyes; then : + ac_drivers="$ac_drivers solaris_fpppd" + +fi + + +fi + + + + # solaris_kstat + ac_fn_c_check_header_mongrel "$LINENO" "kstat.h" "ac_cv_header_kstat_h" "$ac_includes_default" +if test "x$ac_cv_header_kstat_h" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing kstat_open" >&5 +$as_echo_n "checking for library containing kstat_open... " >&6; } +if ${ac_cv_search_kstat_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char kstat_open (); +int +main () +{ +return kstat_open (); + ; + return 0; +} +_ACEOF +for ac_lib in '' kstat; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_kstat_open=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_kstat_open+:} false; then : + break +fi +done +if ${ac_cv_search_kstat_open+:} false; then : + +else + ac_cv_search_kstat_open=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_kstat_open" >&5 +$as_echo "$ac_cv_search_kstat_open" >&6; } +ac_res=$ac_cv_search_kstat_open +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + ac_drivers="$ac_drivers solaris_kstat" + +fi + + +fi + + + + # netbsd_ioctl + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for NetBSD ioctl availability" >&5 +$as_echo_n "checking for NetBSD ioctl availability... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + + #include + #include + #include + #include + #include + + void aFunc() { ioctl(0, SIOCGIFDATA, NULL); } + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + + ac_drivers="$ac_drivers netbsd_ioctl" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +else + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + + # irix_pcp + ac_fn_c_check_header_mongrel "$LINENO" "pcp/pmapi.h" "ac_cv_header_pcp_pmapi_h" "$ac_includes_default" +if test "x$ac_cv_header_pcp_pmapi_h" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pmLookupName" >&5 +$as_echo_n "checking for library containing pmLookupName... " >&6; } +if ${ac_cv_search_pmLookupName+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pmLookupName (); +int +main () +{ +return pmLookupName (); + ; + return 0; +} +_ACEOF +for ac_lib in '' pcp; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_pmLookupName=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_pmLookupName+:} false; then : + break +fi +done +if ${ac_cv_search_pmLookupName+:} false; then : + +else + ac_cv_search_pmLookupName=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pmLookupName" >&5 +$as_echo "$ac_cv_search_pmLookupName" >&6; } +ac_res=$ac_cv_search_pmLookupName +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + ac_drivers="$ac_drivers irix_pcp" + +fi + + +fi + + + + # generic_snmp + ac_fn_c_check_header_mongrel "$LINENO" "net-snmp/net-snmp-config.h" "ac_cv_header_net_snmp_net_snmp_config_h" "$ac_includes_default" +if test "x$ac_cv_header_net_snmp_net_snmp_config_h" = xyes; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing snmp_sess_init" >&5 +$as_echo_n "checking for library containing snmp_sess_init... " >&6; } +if ${ac_cv_search_snmp_sess_init+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char snmp_sess_init (); +int +main () +{ +return snmp_sess_init (); + ; + return 0; +} +_ACEOF +for ac_lib in '' snmp netsnmp; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_snmp_sess_init=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_snmp_sess_init+:} false; then : + break +fi +done +if ${ac_cv_search_snmp_sess_init+:} false; then : + +else + ac_cv_search_snmp_sess_init=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_snmp_sess_init" >&5 +$as_echo "$ac_cv_search_snmp_sess_init" >&6; } +ac_res=$ac_cv_search_snmp_sess_init +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + ac_drivers="$ac_drivers generic_snmp" + +fi + + +fi + + + +fi +for driver in $ac_drivers; +do + # we must repeat the define constants many times + # to make autoheader automatically recognize them all + case "$driver" in + linux_proc) +$as_echo "#define USE_LINUX_PROC \"linux_proc\"" >>confdefs.h +;; + freebsd_sysctl) +$as_echo "#define USE_FREEBSD_SYSCTL \"freebsd_sysctl\"" >>confdefs.h +;; + netbsd_ioctl) +$as_echo "#define USE_NETBSD_IOCTL \"netbsd_ioctl\"" >>confdefs.h +;; + solaris_fpppd) +$as_echo "#define USE_SOLARIS_FPPPD \"solaris_fpppd\"" >>confdefs.h +;; + solaris_kstat) +$as_echo "#define USE_SOLARIS_KSTAT \"solaris_kstat\"" >>confdefs.h +;; + irix_pcp) +$as_echo "#define USE_IRIX_PCP \"irix_pcp\"" >>confdefs.h +;; + generic_snmp) +$as_echo "#define USE_GENERIC_SNMP \"generic_snmp\"" >>confdefs.h +;; + *) as_fn_error $? "unknown driver name $driver" "$LINENO" 5;; + esac + + drivers="$drivers $driver" +done + + +# Dummy driver + + # Check whether --enable-dummy-driver was given. +if test "${enable_dummy_driver+set}" = set; then : + enableval=$enable_dummy_driver; +else + enableval="yes" +fi + + if test "$enableval" = "no"; then : + +else + + drivers="$drivers testing_dummy" + +$as_echo "#define USE_TESTING_DUMMY \"testing_dummy\"" >>confdefs.h + + +fi + + +# trend support + + # Check whether --enable-trend was given. +if test "${enable_trend+set}" = set; then : + enableval=$enable_trend; +else + enableval="yes" +fi + + if test "$enableval" = "no"; then : + +else + +$as_echo "#define USE_TREND /**/" >>confdefs.h + + +fi + + +# debugging + + # Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; +else + enableval="no" +fi + + if test "$enableval" = "no"; then : + +$as_echo "#define NDEBUG 42" >>confdefs.h + + +fi + + +# display modes selection + + # Check whether --enable-modes was given. +if test "${enable_modes+set}" = set; then : + enableval=$enable_modes; +else + enableval="no" +fi + + if test "$enableval" = "no"; then : + enable_modes="traditional mgraph waveform wmwave wmnet sepgraphs twisted charts needle lines" + +fi + +for mode in $enable_modes; +do + # we must repeat the define constants many times + # to make autoheader automatically recognize them all + case "$mode" in + traditional) +$as_echo "#define USE_DRW_TRADITIONAL /**/" >>confdefs.h +;; + mgraph) +$as_echo "#define USE_DRW_MGRAPH /**/" >>confdefs.h +;; + waveform) +$as_echo "#define USE_DRW_WAVEFORM /**/" >>confdefs.h +;; + wmwave) +$as_echo "#define USE_DRW_WMWAVE /**/" >>confdefs.h +;; + wmnet) +$as_echo "#define USE_DRW_WMNET /**/" >>confdefs.h +;; + sepgraphs) +$as_echo "#define USE_DRW_SEPGRAPHS /**/" >>confdefs.h +;; + twisted) +$as_echo "#define USE_DRW_TWISTED /**/" >>confdefs.h +;; + charts) +$as_echo "#define USE_DRW_CHARTS /**/" >>confdefs.h +;; + needle) +$as_echo "#define USE_DRW_NEEDLE /**/" >>confdefs.h +;; + lines) +$as_echo "#define USE_DRW_LINES /**/" >>confdefs.h +;; + *) as_fn_error $? "unknown display mode $mode" "$LINENO" 5;; + esac + + dspmodes="$dspmodes $mode" +done + + +# check for inline statement useability +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + + +# check for basic type sizes +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned int" >&5 +$as_echo_n "checking size of unsigned int... " >&6; } +if ${ac_cv_sizeof_unsigned_int+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned int))" "ac_cv_sizeof_unsigned_int" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_unsigned_int" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (unsigned int) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_unsigned_int=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_int" >&5 +$as_echo "$ac_cv_sizeof_unsigned_int" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_INT $ac_cv_sizeof_unsigned_int +_ACEOF + + +# The cast to long int works around a bug in the HP C Compiler +# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects +# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. +# This bug is HP SR number 8606223364. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of unsigned long" >&5 +$as_echo_n "checking size of unsigned long... " >&6; } +if ${ac_cv_sizeof_unsigned_long+:} false; then : + $as_echo_n "(cached) " >&6 +else + if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (unsigned long))" "ac_cv_sizeof_unsigned_long" "$ac_includes_default"; then : + +else + if test "$ac_cv_type_unsigned_long" = yes; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "cannot compute sizeof (unsigned long) +See \`config.log' for more details" "$LINENO" 5; } + else + ac_cv_sizeof_unsigned_long=0 + fi +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_unsigned_long" >&5 +$as_echo "$ac_cv_sizeof_unsigned_long" >&6; } + + + +cat >>confdefs.h <<_ACEOF +#define SIZEOF_UNSIGNED_LONG $ac_cv_sizeof_unsigned_long +_ACEOF + + + +# output files +ac_config_files="$ac_config_files Makefile src/Makefile" + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by wmnd $as_me 0.4.17, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +wmnd config.status 0.4.17 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Autoconf 2.62 quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named `Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running `make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # When using ansi2knr, U may be empty or an underscore; expand it + U=`sed -n 's/^U = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: configuration: + +disable trend support: ${disable_trend:-no} +enabled drivers: ${drivers:- none} +enabled display modes:${dspmodes:- none} +" >&5 +$as_echo "$as_me: configuration: + +disable trend support: ${disable_trend:-no} +enabled drivers: ${drivers:- none} +enabled display modes:${dspmodes:- none} +" >&6;} diff --git a/dockapps/wmnd/configure.ac b/dockapps/wmnd/configure.ac new file mode 100644 index 0000000..ade573f --- /dev/null +++ b/dockapps/wmnd/configure.ac @@ -0,0 +1,236 @@ +# process this file with autoconf >= 2.5 to produce a configure script. +# report bugs and comments to wavexx@users.sf.net + +# initialization +AC_INIT(wmnd, 0.4.17, wavexx@users.sf.net) +AC_CONFIG_SRCDIR(src/wmnd.c) +AC_CANONICAL_TARGET +AM_INIT_AUTOMAKE +AM_CONFIG_HEADER(config.h) + +# C compiler rules +AC_LANG([C]) +AC_PROG_CC +AC_HEADER_STDC +AC_HEADER_TIME +AC_CHECK_HEADERS(sys/time.h) +AC_CHECK_HEADERS(net/ppp_defs.h) + +# extend the namespace when building with strict c99 but do so conditionally, +# since it breaks FreeBSD's 8.1 which hasn't proper namespace separation. +AC_CHECK_TYPE([u_int],, [ + AC_DEFINE(_BSD_SOURCE,, [BSD function declarations]) +]) +AC_CHECK_DECLS([strdup, getopt],, [ + AC_DEFINE(_XOPEN_SOURCE, 600, [XOPEN function declarations]) +]) + +# math library +AC_SEARCH_LIBS(sin, m,, [AC_MSG_ERROR(math library is required)]) + +# X libraries +AC_PATH_XTRA +CFLAGS="$CFLAGS $X_CFLAGS" +LDFLAGS="$LDFLAGS $X_PRE_LIBS $X_LIBS $X_EXTRA_LIBS" + +# check for XPM headers, libraries +AC_HAVE_LIBRARY(X11,, [AC_MSG_ERROR(X11 library is required)]) +AC_HAVE_LIBRARY(Xext,, [AC_MSG_ERROR(Xext library is required)]) +AC_HAVE_LIBRARY(Xpm,, [AC_MSG_ERROR(Xpm library is required)]) + +# check for standard typedefs +AC_TYPE_PID_T +AC_TYPE_SIGNAL +AC_TYPE_SIZE_T + + +# like AC_ARG_ENABLE, but with COMMON SENSE(tm) added +AC_DEFUN([ARG_ENABLE], +[ + AC_ARG_ENABLE([$1], [$2],, [enableval="no"]) + AS_IF([test "$enableval" = "no"], [$4], [$3]) +]) + +AC_DEFUN([ARG_DISABLE], +[ + AC_ARG_ENABLE([$1], [$2],, [enableval="yes"]) + AS_IF([test "$enableval" = "no"], [$3], [$4]) +]) + + +# drivers selection +ARG_ENABLE(drivers, + [AS_HELP_STRING( + [--enable-drivers="..."], + [manually selects drivers. defaults to auto])], +[ + ac_drivers="$enable_drivers" + AC_MSG_NOTICE([overriding driver autodetection: $ac_drivers]) +], [ + # let the user specify an empty set + ac_drivers="auto" +]) + +# driver detection block: skip this block if the user manually specify +# drivers on the command line +AS_IF([test "$ac_drivers" = "auto"], +[ + # reset the state variable + ac_drivers="" + + # linux_proc + AC_CHECK_FILE(/proc/net/dev, + [ac_drivers="$ac_drivers linux_proc"] + ) + + # freebsd_sysctl + AC_MSG_CHECKING(for FreeBSD sysctl availability) + AC_PREPROC_IFELSE([AC_LANG_SOURCE( + [ + #include + #include + ])], [ + ac_drivers="$ac_drivers freebsd_sysctl" + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + ]) + + # solaris_fpppd + AC_CHECK_HEADER(sys/stropts.h, + [AC_CHECK_FILE(/dev/ppp, + [ac_drivers="$ac_drivers solaris_fpppd"] + )] + ) + + # solaris_kstat + AC_CHECK_HEADER(kstat.h, + [AC_SEARCH_LIBS(kstat_open, kstat, + [ac_drivers="$ac_drivers solaris_kstat"] + )] + ) + + # netbsd_ioctl + AC_MSG_CHECKING(for NetBSD ioctl availability) + AC_COMPILE_IFELSE([AC_LANG_SOURCE( + [ + #include + #include + #include + #include + #include + + void aFunc() { ioctl(0, SIOCGIFDATA, NULL); } + ])], [ + ac_drivers="$ac_drivers netbsd_ioctl" + AC_MSG_RESULT(yes) + ], [ + AC_MSG_RESULT(no) + ]) + + # irix_pcp + AC_CHECK_HEADER(pcp/pmapi.h, + [AC_SEARCH_LIBS(pmLookupName, pcp, + [ac_drivers="$ac_drivers irix_pcp"] + )] + ) + + # generic_snmp + AC_CHECK_HEADER(net-snmp/net-snmp-config.h, + [AC_SEARCH_LIBS(snmp_sess_init, [snmp netsnmp], + [ac_drivers="$ac_drivers generic_snmp"] + )] + ) +]) +for driver in $ac_drivers; +do + # we must repeat the define constants many times + # to make autoheader automatically recognize them all + case "$driver" in + linux_proc) AC_DEFINE(USE_LINUX_PROC, "linux_proc", [enable linux proc driver]);; + freebsd_sysctl) AC_DEFINE(USE_FREEBSD_SYSCTL, "freebsd_sysctl", [enable freebsd sysctl driver]);; + netbsd_ioctl) AC_DEFINE(USE_NETBSD_IOCTL, "netbsd_ioctl", [enable nebsd ioctl driver]);; + solaris_fpppd) AC_DEFINE(USE_SOLARIS_FPPPD, "solaris_fpppd", [solaris streams pppd]);; + solaris_kstat) AC_DEFINE(USE_SOLARIS_KSTAT, "solaris_kstat", [enable solaris kstat driver]);; + irix_pcp) AC_DEFINE(USE_IRIX_PCP, "irix_pcp", [IRIX Performance Co-Pilot]);; + generic_snmp) AC_DEFINE(USE_GENERIC_SNMP, "generic_snmp", [Generic SNMP module]);; + *) AC_MSG_ERROR([unknown driver name $driver]);; + esac + + drivers="$drivers $driver" +done + + +# Dummy driver +ARG_DISABLE(dummy-driver, + [AS_HELP_STRING([--disable-dummy-driver], + [disable the dummy driver])],, +[ + drivers="$drivers testing_dummy" + AC_DEFINE(USE_TESTING_DUMMY, "testing_dummy", [fallback driver]) +]) + +# trend support +ARG_DISABLE(trend, + [AS_HELP_STRING([--disable-trend], [disable trend support])],, + [AC_DEFINE(USE_TREND,, [trend support])] +) + +# debugging +ARG_ENABLE(debug, + [AS_HELP_STRING( + [--enable-debug], + [find the meaning of life, and everything])],, + [AC_DEFINE(NDEBUG, 42, [shameless(tm)])] +) + +# display modes selection +ARG_ENABLE(modes, + [AS_HELP_STRING( + [--enable-modes="..."], + [manually select visual modes. defaults to all])],, + [enable_modes="traditional mgraph waveform wmwave wmnet sepgraphs twisted charts needle lines"] +) +for mode in $enable_modes; +do + # we must repeat the define constants many times + # to make autoheader automatically recognize them all + case "$mode" in + traditional) AC_DEFINE(USE_DRW_TRADITIONAL,, [traditional drawing mode]);; + mgraph) AC_DEFINE(USE_DRW_MGRAPH,, [mgraph drawing mode]);; + waveform) AC_DEFINE(USE_DRW_WAVEFORM,, [waveform drawing mode]);; + wmwave) AC_DEFINE(USE_DRW_WMWAVE,, [wmwave drawing mode]);; + wmnet) AC_DEFINE(USE_DRW_WMNET,, [wmnet drawing mode]);; + sepgraphs) AC_DEFINE(USE_DRW_SEPGRAPHS,, [sepgraphs drawing mode]);; + twisted) AC_DEFINE(USE_DRW_TWISTED,, [twisted drawing mode]);; + charts) AC_DEFINE(USE_DRW_CHARTS,, [charts drawing mode]);; + needle) AC_DEFINE(USE_DRW_NEEDLE,, [needle drawing mode]);; + lines) AC_DEFINE(USE_DRW_LINES,, [lines drawing mode]);; + *) AC_MSG_ERROR([unknown display mode $mode]);; + esac + + dspmodes="$dspmodes $mode" +done + + +# check for inline statement useability +AC_C_INLINE + +# check for basic type sizes +AC_CHECK_SIZEOF(unsigned int) +AC_CHECK_SIZEOF(unsigned long) + +# output files +AC_CONFIG_FILES([ + Makefile + src/Makefile +]) + +AC_OUTPUT + +AC_MSG_NOTICE([configuration: + +disable trend support: ${disable_trend:-no} +enabled drivers: ${drivers:- none} +enabled display modes:${dspmodes:- none} +]) diff --git a/dockapps/wmnd/depcomp b/dockapps/wmnd/depcomp new file mode 100755 index 0000000..25a39e6 --- /dev/null +++ b/dockapps/wmnd/depcomp @@ -0,0 +1,708 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2012-03-27.16; # UTC + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, +# 2011, 2012 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' "$nl" < "$tmpdepfile" | +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependent.h'. + # Do two passes, one to just change these to + # '$object: dependent.h' and one to simply 'dependent.h:'. + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'. + # However on + # $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\': + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + # tcc 0.9.26 (FIXME still under development at the moment of writing) + # will emit a similar output, but also prepend the continuation lines + # with horizontal tabulation characters. + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form 'foo.o: dependent.h', + # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'. + # Do two passes, one to just change these to + # '$object: dependent.h' and one to simply 'dependent.h:'. + sed -e "s/^[ $tab][ $tab]*/ /" -e "s,^[^:]*:,$object :," \ + < "$tmpdepfile" > "$depfile" + sed ' + s/[ '"$tab"'][ '"$tab"']*/ /g + s/^ *// + s/ *\\*$// + s/^[^:]*: *// + /^$/d + /:$/d + s/$/ :/ + ' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test "$stat" = 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' "$nl" < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/dockapps/wmnd/doc/wmnd.1 b/dockapps/wmnd/doc/wmnd.1 new file mode 100644 index 0000000..643efa8 --- /dev/null +++ b/dockapps/wmnd/doc/wmnd.1 @@ -0,0 +1,225 @@ +.\" Hey, EMACS: -*- nroff -*- +.\" +.\" Copyright(c) 2001 by Arthur Korn +.\" Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" +.\" +.\" Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. +.\" +.\" First parameter, NAME, should be all caps +.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection +.\" other parameters are allowed: see man(7), man(1) +.TH WMND 1 "Jan 29, 2008" +.\" Please adjust this date whenever revising the manpage. +.\" +.\" Some roff macros, for reference: +.\" .nh disable hyphenation +.\" .hy enable hyphenation +.\" .ad l left justify +.\" .ad b justify to both left and right margins +.\" .nf disable filling +.\" .fi enable filling +.\" .br insert line break +.\" .sp insert n+1 empty lines +.\" for manpage-specific macros, see man(7) +.SH NAME +WMND \- WindowMaker network device monitor +.SH SYNOPSIS +.B wmnd +.RI "{ " options " }" +.SH DESCRIPTION +.B WMND +is a WindowMaker dock application that shows a graph of the network traffic +of the past few minutes, current activity and current and overall send +and receive rates. Additionally it can launch any program in response to +mouse clicks. +.SH OPTIONS +.TP +.BI "\-i " interface +Select the interface to start with. +.TP +.BI "\-I " interface +Interface/s to monitor. Defaults to all but lo and irda. Under linux +(using the linux_proc driver) you can specify multiple interfaces +separated by commas to force offline ones and combine them into +a single instance. +.TP +.BI "\-D " driver +Specify a driver to use. Defaults to auto-probe. +.TP +.B \-l +Start using long device names. +.TP +.B \-m +Start with maximal values hidden. +.TP +.B \-t +Start without displaying connection time of ppp links. +.TP +.B \-M +Use the maximal values of the entire history. +.TP +.BI "\-w " mode +Select display mode to start with. +Use +.B wmnd \-h +for a list of available display modes. +Right clicks on the graph cycle through all available modes. +.TP +.BI "\-r " rate +refresh rate in microseconds +.TP +.BI "\-s " scroll +scroll rate in tenths of seconds +.TP +.BI "\-S " steps +Number of scroll steps to wait before updating the speed rate indicator. +.TP +.B \-b +Scale the values of the maximum and current rate by factors of base 2 instead +of the default 10-based scaling. (1K equals 1024 in binary mode, but 1000 +in decimal mode.) +.TP +.BI "\-c " color +tx color +.TP +.BI "\-C " color +rx color +.TP +.BI "\-L " color +middle line color +.TP +.BI "\-d " display +Draw onto X11 display \fIdisplay\fP +.TP +.BI "\-f " config +Read \fIconfig\fP instead of \fB~/.wmndrc\fP +.TP +.B \-F +Don't parse \fB~/.wmndrc\fP +.TP +.B \-h +Show summary of options. +.TP +.B \-v +Show version of \fBWMND\fP. +.TP +.B \-q +Be less verbose (display only errors). +.TP +.B \-Q +Show informational messages. +.TP +.BI "\-o " float +Smoothing factor (a float from 0 to 1). +.TP +.BI "\-a " bytes +Use a fixed scale for the bytes modes specified in bytes per second. +By default uses an automatic scale. +.TP +.BI "\-n " name +Change the \fBWMND\fP class/title name (defaults to "wmnd"). + +.SH USAGE +.SS Active Interface +You can cycle in realtime through all available active interfaces +by simply left-clicking on the interface name gadget on the +upperleft corner of \fBWMND\fP or use the mouse wheel. +.PP +The 'lo' interface is an exception, 'lo' only works when invoked +from the commandline (\fBwmnd \-I lo\fP), lo was mainly built in for +testing purposes. +.SS Device Name +By default, \fBWMND\fP show device name in short term of four characters, +for example, the ippp0 will be displayed as ipp0. You can toggle +the device name between short and long by right-click on it. +.SS Graphic Mode +Left-click on the main graphic area to cycle the graphic mode. +.SS Max Meter +Left-click to toggle the history max or screen max, default is screen max when +\fBWMND\fP is startup. Right-click to hide or show. Middle-click to zoom the +statistics in a separated \fBtrend\fP window. You can cycle the active +interface and middle-click again to monitor multiple interfaces concurrently. +.SS Byte/Packet Mode +Left-click on the letter gadgeted on the right-top corner can switch +between the Byte or Packet counter mode. "B" for byte, "p" for packet. The +current mode affects the external \fBtrend\fP window too. +.SS User Script +Click on the bottom rate meter can invoke the user command defined in +resource file .wmndrc. +.SS Dragging WMND +Be sure to drag \fBWMND\fP on it's outer edges, it's a bit picky due +to the large gfx pixmap it keeps. You can also use a +keyboard and mouse shortcut (perhaps ALT+left-click) in your window +manager to drag it around. +.SS Drivers +.TP +.B solaris_fpppd +Solaris/Linux ppp streams driver. Gathers device data from /dev/ppp. Uses code +from the Solaris/Linux pppd server and it should work wherever Solaris/Linux +pppd works. +.TP +.B linux_proc +Reads data from the linux +.BR proc (5) +virtual filesystem. +.TP +.B freebsd_sysctl +Uses the MIB to gather device statistics under FreeBSD (offline +devices handling is buggy, support needed!) +.TP +.B netbsd_ioctl +Read statistics through the NetBSD ioctl call. +.TP +.B solaris_kstat +Gather all devices of class net from the kstat library. +.TP +.B irix_pcp +Reads metrics from the IRIX Performance Co-Pilot daemon. +Interface format: + +.RB [ host@ ] interface + +.TP +.B generic_snmp +Query an IF-MIB capable snmp server for gathering interface +statistics. By default \fIgeneric_snmp\fP connects to localhost and +uses the public community. You can change the community/host/interface +to monitor by using the \fI\-I\fP flag: + +.RB [ community @] host [: interface ] + +You must specify an interface number, not an interface name. If the +interface number is 0, or there's no interface specification, +\fBWMND\fP will display all available interfaces. By default the +community name is "public". Beware that by specifying an snmp v1 +community name on a command line can be dangerous on an multiuser +platform. Please read the README file on the distribution for more +details. +.TP +.B testing_dummy +This is the "last resort" driver, it shows a null device useful only +to make \fBWMND\fP don't exit when all other drivers failed. Can be +enhanced to display something at compile time. +.SH FILES +~/.wmndrc User configuration. +.PP +The format of this file is described in the example file "wmndrc" +coming with the distribution (see \fI/usr/share/doc/wmnd/\fP). +.SH SIGNALS +.TP +.B SIGTERM SIGINT +Clean WMND shutdown. +.SH BUGS +Report bugs and suggestion to the current \fBWMND\fR maintainer: +wave++ . More information (including usage +instructions) can be found into the README file found into the +distribution. These information should be integrated here too. +.SH SEE ALSO +.BR X (3x), +.BR wmaker (1x), +.BR proc (5), +.BR trend (1) +.SH AUTHOR +This manual page was written by Arthur Korn . +The original \fBWMND\fR authour is Reed Lai, but it is currently +maintained by Yuri D'Elia . diff --git a/dockapps/wmnd/examples/wmndrc b/dockapps/wmnd/examples/wmndrc new file mode 100644 index 0000000..389e68c --- /dev/null +++ b/dockapps/wmnd/examples/wmndrc @@ -0,0 +1,102 @@ +# WMND configuration file + +# middle line color in wave mode +md_color=#71e371 + +# RX/TX color (can be #xxxxxx, or a valid color name from rgb.txt) +rx_color=#188a86 +tx_color=#00fff2 + +# refresh between status polling (not graph scroll speed: this affects +# the speed of those flashing arrows) +# numbering in microseconds +refresh=50000 + +# graph scroll speed (in tenth of seconds). This setting affects +# the rate and max speed displays. setting a longer the delay will +# average real values within this interval +scroll=10 + +# average sampling for the speed display at the bottom of the pixmap. +# this is the number of times to wait (in terms of scrolling steps) before +# displaying the average speed of that period. The time of the period can +# be calculated (in tenth of seconds) with: scroll * avg_steps. +avg_steps=1 + +# smooth: smoothing factor. A float value ranging from 0 to 1. This is +# really the "amount" of the new speed against the history each time is +# sampled from the device. A low value (0.1) will remove random spikes +# from the graph. Values higher than 1 will instead enchance spikes. Only +# the 'bytes' mode is affected by this switch. +# Disabled by default (0). +smooth=0 + +# buttons for user scripts +# you can use these % escapes in the command line: +# %b: mouse button number (1, 2, 3...) +# %i: active interface name (eth0, etc) +# %s: interface status (0: offline, 1: online) +# bt1_action=su -c "ethereal -i %i" +# bt2_action= +# bt3_action= + +# respects the -b in command line (yes, no) +binary_scale=no + +# display or not the device uptime (yes, no) +display_time=yes + +# use a specific driver (driver name, %auto for automatic) +# See -h for a list of available drivers. +driver=%auto + +# Driver's interface to monitor (interface name, %any for all). +# This is actually a parameter to the driver, and may have different +# meanings on different drivers. +# +# linux_proc, freebsd_sysctl, netbsd_ioctl, +# solaris_kstat, solaris_fpppd: a simple interface name on the current host. +# irix_pcp: [host@]interface +# generic_snmp: [community@]host[:interface number] +driver_interface=%any + +# automatically select and show this interface on startup if +# available (interface name, %first for the first one) +interface_name=%first + +# Show max values (yes, no) +show_max_values=yes + +# Use long interface names (yes, no) +use_long_names=no + +# max values through entire history instead of through the last ~50 samples +use_max_history=no + +# display mode (traditional, waveform, wmnet, ...). +# See -h for a list of available modes. +wave_mode=wmnet + +# be less verbose (display only errors) +# quiet=yes + +# change the WMND's class/title name. this is useful under wharf (afterstep) +# to not swallow multiple WMND instances into a single dock. Defaults +# to "wmnd". +# name=wmnd + +# use a fixed scale (specified in bytes per second) for the bytes modes. +# by default use an automatic scale (0). +# fixed_max=12000 + +# disable live updating of the trend windows (shown when middle-clicking on +# the scale meter; trend must be installed for this to work). +# trend_update=no + +# specify any command line flag for the trend window, except for -f or -c. +# be sure to quote spaces correctly. check the trend(1) man page for details. +# trend_flags=-s + +# specify a valid trend hist-spec (history specification). +# the default is "58". check the trend(1) man page for details. +# trend_history=58x2 diff --git a/dockapps/wmnd/install-sh b/dockapps/wmnd/install-sh new file mode 100755 index 0000000..a9244eb --- /dev/null +++ b/dockapps/wmnd/install-sh @@ -0,0 +1,527 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2011-01-19.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for `test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for `test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/dockapps/wmnd/missing b/dockapps/wmnd/missing new file mode 100755 index 0000000..86a8fc3 --- /dev/null +++ b/dockapps/wmnd/missing @@ -0,0 +1,331 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2012-01-06.13; # UTC + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). This is about non-GNU programs, so use $1 not +# $program. +case $1 in + lex*|yacc*) + # Not GNU programs, they don't have --version. + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $program in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te*) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison*|yacc*) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if test $# -ne 1; then + eval LASTARG=\${$#} + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex*|flex*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if test $# -ne 1; then + eval LASTARG=\${$#} + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit $? + fi + ;; + + makeinfo*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/dockapps/wmnd/src/.deps/cfgdata.Po b/dockapps/wmnd/src/.deps/cfgdata.Po new file mode 100644 index 0000000..68897de --- /dev/null +++ b/dockapps/wmnd/src/.deps/cfgdata.Po @@ -0,0 +1,4 @@ +cfgdata.o: cfgdata.c /usr/include/stdc-predef.h cfgdata.h ../config.h +/usr/include/stdc-predef.h: +cfgdata.h: +../config.h: diff --git a/dockapps/wmnd/src/.deps/display.Po b/dockapps/wmnd/src/.deps/display.Po new file mode 100644 index 0000000..089a6ff --- /dev/null +++ b/dockapps/wmnd/src/.deps/display.Po @@ -0,0 +1,198 @@ +display.o: display.c /usr/include/stdc-predef.h display.h ../config.h \ + wmnd.h bits.h /usr/include/time.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h \ + /usr/include/bits/time.h /usr/include/bits/types.h \ + /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/sys/time.h /usr/include/bits/types/struct_timeval.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/stdio.h /usr/include/bits/libc-header-start.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdio.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/bits/getopt_posix.h /usr/include/bits/getopt_core.h \ + /usr/include/bits/unistd_ext.h /usr/include/string.h \ + /usr/include/strings.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \ + /usr/include/bits/fcntl-linux.h /usr/include/bits/stat.h \ + /usr/include/bits/struct_stat.h /usr/include/sys/param.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/limits.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/signal.h \ + /usr/include/bits/signum-generic.h /usr/include/bits/signum-arch.h \ + /usr/include/bits/types/sig_atomic_t.h \ + /usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \ + /usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \ + /usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \ + /usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \ + /usr/include/bits/ss_flags.h /usr/include/bits/types/struct_sigstack.h \ + /usr/include/bits/sigthread.h /usr/include/bits/signal_ext.h \ + /usr/include/bits/param.h /usr/include/linux/param.h \ + /usr/include/asm/param.h /usr/include/asm-generic/param.h \ + /usr/include/sys/stat.h /usr/include/sys/wait.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/xpm.h \ + /usr/include/X11/Xutil.h /usr/include/X11/keysym.h \ + /usr/include/X11/keysymdef.h /usr/include/X11/extensions/shape.h \ + /usr/include/X11/extensions/shapeconst.h /usr/include/math.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h +/usr/include/stdc-predef.h: +display.h: +../config.h: +wmnd.h: +bits.h: +/usr/include/time.h: +/usr/include/features.h: +/usr/include/sys/cdefs.h: +/usr/include/bits/wordsize.h: +/usr/include/bits/long-double.h: +/usr/include/gnu/stubs.h: +/usr/include/gnu/stubs-64.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h: +/usr/include/bits/time.h: +/usr/include/bits/types.h: +/usr/include/bits/timesize.h: +/usr/include/bits/typesizes.h: +/usr/include/bits/time64.h: +/usr/include/bits/types/clock_t.h: +/usr/include/bits/types/time_t.h: +/usr/include/bits/types/struct_tm.h: +/usr/include/bits/types/struct_timespec.h: +/usr/include/bits/endian.h: +/usr/include/bits/endianness.h: +/usr/include/bits/types/clockid_t.h: +/usr/include/bits/types/timer_t.h: +/usr/include/bits/types/struct_itimerspec.h: +/usr/include/bits/types/locale_t.h: +/usr/include/bits/types/__locale_t.h: +/usr/include/sys/time.h: +/usr/include/bits/types/struct_timeval.h: +/usr/include/sys/select.h: +/usr/include/bits/select.h: +/usr/include/bits/types/sigset_t.h: +/usr/include/bits/types/__sigset_t.h: +/usr/include/stdio.h: +/usr/include/bits/libc-header-start.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdarg.h: +/usr/include/bits/types/__fpos_t.h: +/usr/include/bits/types/__mbstate_t.h: +/usr/include/bits/types/__fpos64_t.h: +/usr/include/bits/types/__FILE.h: +/usr/include/bits/types/FILE.h: +/usr/include/bits/types/struct_FILE.h: +/usr/include/bits/stdio_lim.h: +/usr/include/bits/floatn.h: +/usr/include/bits/floatn-common.h: +/usr/include/bits/stdio.h: +/usr/include/stdlib.h: +/usr/include/bits/waitflags.h: +/usr/include/bits/waitstatus.h: +/usr/include/sys/types.h: +/usr/include/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/bits/byteswap.h: +/usr/include/bits/uintn-identity.h: +/usr/include/bits/pthreadtypes.h: +/usr/include/bits/thread-shared-types.h: +/usr/include/bits/pthreadtypes-arch.h: +/usr/include/bits/struct_mutex.h: +/usr/include/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/bits/stdlib-bsearch.h: +/usr/include/bits/stdlib-float.h: +/usr/include/unistd.h: +/usr/include/bits/posix_opt.h: +/usr/include/bits/environments.h: +/usr/include/bits/confname.h: +/usr/include/bits/getopt_posix.h: +/usr/include/bits/getopt_core.h: +/usr/include/bits/unistd_ext.h: +/usr/include/string.h: +/usr/include/strings.h: +/usr/include/fcntl.h: +/usr/include/bits/fcntl.h: +/usr/include/bits/fcntl-linux.h: +/usr/include/bits/stat.h: +/usr/include/bits/struct_stat.h: +/usr/include/sys/param.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/limits.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/syslimits.h: +/usr/include/limits.h: +/usr/include/bits/posix1_lim.h: +/usr/include/bits/local_lim.h: +/usr/include/linux/limits.h: +/usr/include/bits/posix2_lim.h: +/usr/include/signal.h: +/usr/include/bits/signum-generic.h: +/usr/include/bits/signum-arch.h: +/usr/include/bits/types/sig_atomic_t.h: +/usr/include/bits/types/siginfo_t.h: +/usr/include/bits/types/__sigval_t.h: +/usr/include/bits/siginfo-arch.h: +/usr/include/bits/siginfo-consts.h: +/usr/include/bits/types/sigval_t.h: +/usr/include/bits/types/sigevent_t.h: +/usr/include/bits/sigevent-consts.h: +/usr/include/bits/sigaction.h: +/usr/include/bits/sigcontext.h: +/usr/include/bits/types/stack_t.h: +/usr/include/sys/ucontext.h: +/usr/include/bits/sigstack.h: +/usr/include/bits/ss_flags.h: +/usr/include/bits/types/struct_sigstack.h: +/usr/include/bits/sigthread.h: +/usr/include/bits/signal_ext.h: +/usr/include/bits/param.h: +/usr/include/linux/param.h: +/usr/include/asm/param.h: +/usr/include/asm-generic/param.h: +/usr/include/sys/stat.h: +/usr/include/sys/wait.h: +/usr/include/X11/Xlib.h: +/usr/include/X11/X.h: +/usr/include/X11/Xfuncproto.h: +/usr/include/X11/Xosdefs.h: +/usr/include/X11/xpm.h: +/usr/include/X11/Xutil.h: +/usr/include/X11/keysym.h: +/usr/include/X11/keysymdef.h: +/usr/include/X11/extensions/shape.h: +/usr/include/X11/extensions/shapeconst.h: +/usr/include/math.h: +/usr/include/bits/math-vector.h: +/usr/include/bits/libm-simd-decl-stubs.h: +/usr/include/bits/flt-eval-method.h: +/usr/include/bits/fp-logb.h: +/usr/include/bits/fp-fast.h: +/usr/include/bits/mathcalls-helper-functions.h: +/usr/include/bits/mathcalls.h: diff --git a/dockapps/wmnd/src/.deps/drivers.Po b/dockapps/wmnd/src/.deps/drivers.Po new file mode 100644 index 0000000..3031d41 --- /dev/null +++ b/dockapps/wmnd/src/.deps/drivers.Po @@ -0,0 +1,389 @@ +drivers.o: drivers.c /usr/include/stdc-predef.h ../config.h drivers.h \ + wmnd.h bits.h /usr/include/time.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h \ + /usr/include/bits/time.h /usr/include/bits/types.h \ + /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/sys/time.h /usr/include/bits/types/struct_timeval.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/stdio.h /usr/include/bits/libc-header-start.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdio.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/bits/getopt_posix.h /usr/include/bits/getopt_core.h \ + /usr/include/bits/unistd_ext.h /usr/include/string.h \ + /usr/include/strings.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \ + /usr/include/bits/fcntl-linux.h /usr/include/bits/stat.h \ + /usr/include/bits/struct_stat.h /usr/include/sys/param.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/limits.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/signal.h \ + /usr/include/bits/signum-generic.h /usr/include/bits/signum-arch.h \ + /usr/include/bits/types/sig_atomic_t.h \ + /usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \ + /usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \ + /usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \ + /usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \ + /usr/include/bits/ss_flags.h /usr/include/bits/types/struct_sigstack.h \ + /usr/include/bits/sigthread.h /usr/include/bits/signal_ext.h \ + /usr/include/bits/param.h /usr/include/linux/param.h \ + /usr/include/asm/param.h /usr/include/asm-generic/param.h \ + /usr/include/sys/stat.h /usr/include/sys/wait.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/xpm.h \ + /usr/include/X11/Xutil.h /usr/include/X11/keysym.h \ + /usr/include/X11/keysymdef.h /usr/include/X11/extensions/shape.h \ + /usr/include/X11/extensions/shapeconst.h messages.h /usr/include/math.h \ + /usr/include/bits/math-vector.h /usr/include/bits/libm-simd-decl-stubs.h \ + /usr/include/bits/flt-eval-method.h /usr/include/bits/fp-logb.h \ + /usr/include/bits/fp-fast.h \ + /usr/include/bits/mathcalls-helper-functions.h \ + /usr/include/bits/mathcalls.h /usr/include/net-snmp/net-snmp-config.h \ + /usr/include/net-snmp/system/linux.h /usr/include/net-snmp/system/sysv.h \ + /usr/include/net-snmp/system/generic.h \ + /usr/include/net-snmp/machine/generic.h \ + /usr/include/net-snmp/net-snmp-includes.h \ + /usr/include/net-snmp/definitions.h /usr/include/net-snmp/types.h \ + /usr/include/net-snmp/library/oid.h \ + /usr/include/net-snmp/library/types.h \ + /usr/include/net-snmp/library/snmp_api.h \ + /usr/include/net-snmp/varbind_api.h \ + /usr/include/net-snmp/library/snmp_client.h \ + /usr/include/net-snmp/pdu_api.h /usr/include/net-snmp/library/asn1.h \ + /usr/include/net-snmp/output_api.h \ + /usr/include/net-snmp/library/netsnmp-attribute-format.h \ + /usr/include/net-snmp/library/snmp_debug.h \ + /usr/include/net-snmp/library/snmp_logging.h /usr/include/syslog.h \ + /usr/include/sys/syslog.h /usr/include/bits/syslog-path.h \ + /usr/include/net-snmp/session_api.h \ + /usr/include/net-snmp/library/callback.h \ + /usr/include/net-snmp/library/snmp_transport.h /usr/include/sys/socket.h \ + /usr/include/bits/types/struct_iovec.h /usr/include/bits/socket.h \ + /usr/include/bits/socket_type.h /usr/include/bits/sockaddr.h \ + /usr/include/asm/socket.h /usr/include/asm-generic/socket.h \ + /usr/include/linux/posix_types.h /usr/include/linux/stddef.h \ + /usr/include/asm/posix_types.h /usr/include/asm/posix_types_64.h \ + /usr/include/asm-generic/posix_types.h /usr/include/asm/bitsperlong.h \ + /usr/include/asm-generic/bitsperlong.h /usr/include/asm/sockios.h \ + /usr/include/asm-generic/sockios.h \ + /usr/include/bits/types/struct_osockaddr.h /usr/include/netinet/in.h \ + /usr/include/bits/stdint-uintn.h /usr/include/bits/in.h \ + /usr/include/net-snmp/library/snmp_service.h \ + /usr/include/net-snmp/library/snmpCallbackDomain.h \ + /usr/include/net-snmp/library/snmpUnixDomain.h /usr/include/sys/un.h \ + /usr/include/net-snmp/library/snmpUDPDomain.h \ + /usr/include/net-snmp/library/snmpUDPIPv4BaseDomain.h \ + /usr/include/net-snmp/library/snmpIPv4BaseDomain.h \ + /usr/include/net-snmp/library/snmpUDPBaseDomain.h \ + /usr/include/net-snmp/library/snmpTCPDomain.h \ + /usr/include/net-snmp/library/snmpUDPIPv6Domain.h \ + /usr/include/net-snmp/library/snmpIPv6BaseDomain.h \ + /usr/include/net-snmp/library/snmpTCPIPv6Domain.h \ + /usr/include/net-snmp/library/ucd_compat.h \ + /usr/include/net-snmp/library/mib.h /usr/include/net-snmp/mib_api.h \ + /usr/include/net-snmp/library/parse.h \ + /usr/include/net-snmp/library/oid_stash.h \ + /usr/include/net-snmp/net-snmp-features.h \ + /usr/include/net-snmp/library/snmp_impl.h \ + /usr/include/net-snmp/library/snmp.h \ + /usr/include/net-snmp/library/snmp-tc.h \ + /usr/include/net-snmp/library/getopt.h /usr/include/net-snmp/utilities.h \ + /usr/include/getopt.h /usr/include/bits/getopt_ext.h \ + /usr/include/net-snmp/library/system.h \ + /usr/include/net-snmp/library/tools.h \ + /usr/include/net-snmp/library/int64.h \ + /usr/include/net-snmp/library/mt_support.h \ + /usr/include/net-snmp/library/snmp_alarm.h \ + /usr/include/net-snmp/library/data_list.h \ + /usr/include/net-snmp/library/check_varbind.h \ + /usr/include/net-snmp/library/container.h \ + /usr/include/net-snmp/library/factory.h \ + /usr/include/net-snmp/library/container_binary_array.h \ + /usr/include/net-snmp/library/container_list_ssll.h \ + /usr/include/net-snmp/library/container_iterator.h \ + /usr/include/net-snmp/library/container.h \ + /usr/include/net-snmp/library/snmp_assert.h \ + /usr/include/net-snmp/version.h /usr/include/net-snmp/config_api.h \ + /usr/include/net-snmp/library/read_config.h \ + /usr/include/net-snmp/library/default_store.h \ + /usr/include/net-snmp/library/snmp_parse_args.h \ + /usr/include/net-snmp/library/snmp_enum.h \ + /usr/include/net-snmp/library/vacm.h /usr/include/net-snmp/snmpv3_api.h \ + /usr/include/net-snmp/library/snmpv3.h \ + /usr/include/net-snmp/library/transform_oids.h \ + /usr/include/net-snmp/library/keytools.h \ + /usr/include/net-snmp/library/scapi.h /usr/include/openssl/ossl_typ.h \ + /usr/include/openssl/e_os2.h /usr/include/openssl/opensslconf.h \ + /usr/include/openssl/opensslv.h /usr/include/inttypes.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdint.h \ + /usr/include/stdint.h /usr/include/bits/wchar.h \ + /usr/include/net-snmp/library/lcd_time.h \ + /usr/include/net-snmp/library/snmp_secmod.h \ + /usr/include/net-snmp/library/snmpv3-security-includes.h \ + /usr/include/net-snmp/library/snmpusm.h +/usr/include/stdc-predef.h: +../config.h: +drivers.h: +wmnd.h: +bits.h: +/usr/include/time.h: +/usr/include/features.h: +/usr/include/sys/cdefs.h: +/usr/include/bits/wordsize.h: +/usr/include/bits/long-double.h: +/usr/include/gnu/stubs.h: +/usr/include/gnu/stubs-64.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h: +/usr/include/bits/time.h: +/usr/include/bits/types.h: +/usr/include/bits/timesize.h: +/usr/include/bits/typesizes.h: +/usr/include/bits/time64.h: +/usr/include/bits/types/clock_t.h: +/usr/include/bits/types/time_t.h: +/usr/include/bits/types/struct_tm.h: +/usr/include/bits/types/struct_timespec.h: +/usr/include/bits/endian.h: +/usr/include/bits/endianness.h: +/usr/include/bits/types/clockid_t.h: +/usr/include/bits/types/timer_t.h: +/usr/include/bits/types/struct_itimerspec.h: +/usr/include/bits/types/locale_t.h: +/usr/include/bits/types/__locale_t.h: +/usr/include/sys/time.h: +/usr/include/bits/types/struct_timeval.h: +/usr/include/sys/select.h: +/usr/include/bits/select.h: +/usr/include/bits/types/sigset_t.h: +/usr/include/bits/types/__sigset_t.h: +/usr/include/stdio.h: +/usr/include/bits/libc-header-start.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdarg.h: +/usr/include/bits/types/__fpos_t.h: +/usr/include/bits/types/__mbstate_t.h: +/usr/include/bits/types/__fpos64_t.h: +/usr/include/bits/types/__FILE.h: +/usr/include/bits/types/FILE.h: +/usr/include/bits/types/struct_FILE.h: +/usr/include/bits/stdio_lim.h: +/usr/include/bits/floatn.h: +/usr/include/bits/floatn-common.h: +/usr/include/bits/stdio.h: +/usr/include/stdlib.h: +/usr/include/bits/waitflags.h: +/usr/include/bits/waitstatus.h: +/usr/include/sys/types.h: +/usr/include/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/bits/byteswap.h: +/usr/include/bits/uintn-identity.h: +/usr/include/bits/pthreadtypes.h: +/usr/include/bits/thread-shared-types.h: +/usr/include/bits/pthreadtypes-arch.h: +/usr/include/bits/struct_mutex.h: +/usr/include/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/bits/stdlib-bsearch.h: +/usr/include/bits/stdlib-float.h: +/usr/include/unistd.h: +/usr/include/bits/posix_opt.h: +/usr/include/bits/environments.h: +/usr/include/bits/confname.h: +/usr/include/bits/getopt_posix.h: +/usr/include/bits/getopt_core.h: +/usr/include/bits/unistd_ext.h: +/usr/include/string.h: +/usr/include/strings.h: +/usr/include/fcntl.h: +/usr/include/bits/fcntl.h: +/usr/include/bits/fcntl-linux.h: +/usr/include/bits/stat.h: +/usr/include/bits/struct_stat.h: +/usr/include/sys/param.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/limits.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/syslimits.h: +/usr/include/limits.h: +/usr/include/bits/posix1_lim.h: +/usr/include/bits/local_lim.h: +/usr/include/linux/limits.h: +/usr/include/bits/posix2_lim.h: +/usr/include/signal.h: +/usr/include/bits/signum-generic.h: +/usr/include/bits/signum-arch.h: +/usr/include/bits/types/sig_atomic_t.h: +/usr/include/bits/types/siginfo_t.h: +/usr/include/bits/types/__sigval_t.h: +/usr/include/bits/siginfo-arch.h: +/usr/include/bits/siginfo-consts.h: +/usr/include/bits/types/sigval_t.h: +/usr/include/bits/types/sigevent_t.h: +/usr/include/bits/sigevent-consts.h: +/usr/include/bits/sigaction.h: +/usr/include/bits/sigcontext.h: +/usr/include/bits/types/stack_t.h: +/usr/include/sys/ucontext.h: +/usr/include/bits/sigstack.h: +/usr/include/bits/ss_flags.h: +/usr/include/bits/types/struct_sigstack.h: +/usr/include/bits/sigthread.h: +/usr/include/bits/signal_ext.h: +/usr/include/bits/param.h: +/usr/include/linux/param.h: +/usr/include/asm/param.h: +/usr/include/asm-generic/param.h: +/usr/include/sys/stat.h: +/usr/include/sys/wait.h: +/usr/include/X11/Xlib.h: +/usr/include/X11/X.h: +/usr/include/X11/Xfuncproto.h: +/usr/include/X11/Xosdefs.h: +/usr/include/X11/xpm.h: +/usr/include/X11/Xutil.h: +/usr/include/X11/keysym.h: +/usr/include/X11/keysymdef.h: +/usr/include/X11/extensions/shape.h: +/usr/include/X11/extensions/shapeconst.h: +messages.h: +/usr/include/math.h: +/usr/include/bits/math-vector.h: +/usr/include/bits/libm-simd-decl-stubs.h: +/usr/include/bits/flt-eval-method.h: +/usr/include/bits/fp-logb.h: +/usr/include/bits/fp-fast.h: +/usr/include/bits/mathcalls-helper-functions.h: +/usr/include/bits/mathcalls.h: +/usr/include/net-snmp/net-snmp-config.h: +/usr/include/net-snmp/system/linux.h: +/usr/include/net-snmp/system/sysv.h: +/usr/include/net-snmp/system/generic.h: +/usr/include/net-snmp/machine/generic.h: +/usr/include/net-snmp/net-snmp-includes.h: +/usr/include/net-snmp/definitions.h: +/usr/include/net-snmp/types.h: +/usr/include/net-snmp/library/oid.h: +/usr/include/net-snmp/library/types.h: +/usr/include/net-snmp/library/snmp_api.h: +/usr/include/net-snmp/varbind_api.h: +/usr/include/net-snmp/library/snmp_client.h: +/usr/include/net-snmp/pdu_api.h: +/usr/include/net-snmp/library/asn1.h: +/usr/include/net-snmp/output_api.h: +/usr/include/net-snmp/library/netsnmp-attribute-format.h: +/usr/include/net-snmp/library/snmp_debug.h: +/usr/include/net-snmp/library/snmp_logging.h: +/usr/include/syslog.h: +/usr/include/sys/syslog.h: +/usr/include/bits/syslog-path.h: +/usr/include/net-snmp/session_api.h: +/usr/include/net-snmp/library/callback.h: +/usr/include/net-snmp/library/snmp_transport.h: +/usr/include/sys/socket.h: +/usr/include/bits/types/struct_iovec.h: +/usr/include/bits/socket.h: +/usr/include/bits/socket_type.h: +/usr/include/bits/sockaddr.h: +/usr/include/asm/socket.h: +/usr/include/asm-generic/socket.h: +/usr/include/linux/posix_types.h: +/usr/include/linux/stddef.h: +/usr/include/asm/posix_types.h: +/usr/include/asm/posix_types_64.h: +/usr/include/asm-generic/posix_types.h: +/usr/include/asm/bitsperlong.h: +/usr/include/asm-generic/bitsperlong.h: +/usr/include/asm/sockios.h: +/usr/include/asm-generic/sockios.h: +/usr/include/bits/types/struct_osockaddr.h: +/usr/include/netinet/in.h: +/usr/include/bits/stdint-uintn.h: +/usr/include/bits/in.h: +/usr/include/net-snmp/library/snmp_service.h: +/usr/include/net-snmp/library/snmpCallbackDomain.h: +/usr/include/net-snmp/library/snmpUnixDomain.h: +/usr/include/sys/un.h: +/usr/include/net-snmp/library/snmpUDPDomain.h: +/usr/include/net-snmp/library/snmpUDPIPv4BaseDomain.h: +/usr/include/net-snmp/library/snmpIPv4BaseDomain.h: +/usr/include/net-snmp/library/snmpUDPBaseDomain.h: +/usr/include/net-snmp/library/snmpTCPDomain.h: +/usr/include/net-snmp/library/snmpUDPIPv6Domain.h: +/usr/include/net-snmp/library/snmpIPv6BaseDomain.h: +/usr/include/net-snmp/library/snmpTCPIPv6Domain.h: +/usr/include/net-snmp/library/ucd_compat.h: +/usr/include/net-snmp/library/mib.h: +/usr/include/net-snmp/mib_api.h: +/usr/include/net-snmp/library/parse.h: +/usr/include/net-snmp/library/oid_stash.h: +/usr/include/net-snmp/net-snmp-features.h: +/usr/include/net-snmp/library/snmp_impl.h: +/usr/include/net-snmp/library/snmp.h: +/usr/include/net-snmp/library/snmp-tc.h: +/usr/include/net-snmp/library/getopt.h: +/usr/include/net-snmp/utilities.h: +/usr/include/getopt.h: +/usr/include/bits/getopt_ext.h: +/usr/include/net-snmp/library/system.h: +/usr/include/net-snmp/library/tools.h: +/usr/include/net-snmp/library/int64.h: +/usr/include/net-snmp/library/mt_support.h: +/usr/include/net-snmp/library/snmp_alarm.h: +/usr/include/net-snmp/library/data_list.h: +/usr/include/net-snmp/library/check_varbind.h: +/usr/include/net-snmp/library/container.h: +/usr/include/net-snmp/library/factory.h: +/usr/include/net-snmp/library/container_binary_array.h: +/usr/include/net-snmp/library/container_list_ssll.h: +/usr/include/net-snmp/library/container_iterator.h: +/usr/include/net-snmp/library/container.h: +/usr/include/net-snmp/library/snmp_assert.h: +/usr/include/net-snmp/version.h: +/usr/include/net-snmp/config_api.h: +/usr/include/net-snmp/library/read_config.h: +/usr/include/net-snmp/library/default_store.h: +/usr/include/net-snmp/library/snmp_parse_args.h: +/usr/include/net-snmp/library/snmp_enum.h: +/usr/include/net-snmp/library/vacm.h: +/usr/include/net-snmp/snmpv3_api.h: +/usr/include/net-snmp/library/snmpv3.h: +/usr/include/net-snmp/library/transform_oids.h: +/usr/include/net-snmp/library/keytools.h: +/usr/include/net-snmp/library/scapi.h: +/usr/include/openssl/ossl_typ.h: +/usr/include/openssl/e_os2.h: +/usr/include/openssl/opensslconf.h: +/usr/include/openssl/opensslv.h: +/usr/include/inttypes.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdint.h: +/usr/include/stdint.h: +/usr/include/bits/wchar.h: +/usr/include/net-snmp/library/lcd_time.h: +/usr/include/net-snmp/library/snmp_secmod.h: +/usr/include/net-snmp/library/snmpv3-security-includes.h: +/usr/include/net-snmp/library/snmpusm.h: diff --git a/dockapps/wmnd/src/.deps/messages.Po b/dockapps/wmnd/src/.deps/messages.Po new file mode 100644 index 0000000..59bee54 --- /dev/null +++ b/dockapps/wmnd/src/.deps/messages.Po @@ -0,0 +1,41 @@ +messages.o: messages.c /usr/include/stdc-predef.h messages.h ../config.h \ + /usr/include/stdio.h /usr/include/bits/libc-header-start.h \ + /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdarg.h \ + /usr/include/bits/types.h /usr/include/bits/timesize.h \ + /usr/include/bits/typesizes.h /usr/include/bits/time64.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdio.h +/usr/include/stdc-predef.h: +messages.h: +../config.h: +/usr/include/stdio.h: +/usr/include/bits/libc-header-start.h: +/usr/include/features.h: +/usr/include/sys/cdefs.h: +/usr/include/bits/wordsize.h: +/usr/include/bits/long-double.h: +/usr/include/gnu/stubs.h: +/usr/include/gnu/stubs-64.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdarg.h: +/usr/include/bits/types.h: +/usr/include/bits/timesize.h: +/usr/include/bits/typesizes.h: +/usr/include/bits/time64.h: +/usr/include/bits/types/__fpos_t.h: +/usr/include/bits/types/__mbstate_t.h: +/usr/include/bits/types/__fpos64_t.h: +/usr/include/bits/types/__FILE.h: +/usr/include/bits/types/FILE.h: +/usr/include/bits/types/struct_FILE.h: +/usr/include/bits/stdio_lim.h: +/usr/include/bits/floatn.h: +/usr/include/bits/floatn-common.h: +/usr/include/bits/stdio.h: diff --git a/dockapps/wmnd/src/.deps/misc.Po b/dockapps/wmnd/src/.deps/misc.Po new file mode 100644 index 0000000..0a998a7 --- /dev/null +++ b/dockapps/wmnd/src/.deps/misc.Po @@ -0,0 +1,87 @@ +misc.o: misc.c /usr/include/stdc-predef.h ../config.h misc.h \ + /usr/include/sys/types.h /usr/include/features.h \ + /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \ + /usr/include/bits/long-double.h /usr/include/gnu/stubs.h \ + /usr/include/gnu/stubs-64.h /usr/include/bits/types.h \ + /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/clockid_t.h /usr/include/bits/types/time_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/endian.h /usr/include/bits/endianness.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/bits/types/struct_timeval.h \ + /usr/include/bits/types/struct_timespec.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h list.h /usr/include/stdlib.h \ + /usr/include/bits/libc-header-start.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/string.h /usr/include/bits/types/locale_t.h \ + /usr/include/bits/types/__locale_t.h /usr/include/strings.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/bits/getopt_posix.h /usr/include/bits/getopt_core.h \ + /usr/include/bits/unistd_ext.h +/usr/include/stdc-predef.h: +../config.h: +misc.h: +/usr/include/sys/types.h: +/usr/include/features.h: +/usr/include/sys/cdefs.h: +/usr/include/bits/wordsize.h: +/usr/include/bits/long-double.h: +/usr/include/gnu/stubs.h: +/usr/include/gnu/stubs-64.h: +/usr/include/bits/types.h: +/usr/include/bits/timesize.h: +/usr/include/bits/typesizes.h: +/usr/include/bits/time64.h: +/usr/include/bits/types/clock_t.h: +/usr/include/bits/types/clockid_t.h: +/usr/include/bits/types/time_t.h: +/usr/include/bits/types/timer_t.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h: +/usr/include/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/bits/endian.h: +/usr/include/bits/endianness.h: +/usr/include/bits/byteswap.h: +/usr/include/bits/uintn-identity.h: +/usr/include/sys/select.h: +/usr/include/bits/select.h: +/usr/include/bits/types/sigset_t.h: +/usr/include/bits/types/__sigset_t.h: +/usr/include/bits/types/struct_timeval.h: +/usr/include/bits/types/struct_timespec.h: +/usr/include/bits/pthreadtypes.h: +/usr/include/bits/thread-shared-types.h: +/usr/include/bits/pthreadtypes-arch.h: +/usr/include/bits/struct_mutex.h: +/usr/include/bits/struct_rwlock.h: +list.h: +/usr/include/stdlib.h: +/usr/include/bits/libc-header-start.h: +/usr/include/bits/waitflags.h: +/usr/include/bits/waitstatus.h: +/usr/include/bits/floatn.h: +/usr/include/bits/floatn-common.h: +/usr/include/alloca.h: +/usr/include/bits/stdlib-bsearch.h: +/usr/include/bits/stdlib-float.h: +/usr/include/string.h: +/usr/include/bits/types/locale_t.h: +/usr/include/bits/types/__locale_t.h: +/usr/include/strings.h: +/usr/include/unistd.h: +/usr/include/bits/posix_opt.h: +/usr/include/bits/environments.h: +/usr/include/bits/confname.h: +/usr/include/bits/getopt_posix.h: +/usr/include/bits/getopt_core.h: +/usr/include/bits/unistd_ext.h: diff --git a/dockapps/wmnd/src/.deps/wmnd.Po b/dockapps/wmnd/src/.deps/wmnd.Po new file mode 100644 index 0000000..07c63a5 --- /dev/null +++ b/dockapps/wmnd/src/.deps/wmnd.Po @@ -0,0 +1,190 @@ +wmnd.o: wmnd.c /usr/include/stdc-predef.h wmnd.h bits.h ../config.h \ + /usr/include/time.h /usr/include/features.h /usr/include/sys/cdefs.h \ + /usr/include/bits/wordsize.h /usr/include/bits/long-double.h \ + /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h \ + /usr/include/bits/time.h /usr/include/bits/types.h \ + /usr/include/bits/timesize.h /usr/include/bits/typesizes.h \ + /usr/include/bits/time64.h /usr/include/bits/types/clock_t.h \ + /usr/include/bits/types/time_t.h /usr/include/bits/types/struct_tm.h \ + /usr/include/bits/types/struct_timespec.h /usr/include/bits/endian.h \ + /usr/include/bits/endianness.h /usr/include/bits/types/clockid_t.h \ + /usr/include/bits/types/timer_t.h \ + /usr/include/bits/types/struct_itimerspec.h \ + /usr/include/bits/types/locale_t.h /usr/include/bits/types/__locale_t.h \ + /usr/include/sys/time.h /usr/include/bits/types/struct_timeval.h \ + /usr/include/sys/select.h /usr/include/bits/select.h \ + /usr/include/bits/types/sigset_t.h /usr/include/bits/types/__sigset_t.h \ + /usr/include/stdio.h /usr/include/bits/libc-header-start.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdarg.h \ + /usr/include/bits/types/__fpos_t.h /usr/include/bits/types/__mbstate_t.h \ + /usr/include/bits/types/__fpos64_t.h /usr/include/bits/types/__FILE.h \ + /usr/include/bits/types/FILE.h /usr/include/bits/types/struct_FILE.h \ + /usr/include/bits/stdio_lim.h /usr/include/bits/floatn.h \ + /usr/include/bits/floatn-common.h /usr/include/bits/stdio.h \ + /usr/include/stdlib.h /usr/include/bits/waitflags.h \ + /usr/include/bits/waitstatus.h /usr/include/sys/types.h \ + /usr/include/bits/stdint-intn.h /usr/include/endian.h \ + /usr/include/bits/byteswap.h /usr/include/bits/uintn-identity.h \ + /usr/include/bits/pthreadtypes.h /usr/include/bits/thread-shared-types.h \ + /usr/include/bits/pthreadtypes-arch.h /usr/include/bits/struct_mutex.h \ + /usr/include/bits/struct_rwlock.h /usr/include/alloca.h \ + /usr/include/bits/stdlib-bsearch.h /usr/include/bits/stdlib-float.h \ + /usr/include/unistd.h /usr/include/bits/posix_opt.h \ + /usr/include/bits/environments.h /usr/include/bits/confname.h \ + /usr/include/bits/getopt_posix.h /usr/include/bits/getopt_core.h \ + /usr/include/bits/unistd_ext.h /usr/include/string.h \ + /usr/include/strings.h /usr/include/fcntl.h /usr/include/bits/fcntl.h \ + /usr/include/bits/fcntl-linux.h /usr/include/bits/stat.h \ + /usr/include/bits/struct_stat.h /usr/include/sys/param.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/limits.h \ + /usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/syslimits.h \ + /usr/include/limits.h /usr/include/bits/posix1_lim.h \ + /usr/include/bits/local_lim.h /usr/include/linux/limits.h \ + /usr/include/bits/posix2_lim.h /usr/include/signal.h \ + /usr/include/bits/signum-generic.h /usr/include/bits/signum-arch.h \ + /usr/include/bits/types/sig_atomic_t.h \ + /usr/include/bits/types/siginfo_t.h /usr/include/bits/types/__sigval_t.h \ + /usr/include/bits/siginfo-arch.h /usr/include/bits/siginfo-consts.h \ + /usr/include/bits/types/sigval_t.h /usr/include/bits/types/sigevent_t.h \ + /usr/include/bits/sigevent-consts.h /usr/include/bits/sigaction.h \ + /usr/include/bits/sigcontext.h /usr/include/bits/types/stack_t.h \ + /usr/include/sys/ucontext.h /usr/include/bits/sigstack.h \ + /usr/include/bits/ss_flags.h /usr/include/bits/types/struct_sigstack.h \ + /usr/include/bits/sigthread.h /usr/include/bits/signal_ext.h \ + /usr/include/bits/param.h /usr/include/linux/param.h \ + /usr/include/asm/param.h /usr/include/asm-generic/param.h \ + /usr/include/sys/stat.h /usr/include/sys/wait.h /usr/include/X11/Xlib.h \ + /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \ + /usr/include/X11/Xosdefs.h /usr/include/X11/xpm.h \ + /usr/include/X11/Xutil.h /usr/include/X11/keysym.h \ + /usr/include/X11/keysymdef.h /usr/include/X11/extensions/shape.h \ + /usr/include/X11/extensions/shapeconst.h cfgdata.h display.h misc.h \ + master.xpm drivers.h messages.h +/usr/include/stdc-predef.h: +wmnd.h: +bits.h: +../config.h: +/usr/include/time.h: +/usr/include/features.h: +/usr/include/sys/cdefs.h: +/usr/include/bits/wordsize.h: +/usr/include/bits/long-double.h: +/usr/include/gnu/stubs.h: +/usr/include/gnu/stubs-64.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stddef.h: +/usr/include/bits/time.h: +/usr/include/bits/types.h: +/usr/include/bits/timesize.h: +/usr/include/bits/typesizes.h: +/usr/include/bits/time64.h: +/usr/include/bits/types/clock_t.h: +/usr/include/bits/types/time_t.h: +/usr/include/bits/types/struct_tm.h: +/usr/include/bits/types/struct_timespec.h: +/usr/include/bits/endian.h: +/usr/include/bits/endianness.h: +/usr/include/bits/types/clockid_t.h: +/usr/include/bits/types/timer_t.h: +/usr/include/bits/types/struct_itimerspec.h: +/usr/include/bits/types/locale_t.h: +/usr/include/bits/types/__locale_t.h: +/usr/include/sys/time.h: +/usr/include/bits/types/struct_timeval.h: +/usr/include/sys/select.h: +/usr/include/bits/select.h: +/usr/include/bits/types/sigset_t.h: +/usr/include/bits/types/__sigset_t.h: +/usr/include/stdio.h: +/usr/include/bits/libc-header-start.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include/stdarg.h: +/usr/include/bits/types/__fpos_t.h: +/usr/include/bits/types/__mbstate_t.h: +/usr/include/bits/types/__fpos64_t.h: +/usr/include/bits/types/__FILE.h: +/usr/include/bits/types/FILE.h: +/usr/include/bits/types/struct_FILE.h: +/usr/include/bits/stdio_lim.h: +/usr/include/bits/floatn.h: +/usr/include/bits/floatn-common.h: +/usr/include/bits/stdio.h: +/usr/include/stdlib.h: +/usr/include/bits/waitflags.h: +/usr/include/bits/waitstatus.h: +/usr/include/sys/types.h: +/usr/include/bits/stdint-intn.h: +/usr/include/endian.h: +/usr/include/bits/byteswap.h: +/usr/include/bits/uintn-identity.h: +/usr/include/bits/pthreadtypes.h: +/usr/include/bits/thread-shared-types.h: +/usr/include/bits/pthreadtypes-arch.h: +/usr/include/bits/struct_mutex.h: +/usr/include/bits/struct_rwlock.h: +/usr/include/alloca.h: +/usr/include/bits/stdlib-bsearch.h: +/usr/include/bits/stdlib-float.h: +/usr/include/unistd.h: +/usr/include/bits/posix_opt.h: +/usr/include/bits/environments.h: +/usr/include/bits/confname.h: +/usr/include/bits/getopt_posix.h: +/usr/include/bits/getopt_core.h: +/usr/include/bits/unistd_ext.h: +/usr/include/string.h: +/usr/include/strings.h: +/usr/include/fcntl.h: +/usr/include/bits/fcntl.h: +/usr/include/bits/fcntl-linux.h: +/usr/include/bits/stat.h: +/usr/include/bits/struct_stat.h: +/usr/include/sys/param.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/limits.h: +/usr/lib64/gcc/x86_64-slackware-linux/11.2.0/include-fixed/syslimits.h: +/usr/include/limits.h: +/usr/include/bits/posix1_lim.h: +/usr/include/bits/local_lim.h: +/usr/include/linux/limits.h: +/usr/include/bits/posix2_lim.h: +/usr/include/signal.h: +/usr/include/bits/signum-generic.h: +/usr/include/bits/signum-arch.h: +/usr/include/bits/types/sig_atomic_t.h: +/usr/include/bits/types/siginfo_t.h: +/usr/include/bits/types/__sigval_t.h: +/usr/include/bits/siginfo-arch.h: +/usr/include/bits/siginfo-consts.h: +/usr/include/bits/types/sigval_t.h: +/usr/include/bits/types/sigevent_t.h: +/usr/include/bits/sigevent-consts.h: +/usr/include/bits/sigaction.h: +/usr/include/bits/sigcontext.h: +/usr/include/bits/types/stack_t.h: +/usr/include/sys/ucontext.h: +/usr/include/bits/sigstack.h: +/usr/include/bits/ss_flags.h: +/usr/include/bits/types/struct_sigstack.h: +/usr/include/bits/sigthread.h: +/usr/include/bits/signal_ext.h: +/usr/include/bits/param.h: +/usr/include/linux/param.h: +/usr/include/asm/param.h: +/usr/include/asm-generic/param.h: +/usr/include/sys/stat.h: +/usr/include/sys/wait.h: +/usr/include/X11/Xlib.h: +/usr/include/X11/X.h: +/usr/include/X11/Xfuncproto.h: +/usr/include/X11/Xosdefs.h: +/usr/include/X11/xpm.h: +/usr/include/X11/Xutil.h: +/usr/include/X11/keysym.h: +/usr/include/X11/keysymdef.h: +/usr/include/X11/extensions/shape.h: +/usr/include/X11/extensions/shapeconst.h: +cfgdata.h: +display.h: +misc.h: +master.xpm: +drivers.h: +messages.h: diff --git a/dockapps/wmnd/src/Makefile b/dockapps/wmnd/src/Makefile new file mode 100644 index 0000000..489f3b2 --- /dev/null +++ b/dockapps/wmnd/src/Makefile @@ -0,0 +1,523 @@ +# Makefile.in generated by automake 1.11.5 from Makefile.am. +# src/Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Makefile for wmnd + + +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } +pkgdatadir = $(datadir)/wmnd +pkgincludedir = $(includedir)/wmnd +pkglibdir = $(libdir)/wmnd +pkglibexecdir = $(libexecdir)/wmnd +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = x86_64-unknown-linux-gnu +host_triplet = x86_64-unknown-linux-gnu +target_triplet = x86_64-unknown-linux-gnu +bin_PROGRAMS = wmnd$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_wmnd_OBJECTS = cfgdata.$(OBJEXT) display.$(OBJEXT) \ + drivers.$(OBJEXT) misc.$(OBJEXT) messages.$(OBJEXT) \ + wmnd.$(OBJEXT) +wmnd_OBJECTS = $(am_wmnd_OBJECTS) +wmnd_LDADD = $(LDADD) +DEFAULT_INCLUDES = -I. -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(wmnd_SOURCES) +DIST_SOURCES = $(wmnd_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run aclocal-1.11 +AMTAR = $${TAR-tar} +AUTOCONF = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run autoconf +AUTOHEADER = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run autoheader +AUTOMAKE = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run automake-1.11 +AWK = gawk +CC = gcc +CCDEPMODE = depmode=gcc3 +CFLAGS = -g -O2 +CPP = gcc -E +CPPFLAGS = +CYGPATH_W = echo +DEFS = -DHAVE_CONFIG_H +DEPDIR = .deps +ECHO_C = +ECHO_N = -n +ECHO_T = +EGREP = /usr/bin/grep -E +EXEEXT = +GREP = /usr/bin/grep +INSTALL = /usr/bin/ginstall -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LDFLAGS = -lSM -lICE +LIBOBJS = +LIBS = -lnetsnmp -lXpm -lXext -lX11 -lm +LTLIBOBJS = +MAKEINFO = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/missing --run makeinfo +MKDIR_P = /usr/bin/mkdir -p +OBJEXT = o +PACKAGE = wmnd +PACKAGE_BUGREPORT = wavexx@users.sf.net +PACKAGE_NAME = wmnd +PACKAGE_STRING = wmnd 0.4.17 +PACKAGE_TARNAME = wmnd +PACKAGE_URL = +PACKAGE_VERSION = 0.4.17 +PATH_SEPARATOR = : +SET_MAKE = +SHELL = /bin/sh +STRIP = +VERSION = 0.4.17 +XMKMF = +X_CFLAGS = +X_EXTRA_LIBS = +X_LIBS = +X_PRE_LIBS = -lSM -lICE +abs_builddir = /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/src +abs_srcdir = /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/src +abs_top_builddir = /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd +abs_top_srcdir = /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd +ac_ct_CC = gcc +am__include = include +am__leading_dot = . +am__quote = +am__tar = $${TAR-tar} chof - "$$tardir" +am__untar = $${TAR-tar} xf - +bindir = ${exec_prefix}/bin +build = x86_64-unknown-linux-gnu +build_alias = +build_cpu = x86_64 +build_os = linux-gnu +build_vendor = unknown +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +exec_prefix = ${prefix} +host = x86_64-unknown-linux-gnu +host_alias = +host_cpu = x86_64 +host_os = linux-gnu +host_vendor = unknown +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${datarootdir}/info +install_sh = ${SHELL} /home/eukara/VCS/WindowMaker-Eukara/dockapps/wmnd/install-sh +libdir = ${exec_prefix}/lib +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = ${prefix}/var +mandir = ${datarootdir}/man +mkdir_p = /usr/bin/mkdir -p +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr/local +program_transform_name = s,x,x, +psdir = ${docdir} +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = ${prefix}/etc +target = x86_64-unknown-linux-gnu +target_alias = +target_cpu = x86_64 +target_os = linux-gnu +target_vendor = unknown +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. + +# sources +wmnd_SOURCES = \ + cfgdata.c cfgdata.h \ + display.c display.h \ + drivers.c drivers.h \ + list.h bits.h \ + master.xpm \ + misc.c misc.h \ + ppp_defs.h pppio.h \ + messages.c messages.h \ + wmnd.c wmnd.h + + +# extra files +EXTRA_DIST = README.master.xpm +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +wmnd$(EXEEXT): $(wmnd_OBJECTS) $(wmnd_DEPENDENCIES) $(EXTRA_wmnd_DEPENDENCIES) + @rm -f wmnd$(EXEEXT) + $(LINK) $(wmnd_OBJECTS) $(wmnd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +include ./$(DEPDIR)/cfgdata.Po +include ./$(DEPDIR)/display.Po +include ./$(DEPDIR)/drivers.Po +include ./$(DEPDIR)/messages.Po +include ./$(DEPDIR)/misc.Po +include ./$(DEPDIR)/wmnd.Po + +.c.o: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< + $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c $< + +.c.obj: + $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` + $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +# source='$<' object='$@' libtool=no \ +# DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \ +# $(COMPILE) -c `$(CYGPATH_W) '$<'` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/dockapps/wmnd/src/Makefile.am b/dockapps/wmnd/src/Makefile.am new file mode 100644 index 0000000..223a61a --- /dev/null +++ b/dockapps/wmnd/src/Makefile.am @@ -0,0 +1,19 @@ +# Makefile for wmnd + +# final executables +bin_PROGRAMS = wmnd + +# sources +wmnd_SOURCES = \ + cfgdata.c cfgdata.h \ + display.c display.h \ + drivers.c drivers.h \ + list.h bits.h \ + master.xpm \ + misc.c misc.h \ + ppp_defs.h pppio.h \ + messages.c messages.h \ + wmnd.c wmnd.h + +# extra files +EXTRA_DIST = README.master.xpm diff --git a/dockapps/wmnd/src/Makefile.in b/dockapps/wmnd/src/Makefile.in new file mode 100644 index 0000000..364d939 --- /dev/null +++ b/dockapps/wmnd/src/Makefile.in @@ -0,0 +1,523 @@ +# Makefile.in generated by automake 1.11.5 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software +# Foundation, Inc. +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Makefile for wmnd + +VPATH = @srcdir@ +am__make_dryrun = \ + { \ + am__dry=no; \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ + | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ + *) \ + for am__flg in $$MAKEFLAGS; do \ + case $$am__flg in \ + *=*|--*) ;; \ + *n*) am__dry=yes; break;; \ + esac; \ + done;; \ + esac; \ + test $$am__dry = yes; \ + } +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +target_triplet = @target@ +bin_PROGRAMS = wmnd$(EXEEXT) +subdir = src +DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_wmnd_OBJECTS = cfgdata.$(OBJEXT) display.$(OBJEXT) \ + drivers.$(OBJEXT) misc.$(OBJEXT) messages.$(OBJEXT) \ + wmnd.$(OBJEXT) +wmnd_OBJECTS = $(am_wmnd_OBJECTS) +wmnd_LDADD = $(LDADD) +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +SOURCES = $(wmnd_SOURCES) +DIST_SOURCES = $(wmnd_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +XMKMF = @XMKMF@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target = @target@ +target_alias = @target_alias@ +target_cpu = @target_cpu@ +target_os = @target_os@ +target_vendor = @target_vendor@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ + +# sources +wmnd_SOURCES = \ + cfgdata.c cfgdata.h \ + display.c display.h \ + drivers.c drivers.h \ + list.h bits.h \ + master.xpm \ + misc.c misc.h \ + ppp_defs.h pppio.h \ + messages.c messages.h \ + wmnd.c wmnd.h + + +# extra files +EXTRA_DIST = README.master.xpm +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p; \ + then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) +wmnd$(EXEEXT): $(wmnd_OBJECTS) $(wmnd_DEPENDENCIES) $(EXTRA_wmnd_DEPENDENCIES) + @rm -f wmnd$(EXEEXT) + $(LINK) $(wmnd_OBJECTS) $(wmnd_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cfgdata.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/display.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drivers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/messages.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/misc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmnd.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` + +ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + mkid -fID $$unique +tags: TAGS + +TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + set x; \ + here=`pwd`; \ + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: CTAGS +CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ + $(TAGS_FILES) $(LISP) + list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | \ + $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in files) print i; }; }'`; \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ + clean-generic ctags distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ + uninstall-am uninstall-binPROGRAMS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/dockapps/wmnd/src/README.master.xpm b/dockapps/wmnd/src/README.master.xpm new file mode 100644 index 0000000..5c1cd67 --- /dev/null +++ b/dockapps/wmnd/src/README.master.xpm @@ -0,0 +1,4 @@ +don't edit master.xpm using gimp or any other image editing tool. +or, if you do, make sure to restore the symbolic color names +(see inside the file). better just not mess with it. + diff --git a/dockapps/wmnd/src/bits.h b/dockapps/wmnd/src/bits.h new file mode 100644 index 0000000..c10b2eb --- /dev/null +++ b/dockapps/wmnd/src/bits.h @@ -0,0 +1,51 @@ +/* + * bits: platform indipendent version operating on chars + * Copyright(c) 2001 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +#ifndef BITS_H +#define BITS_H + +#include "config.h" + + +/* a typedef for bits operation container */ +typedef long int _bits_type; + + +/* core functions */ +static inline _bits_type +getmask(const int pos) +{ + _bits_type rtval = 1; + return (rtval << pos); +} + +static inline void +onbit(_bits_type* obj, const int pos) +{ + *obj |= getmask(pos); +} + +static inline void +offbit(_bits_type* obj, const int pos) +{ + *obj &= ~getmask(pos); +} + +static inline int +getbit(const _bits_type* obj, const int pos) +{ + _bits_type tmpobj = *obj; + tmpobj &= getmask(pos); + return (tmpobj? 1: 0); +} + +static inline void +invbit(_bits_type* obj, const int pos) +{ + *obj ^= getmask(pos); +} + +#endif diff --git a/dockapps/wmnd/src/cfgdata.c b/dockapps/wmnd/src/cfgdata.c new file mode 100644 index 0000000..0331ccf --- /dev/null +++ b/dockapps/wmnd/src/cfgdata.c @@ -0,0 +1,60 @@ +/* + * cfgdata: WMND configuration data + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +/* local header */ +#include "cfgdata.h" + +/* define null if missing */ +#ifndef NULL +#define NULL 0x0 +#endif + +struct pair_strint psi_bool[] = +{ + {"no",0}, + {"yes",1}, + {NULL,0} +}; + +/* + * we use a % because we must not use an existing name + * If you develope a driver, don't name it with a leading % + * the "used" variable is used to detect forced command line + * parameters, 0: read config, 1: don't read + * + * NOTE: DEFault CONfiguration. + */ +struct pair_strstr pss_defcon[] = +{ + {"tx_color", "#00fff2", 0}, + {"rx_color", "#188a86", 0}, + {"md_color", "#71e371", 0}, + {"refresh", "50000", 0}, + {"scroll", "10", 0}, + {"avg_steps", "1", 0}, + {"binary_scale", "no", 0}, + {"interface_name", "%first", 0}, + {"use_long_names", "no", 0}, + {"show_max_values", "yes", 0}, + {"use_max_history", "no", 0}, + {"display_time", "yes", 0}, + {"wave_mode", "wmnet", 0}, + {"driver", "%auto", 0}, + {"driver_interface","%any", 0}, + {"quiet", "no", 0}, + {"smooth", "0", 0}, + {"name", "wmnd", 0}, + {"fixed_max", "0", 0}, + {"display", NULL, 0}, + {"geometry", NULL, 0}, + {"debug", "no", 0}, +#ifdef USE_TREND + {"trend_flags", "", 0}, + {"trend_update", "yes", 0}, + {"trend_history", "58", 0}, +#endif + {NULL, NULL, 0} +}; diff --git a/dockapps/wmnd/src/cfgdata.h b/dockapps/wmnd/src/cfgdata.h new file mode 100644 index 0000000..8d7d849 --- /dev/null +++ b/dockapps/wmnd/src/cfgdata.h @@ -0,0 +1,34 @@ +/* + * cfgdata: WMND configuration data + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +#ifndef CFGDATA_H +#define CFGDATA_H + +#include "config.h" + + +/* configuration enums */ +struct pair_strint +{ + char* strval; + int val; +}; + +/* configuration booleans values */ +extern struct pair_strint psi_bool[]; + +/* default configuration values */ +struct pair_strstr +{ + char* token; + char* value; + int used; +}; + +/* configuration strings */ +extern struct pair_strstr pss_defcon[]; + +#endif diff --git a/dockapps/wmnd/src/display.c b/dockapps/wmnd/src/display.c new file mode 100644 index 0000000..644a4a1 --- /dev/null +++ b/dockapps/wmnd/src/display.c @@ -0,0 +1,546 @@ +/* + * display: commod graphic functions + * Copyright(c) 1997 by Alfredo K. Kojima + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +/* local headers */ +#include "display.h" +#include "wmnd.h" + +/* system headers */ +#include +#include + + +/* + * get the bits-per-pixel for the specified maximal value, considering + * the actual scale mode (auto, max, log). + */ +int +getBpp(unsigned size, unsigned long max) +{ + int bpp; + + if(wmnd.maxScale && bit_get(CFG_MODE)) + { + bpp = wmnd.maxScale / size; + if((wmnd.maxScale % size) > 0) + ++bpp; + } + else + { + if(max > size) + { + bpp = max / size; + if((max % size) > 0) + ++bpp; + } + else + bpp = 1; + } + + return bpp; +} + + +/* truncate values below size in a stacked way */ +void +trunc_stacked(unsigned size, unsigned* rx, unsigned* tx) +{ + /* handle values below max */ + if((*rx + *tx) > size) + { + if(*rx > size) + *rx = size; + if((*rx + *tx) > size) + *tx = size - *rx; + } +} + + +/* truncate values below size */ +void +trunc_normal(unsigned size, unsigned* rx, unsigned* tx) +{ + *rx = MIN(size, *rx); + *tx = MIN(size, *tx); +} + + +#ifdef USE_DRW_TRADITIONAL +/* Traditional mode */ +void +drwTraditional(unsigned long* hist, unsigned mIn, unsigned mOut, + unsigned size, unsigned long long rx_max, unsigned long long tx_max) +{ + unsigned int k, txlev, rxlev, nolev; + int bpp = getBpp(size, rx_max + tx_max); + + for(k = 0; k < 58; k++) + { + rxlev = hist[mIn] / bpp; + txlev = hist[mOut] / bpp; + trunc_stacked(size, &rxlev, &txlev); + + nolev = (rxlev + txlev); + copy_xpm_area(66, 0, 1, txlev, k + 3, 53 - nolev); + copy_xpm_area(65, 0, 1, size - nolev, k + 3, 53 - size); + copy_xpm_area(67, 0, 1, rxlev, k + 3, 53 - rxlev); + hist += 4; + } + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); +} +#endif + + +#ifdef USE_DRW_MGRAPH +/* MGraph mode */ +void +drwMGraph(unsigned long* hist, unsigned mIn, unsigned mOut, + unsigned size, unsigned long long rx_max, unsigned long long tx_max) +{ + /* max scale */ + unsigned int k, txlev, rxlev; + int bpp = getBpp(size, MAX(tx_max, rx_max)); + + /* process the whole history */ + for(k = 0; k < 58; ++k) + { + rxlev = hist[mIn] / bpp; + txlev = hist[mOut] / bpp; + trunc_normal(size, &rxlev, &txlev); + + /* clear the top area */ + copy_xpm_area(65, 0, 1, size - MAX(rxlev, txlev), k + 3, 53 - size); + + /* draw the tx/rx bars */ + if(rxlev > txlev) + { + /* rx is major */ + copy_xpm_area(67, 0, 1, rxlev - txlev, k + 3, 53 - rxlev); + copy_xpm_area(66, 0, 1, txlev, k + 3, 53 - txlev); + } + else + { + /* tx is major */ + copy_xpm_area(66, 0, 1, txlev - rxlev, k + 3, 53 - txlev); + copy_xpm_area(67, 0, 1, rxlev, k + 3, 53 - rxlev); + } + + /* advance */ + hist += 4; + } + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); +} +#endif + + +#ifdef USE_DRW_WAVEFORM +/* Waveform mode */ +void +drwWaveform(unsigned long* hist, unsigned mIn, unsigned mOut, + unsigned size, unsigned long long rx_max, unsigned long long tx_max) +{ + unsigned int k, txlev, rxlev, center; + int bpp = getBpp(size, rx_max + tx_max); + + for(k = 0; k < 58; k++) + { + rxlev = hist[mIn] / bpp / 2; + txlev = hist[mOut] / bpp / 2; + trunc_stacked(size / 2, &rxlev, &txlev); + + center = 53 - size / 2; + copy_xpm_area(65, 0, 1, size, k + 3, 53 - size); + copy_xpm_area(66, 0, 1, txlev, k + 3, + (center - rxlev) - txlev); + copy_xpm_area(66, 0, 1, txlev, k + 3, (center + rxlev)); + copy_xpm_area(67, 0, 1, rxlev * 2, k + 3, center - rxlev); + hist += 4; + } + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); + copy_xpm_area(70, 0, 58, 1, 3, 53 - size / 2); +} +#endif + + +#ifdef USE_DRW_WMWAVE +/* Reverse wmnet mode */ +void +drwWmwave(unsigned long* hist, unsigned mIn, unsigned mOut, + unsigned size, unsigned long long rx_max, unsigned long long tx_max) +{ + unsigned int k, msize, bpp, txlev, rxlev, center; + msize = (unsigned)((double)size / 2); + bpp = getBpp(msize, MAX(tx_max, rx_max)); + + for(k = 0; k < 58; k++) + { + rxlev = hist[mIn] / bpp; + txlev = hist[mOut] / bpp; + trunc_normal(msize, &rxlev, &txlev); + + center = 53 - msize; + copy_xpm_area(65, 0, 1, size, k + 3, 53 - size); + copy_xpm_area(66, 0, 1, txlev, k + 3, center - txlev); + copy_xpm_area(67, 0, 1, rxlev, k + 3, center); + + hist += 4; + } + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); + copy_xpm_area(70, 0, 58, 1, 3, 53 - msize); +} +#endif + + +#ifdef USE_DRW_WMNET +/* Wmnet like modeness */ +void +drwWmnet(unsigned long* hist, unsigned mIn, unsigned mOut, unsigned size, + unsigned long long rx_max, unsigned long long tx_max) +{ + unsigned int k, txlev, rxlev, nolev; + int bpp = getBpp(size, rx_max + tx_max); + + for(k = 0; k < 58; k++) + { + rxlev = hist[mIn] / bpp; + txlev = hist[mOut] / bpp; + trunc_normal(size, &rxlev, &txlev); + + /* handle overlap, smaller in front */ + if((rxlev + txlev) > size) + { + if(rxlev > txlev) + rxlev = size - txlev; + else + txlev = size - rxlev; + } + + nolev = size - (rxlev + txlev); + copy_xpm_area(66, 0, 1, txlev, k + 3, 53 - size); + copy_xpm_area(65, 0, 1, nolev, k + 3, (53 - size) + txlev); + copy_xpm_area(67, 0, 1, rxlev, k + 3, 53 - rxlev); + hist += 4; + } + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); +} +#endif + + +#ifdef USE_DRW_SEPGRAPHS +/* Separated graphs mode */ +void +drwSepgraphs(unsigned long* hist, unsigned mIn, unsigned mOut, + unsigned size, unsigned long long rx_max, unsigned long long tx_max) +{ + unsigned int k, msize, txlev, rxlev, center, rxBpp, txBpp; + msize = (unsigned)((double)size / 2); + rxBpp = getBpp(msize, rx_max); + txBpp = getBpp(msize, tx_max); + + for(k = 0; k < 58; k++) + { + rxlev = hist[mIn] / rxBpp; + txlev = hist[mOut] / txBpp; + trunc_normal(msize, &rxlev, &txlev); + + center = 53 - msize; + copy_xpm_area(65, 0, 1, size, k + 3, 53 - size); + copy_xpm_area(66, 0, 1, txlev, k + 3, center - txlev); + copy_xpm_area(67, 0, 1, rxlev, k + 3, 53 - rxlev); + + hist += 4; + } + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); + copy_xpm_area(70, 0, 58, 1, 3, 53 - msize); +} +#endif + + +#ifdef USE_DRW_TWISTED +/* Twisted mode */ +void +drwTwisted(unsigned long* hist, unsigned mIn, unsigned mOut, + unsigned size, unsigned long long rx_max, unsigned long long tx_max) +{ + unsigned int k, stpos, itn, txlev, rxlev; + int bpp = getBpp(29, MAX(tx_max, rx_max)); + + stpos = 53 - size; + itn = 53 - stpos; + + hist += 4 * (58-itn); + for(k = 0; k < itn; k++) + { + rxlev = hist[mIn] / bpp; + txlev = hist[mOut] / bpp; + trunc_normal(29, &rxlev, &txlev); + + /* Tx on the right, flowing up */ + copy_xpm_area(70, 3, 29, 1, 32, stpos + k); + if (txlev) + copy_xpm_area(70, 4, txlev, 1, 32 + (29-txlev)/2, stpos + k) + else + copy_xpm_area(70, 0, 1, 1, 46, stpos + k); + + /* Rx on the left, flowing down */ + copy_xpm_area(70, 3, 29, 1, 3, 52 - k); + if (rxlev) + copy_xpm_area(70, 5, rxlev, 1, 3 + (29 - rxlev) / 2, 52 - k) + else + copy_xpm_area(70, 0, 1, 1, 17, 52 - k); + + hist += 4; + } + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); +} +#endif + + +#if defined(USE_DRW_CHARTS) || defined(USE_DRW_NEEDLE) +/* func utils */ +void +drwGetMeds(const unsigned long* hist, const unsigned mIn, + const unsigned mOut, unsigned long* tx_med, + unsigned long* rx_med) +{ + unsigned int k; + *tx_med = *rx_med = 0; + for(k = 0; k < 58; k++) + { + *tx_med += hist[mOut]; + *rx_med += hist[mIn]; + hist += 4; + } + *tx_med /= 58; + *rx_med /= 58; +} +#endif + + +#ifdef USE_DRW_CHARTS +/* Charts mode */ +void drwCharts(unsigned long* hist, unsigned mIn, unsigned mOut, unsigned size, + unsigned long long rx_max, unsigned long long tx_max) +{ + unsigned int k, j, stpos, spc; + unsigned long tx_med = 0, rx_med = 0, x_max; + + stpos = 53 - size; + drwGetMeds(hist, mIn, mOut, &tx_med, &rx_med); + + hist += 4 * 57; + spc = (size - 34) / 3; + x_max = MAX(rx_max, tx_max); + if (!x_max) + x_max = 1; + + /* clear zones */ + copy_xpm_area(70, 3, 58, 1, 3, stpos + 1); + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); + copy_xpm_area(70, 3, 58, 1, 3, 52); + for(k = 0; k < 3; k++) + for(j = 0; j < spc; j++) + copy_xpm_area(70, 3, 58, 1, 3, stpos + 10 + (8*k) + (k*spc) + j); + + /* tx current */ + copy_xpm_area(70, 8, 58, 8, 3, stpos + 2); + copy_xpm_area(70, 17, (int)((double)54*hist[mOut]/x_max), 6, 5, stpos + 3); + + /* tx average */ + copy_xpm_area(70, 8, 58, 8, 3, stpos + 10 + spc); + copy_xpm_area(70, 17, (int)((double)54*tx_med/x_max), 6, 5, stpos + 11 + spc); + + /* rx current */ + copy_xpm_area(70, 8, 58, 8, 3, stpos + 18 + spc*2); + copy_xpm_area(70, 17, (int)((double)54*hist[mIn]/x_max), 6, 5, + stpos + 19 + spc * 2); + + /* rx average */ + copy_xpm_area(70, 8, 58, 8, 3, stpos + 26 + spc*3); + copy_xpm_area(70, 17, (int)((double)54*rx_med/x_max), 6, 5, + stpos + 27 + spc * 3); +} +#endif + + +#ifdef USE_DRW_NEEDLE +/* simple utility function for rotating points */ +void +drwRotPoint(const unsigned len, const double rad, + unsigned* nX, unsigned* nY) +{ + *nX = (unsigned)((double)len * sin(rad)); + *nY = (unsigned)((double)len * cos(rad)); +} + +/* needle mode */ +void drwNeedle(unsigned long* hist, unsigned mIn, unsigned mOut, unsigned size, + unsigned long long rx_max, unsigned long long tx_max) +{ + unsigned int k, stpos, offset, nX, nY; + unsigned long tx_med = 0, rx_med = 0, x_max; + double angle; + + static int gcinit = 0; + static GC gcs[3]; + + /* gc initialization */ + if (!gcinit) + { + XGCValues gcval; + + gcval.foreground = dockapp.stdColors.txColor; + gcval.graphics_exposures = False; + gcs[0] = XCreateGC(dockapp.d, dockapp.pixmap, GCForeground | + GCGraphicsExposures, &gcval); + gcval.foreground = dockapp.stdColors.rxColor; + gcs[1] = XCreateGC(dockapp.d, dockapp.pixmap, GCForeground | + GCGraphicsExposures, &gcval); + gcval.foreground = dockapp.stdColors.mdColor; + gcs[2] = XCreateGC(dockapp.d, dockapp.pixmap, GCForeground | + GCGraphicsExposures, &gcval); + gcinit = 1; + } + + stpos = 53 - size; + offset = (size - 34) / 2 + 1; + + /* background pixmap */ + copy_xpm_area(129, 0, 58, 34, 3, stpos + offset); + + /* clean up */ + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); + for(k = 1; k < offset; k++) + { + copy_xpm_area(70, 3, 58, 1, 3, stpos + k); + copy_xpm_area(70, 3, 58, 1, 3, 53 - k); + } + + drwGetMeds(hist, mIn, mOut, &tx_med, &rx_med); + x_max = MAX(rx_max, tx_max); + if (!x_max) + x_max=1; + + /* tx needle */ + angle = 1.57 * tx_med / x_max; + drwRotPoint(13, angle, &nX, &nY); + + XDrawLine(dockapp.d, dockapp.pixmap, gcs[0], 5, stpos + offset + 2, + 5 + nX, stpos + offset + 2 + nY); + + /* rx needle */ + angle = 1.57 * rx_med / x_max; + drwRotPoint(13, angle, &nX, &nY); + + XDrawLine(dockapp.d, dockapp.pixmap, gcs[1], 5, stpos + offset + 31, + 5 + nX, stpos + offset + 31 - nY); + + /* central needle */ + if (!(tx_max+rx_max)) + tx_max=1; + + angle = 0.65*(rx_med+tx_med)/(rx_max+tx_max)+1.25; + drwRotPoint(44, angle, &nX, &nY); + + XDrawLine(dockapp.d, dockapp.pixmap, gcs[2], 14, stpos + offset + 17, + 14 + nX, stpos + offset + 17 + nY); +} +#endif + + +#ifdef USE_DRW_LINES +/* lines mode */ +void drwLines(unsigned long* hist, unsigned mIn, unsigned mOut, unsigned size, + unsigned long long rx_max, unsigned long long tx_max) +{ + unsigned int k, oTxlev, oRxlev, txlev, rxlev; + int bpp = getBpp(size - 2, MAX(tx_max, rx_max)); + + static int gcinit = 0; + static GC gcs[2]; + + /* gc initialization */ + if (!gcinit) + { + XGCValues gcval; + + gcval.foreground = dockapp.stdColors.txColor; + gcval.graphics_exposures = False; + gcs[0] = XCreateGC(dockapp.d, dockapp.pixmap, GCForeground | + GCGraphicsExposures, &gcval); + gcval.foreground = dockapp.stdColors.rxColor; + gcs[1] = XCreateGC(dockapp.d, dockapp.pixmap, GCForeground | + GCGraphicsExposures, &gcval); + gcinit = 1; + } + + /* fake old values */ + oRxlev = hist[mIn] / bpp; + oTxlev = hist[mOut] / bpp; + trunc_normal(size - 2, &oRxlev, &oTxlev); + + for(k = 0; k < 58; k++) + { + rxlev = hist[mIn] / bpp; + txlev = hist[mOut] / bpp; + trunc_normal(size - 2, &rxlev, &txlev); + + /* clear the area */ + copy_xpm_area(65, 0, 1, size, k + 3, 53 - size); + + /* tx and rx */ + XDrawLine(dockapp.d, dockapp.pixmap, gcs[0], + k + 3, 52 - oTxlev, k + 3, 52 - txlev); + XDrawLine(dockapp.d, dockapp.pixmap, gcs[1], + k + 3, 52 - oRxlev, k + 3, 52 - rxlev); + + /* advance */ + hist += 4; + oTxlev = txlev; + oRxlev = rxlev; + } + + copy_xpm_area(70, 1, 58, 1, 3, 53 - size); +} +#endif + + +/* function's structure list */ +struct drwStruct drwFuncs[] = +{ +#ifdef USE_DRW_TRADITIONAL + { "traditional", drwTraditional }, +#endif +#ifdef USE_DRW_MGRAPH + { "mgraph", drwMGraph }, +#endif +#ifdef USE_DRW_WAVEFORM + { "waveform", drwWaveform }, +#endif +#ifdef USE_DRW_WMWAVE + { "wmwave", drwWmwave }, +#endif +#ifdef USE_DRW_WMNET + { "wmnet", drwWmnet }, +#endif +#ifdef USE_DRW_SEPGRAPHS + { "sepgraphs", drwSepgraphs }, +#endif +#ifdef USE_DRW_TWISTED + { "twisted", drwTwisted }, +#endif +#ifdef USE_DRW_CHARTS + { "charts", drwCharts }, +#endif +#ifdef USE_DRW_NEEDLE + { "needle", drwNeedle }, +#endif +#ifdef USE_DRW_LINES + { "lines", drwLines }, +#endif + { NULL, NULL, } +}; diff --git a/dockapps/wmnd/src/display.h b/dockapps/wmnd/src/display.h new file mode 100644 index 0000000..f05f692 --- /dev/null +++ b/dockapps/wmnd/src/display.h @@ -0,0 +1,38 @@ +/* + * display: commod graphic functions + * Copyright(c) 1997 by Alfredo K. Kojima + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +#ifndef DISPLAY_H +#define DISPLAY_H + +/* local configuration */ +#include "config.h" + +/* we may need to define NULL on some compilers */ +#ifndef NULL +#define NULL 0x0 +#endif + +/* usefull display macros */ +#define copy_xpm_area(x, y, w, h, dx, dy) \ +{ \ + XCopyArea(dockapp.d, dockapp.pixmap, dockapp.pixmap, dockapp.gc, \ + x, y, w, h, dx, dy); \ + dockapp.update = 1; \ +} + +/* struct for drawing functions */ +struct drwStruct +{ + char* funcName; + void (*funcPtr)(unsigned long* hist, unsigned mIn, unsigned mOut, + unsigned size, unsigned long long rx_max, unsigned long long tx_max); +}; + +/* function's structure */ +extern struct drwStruct drwFuncs[]; + +#endif diff --git a/dockapps/wmnd/src/drivers.c b/dockapps/wmnd/src/drivers.c new file mode 100644 index 0000000..ed67fc8 --- /dev/null +++ b/dockapps/wmnd/src/drivers.c @@ -0,0 +1,1316 @@ +/* + * drivers: drivers definitions - implementation + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +/* local headers */ +#include "config.h" +#include "drivers.h" +#include "messages.h" + +/* system headers */ +#include + + +/* common helper functions */ +struct Devices* +devices_append(struct Devices* list, struct Devices* src) +{ + list->next = src; + src->next = NULL; + return src; +} + + +#ifdef USE_SOLARIS_FPPPD +#undef drName +#define drName USE_SOLARIS_FPPPD + +/* + * this driver should work on any system that could compile and execute pppd + * for linux/solaris. + */ + +/* some needed headers */ +#include +#ifdef HAVE_NET_PPP_DEFS_H +#include +#else +#include "ppp_defs.h" +#endif +#include "pppio.h" +#include + +/* on some systems may be /dev/streams/ppp */ +const char* solaris_fpppd_device = "/dev/ppp"; + +/* connection status (needed for dialup devices) */ +enum solaris_fpppd_connstatus +{ + sfpppd_untested, + sfpppd_failed, + sfpppd_opened, + sfpppd_connected +}; + +/* driver data in Devices, used for coding style */ +struct solaris_fpppd_drvdata +{ + int fd; + int unit; + enum solaris_fpppd_connstatus mustconnect; +}; + +/* strioclt is a support function, not previously declared */ +int +solaris_fpppd_strioctl(int fd, int cmd, char* ptr, int ilen, int olen) +{ + struct strioctl str; + + str.ic_cmd = cmd; + str.ic_timout = 0; + str.ic_len = ilen; + str.ic_dp = ptr; + if(ioctl(fd, I_STR, &str) == -1) + return -1; + if(str.ic_len != olen) + msg_drInfo(drName, "strioctl expected %d bytes, got %d for cmd %x", + olen, str.ic_len, cmd); + return 0; +} + +int +solaris_fpppd_init(struct Devices* dev) +{ + struct solaris_fpppd_drvdata* drvdata = dev->drvdata; + + /* opening fd */ + if(drvdata->mustconnect < sfpppd_opened) + { + dev->devstart = 0; + if((drvdata->fd = open(solaris_fpppd_device, O_RDONLY)) < 0) + { + drvdata->mustconnect = sfpppd_failed; + return 1; + } + else + if(drvdata->mustconnect < sfpppd_opened) + { + if(drvdata->mustconnect == sfpppd_untested) + { + /* supposing the device is down */ + drvdata->mustconnect = sfpppd_opened; + return 0; + } + drvdata->mustconnect = sfpppd_opened; + } + } + + /* attaching to fd device's signals */ + if(drvdata->mustconnect < sfpppd_connected) + { + if(solaris_fpppd_strioctl(drvdata->fd, PPPIO_ATTACH, + (char*)&drvdata->unit, sizeof(int), 0) < 0) + { + drvdata->mustconnect = sfpppd_opened; + dev->devstart = 0; + return 1; + } + else + { + drvdata->mustconnect = sfpppd_connected; + time(&dev->devstart); + } + } + + return 0; +} + +void +solaris_fpppd_term(struct Devices* dev) +{ + close(((struct solaris_fpppd_drvdata*)dev->drvdata)->fd); + free(dev->drvdata); +} + +int +solaris_fpppd_list(const char* devname, struct Devices* list) +{ + int unit; + char* devn = NULL; + struct Devices* ndev; + struct solaris_fpppd_drvdata* ndata; + struct Devices* ptr; + int dta; + + /* device name testing */ + if(devname) + devn = strdup(devname); + + if(devn) /* device specified */ + { + if(sscanf(devn, "ppp%d", &unit) != 1) + { + msg_drInfo(drName, "invalid specified interface '%s'", devn); + free(devn); + return 0; + } + dta = 1; /* allocate only one device, using unit */ + } + else + { + /* check all devices from 0 until error */ + ndev = malloc(sizeof(struct Devices)); + ndev->name = NULL; + unit = 0; + while(1) + { + ndata = malloc(sizeof(struct solaris_fpppd_drvdata)); + ndata->mustconnect = sfpppd_failed; + ndata->unit = unit; + ndev->drvdata = ndata; + + dta = solaris_fpppd_init(ndev); + solaris_fpppd_term(ndev); + + if(dta) + /* device initialization failed */ + break; + + msg_drInfo(drName, "detected ppp%d",unit); + unit++; + } + free(ndev); + + if(!unit) + return 0; + + dta = unit; + unit = 0; + } + + /* allocate new dta devices structures */ + ptr = list; + while(dta--) + { + ndata = malloc(sizeof(struct solaris_fpppd_drvdata)); + ndata->mustconnect = sfpppd_untested; + ndata->unit = unit; + + ndev = malloc(sizeof(struct Devices)); + ptr->next = ndev; + ptr = ndev; + + ndev->next = NULL; + ndev->drvdata = ndata; + + ndev->name = malloc(10); + sprintf(ndev->name,"ppp%d",unit); + + unit++; + } + + return (devn)?free(devn),1:unit; +} + +int +solaris_fpppd_get(struct Devices* dev, unsigned long* ip, + unsigned long* op, unsigned long* ib, unsigned long* ob) +{ + static struct ppp_stats curp; + struct solaris_fpppd_drvdata* drvdata = dev->drvdata; + + /* clear vars (not clearing will fuck up all scales when disconnecting) */ + *ip = *op = *ib = *ob = 0; + + if(drvdata->mustconnect < sfpppd_connected) + { + /* trying to activate the device */ + if(solaris_fpppd_init(dev)) + return 1; + } + if(solaris_fpppd_strioctl(drvdata->fd, PPPIO_GETSTAT, + (char*)&curp, 0, sizeof(curp)) < 0) + { + /* the connection has probably shutted down */ + drvdata->mustconnect = sfpppd_failed; + close(drvdata->fd); + return 1; + } + + *ip = curp.p.ppp_ipackets; + *ib = curp.p.ppp_ibytes; + *op = curp.p.ppp_opackets; + *ob = curp.p.ppp_obytes; + + return 0; +} + +#endif /* USE_SOLARIS_FPPPD */ + + +#ifdef USE_SOLARIS_KSTAT +#undef drName +#define drName USE_SOLARIS_KSTAT + +/* basic kstat header */ +#include + +static kstat_ctl_t* solaris_kstat_kc = NULL; + +/* driver data in Devices, used for coding style */ +struct solaris_kstat_drvdata +{ + kstat_t* ksp; + kstat_named_t* active; + kstat_named_t* in_pkt; + kstat_named_t* in_byte; + kstat_named_t* out_pkt; + kstat_named_t* out_byte; +}; + +int +solaris_kstat_list(const char* devname, struct Devices* list) +{ + struct Devices* ndev; + struct solaris_kstat_drvdata* ndata; + struct Devices* ptr; + kstat_t* ksp; + int dta = 0; + + /* opening /dev/kstat */ + solaris_kstat_kc = kstat_open(); + if(!solaris_kstat_kc) + { + msg_drInfo(drName, "unable to open /dev/kstat"); + return 0; + } + + /* check all devices of class net */ + ptr = list; + for(ksp = solaris_kstat_kc->kc_chain; ksp; ksp = ksp->ks_next) + { + if(!strcmp(ksp->ks_class, "net")) + { + kstat_read(solaris_kstat_kc, ksp, NULL); + if((!devname || (devname && !strcmp(devname,ksp->ks_name))) && + kstat_data_lookup(ksp, "ipackets") && + kstat_data_lookup(ksp, "opackets") && + kstat_data_lookup(ksp, "rbytes") && + kstat_data_lookup(ksp, "obytes")) + { + /* device is suitable */ + ndev = (struct Devices*)malloc(sizeof(struct Devices)); + ndev->devstart = 0; + ndev->name = strdup(ksp->ks_name); + ndata = (struct solaris_kstat_drvdata*) + malloc(sizeof(struct solaris_kstat_drvdata)); + ndata->ksp = ksp; + ptr->next = ndev; + ndev->next = NULL; + ndev->drvdata = ndata; + ptr = ndev; + + msg_drInfo(drName, "detected %s",ndev->name); + dta++; + } + } + } + + return dta; +} + +int +solaris_kstat_init(struct Devices* dev) +{ + struct solaris_kstat_drvdata* drvdata = + (struct solaris_kstat_drvdata*)dev->drvdata; + + drvdata->active = (kstat_named_t*)kstat_data_lookup(drvdata->ksp,"link_up"); + if(!drvdata->active) + msg_drInfo(drName, "device %s can't properly detect link status", dev->name); + drvdata->in_pkt = (kstat_named_t*)kstat_data_lookup(drvdata->ksp,"ipackets"); + drvdata->in_byte = (kstat_named_t*)kstat_data_lookup(drvdata->ksp,"rbytes"); + drvdata->out_pkt = (kstat_named_t*)kstat_data_lookup(drvdata->ksp,"opackets"); + drvdata->out_byte = (kstat_named_t*)kstat_data_lookup(drvdata->ksp,"obytes"); + + return !(drvdata->in_pkt && drvdata->in_byte && + drvdata->out_pkt && drvdata->out_byte); +} + +int +solaris_kstat_get(struct Devices* dev, unsigned long* ip, unsigned long* op, + unsigned long* ib, unsigned long* ob) +{ + struct solaris_kstat_drvdata* drvdata = + (struct solaris_kstat_drvdata*)dev->drvdata; + *ip = *op = *ib = *ob = 0; + + /* a bit ugly, but use the correct type on either 32 or 64bit builds + without having to check data_type dynamically or truncate. */ +#if (SIZEOF_UNSIGNED_LONG < 8) +#define KSTAT_WORD_TYPE ui32 +#else +#define KSTAT_WORD_TYPE ui64 +#endif + + if(kstat_read(solaris_kstat_kc, drvdata->ksp, NULL) == -1) + return 1; + else + { + *ip = (drvdata->in_pkt->value.KSTAT_WORD_TYPE); + *op = (drvdata->out_pkt->value.KSTAT_WORD_TYPE); + *ib = (drvdata->in_byte->value.KSTAT_WORD_TYPE); + *ob = (drvdata->out_byte->value.KSTAT_WORD_TYPE); + } + + return (drvdata->active? !drvdata->active->value.KSTAT_WORD_TYPE: 0); +} + +void +solaris_kstat_term(struct Devices* dev) +{ + free(dev->drvdata); +} + +#endif /* USE_SOLARIS_KSTAT */ + + +#ifdef USE_TESTING_DUMMY +#undef drName +#define drName USE_TESTING_DUMMY + +#include + +/* we need the double of PI, not defined everywhere */ +#undef M_2PI +#define M_2PI (M_PI * 2) + +int +testing_dummy_list(const char* devname, struct Devices* list) +{ + struct Devices* ndev; + if(devname) + return 0; + + ndev = (struct Devices*)malloc(sizeof(struct Devices)); + ndev->name = strdup("off"); + devices_append(list, ndev); + + msg_drInfo(drName, "detected %s", ndev->name); + + return 1; /* usually returns the number of devices */ +} + +int +testing_dummy_init(struct Devices* dev) +{ + dev->devstart = 0; + return 0; +} + +int +testing_dummy_get(struct Devices* dev, unsigned long* ip, unsigned long* op, + unsigned long* ib, unsigned long* ob) +{ + /* some more fun when debugging! */ + static float v = 0.; + static unsigned long is = 0; + static unsigned long os = 0; + + *ip = *ib = (is += (16384. * cos(v)) + 16384); + *op = *ob = (os += (16384. * sin(v)) + 16384); + if(v >= M_2PI) v = fmodf(v, M_2PI); + v += 0.05; + + return 1; +} + +#endif /* USE_TESTING_DUMMY */ + + +#ifdef USE_LINUX_PROC +#undef drName +#define drName USE_LINUX_PROC + +/* + * this driver is badly optimized, re-reading each time the file consumes + * many cpu clocks, only for finding the device name, however we cannot use + * an offset so it's the only way to get some kind of statistics. Definitively + * the kstat driver seems the best way to gather statistics. + */ + +const char* linux_proc_netDevice = "/proc/net/dev"; +const char* linux_proc_tokens = " :\t\n"; /* parse tokens */ + +int +linux_proc_list(const char* devname, struct Devices* list) +{ + FILE* fd; + int dta = 0; + char temp[MAXBUF]; /* string buffer */ + struct Devices* ndev; + char* p; + + /* device name was specified */ + if(devname) + { + strncpy(temp, devname, sizeof(temp)); + for(p = strtok(temp, ","); p; p = strtok(NULL, ",")) + { + ndev = (struct Devices*)malloc(sizeof(struct Devices)); + ndev->devstart = 0; + ndev->name = strdup(p); + + ++dta; + list = devices_append(list, ndev); + + msg_drInfo(drName, "forced %s", p); + } + } + else + { + /* fetch all devices */ + fd = fopen(linux_proc_netDevice, "r"); + if(!fd) return 0; + + /* Skip the first 2 lines */ + fgets(temp, MAXBUF, fd); + fgets(temp, MAXBUF, fd); + + while(fgets(temp, MAXBUF, fd)) + { + /* grab all active devices, adding them as we go */ + p = strtok(temp, linux_proc_tokens); + if(!strncmp(p, "dummy", 5) || + !strncmp(p, "irda", 4) || !strncmp(p, "lo", 3)) + continue; + + dta++; + ndev = (struct Devices*)malloc(sizeof(struct Devices)); + ndev->devstart = 0; + ndev->name = strdup(p); + list = devices_append(list, ndev); + + msg_drInfo(drName, "detected %s", p); + } + fclose(fd); + } + + return dta; +} + +int +linux_proc_get(struct Devices* dev, unsigned long* ip, unsigned long* op, + unsigned long* ib, unsigned long* ob) +{ + FILE* fp; + char temp[MAXBUF]; + char* p; + int active = 1; + + /* read statistics from network device's list */ + fp = fopen(linux_proc_netDevice, "r"); + if(!fp) return 1; + + fgets(temp, MAXBUF, fp); + fgets(temp, MAXBUF, fp); + + *ib = *ob = *ip = *op = 0; + + while(fgets(temp, MAXBUF, fp)) + { + if(!strcmp(strtok(temp, linux_proc_tokens), dev->name)) + { + p = strchr(temp, 0) + 1; + sscanf(p, "%lu %lu %*s %*s %*s %*s %*s %*s %lu %lu", ib, ip, ob, op); + active = 0; + break; + } + } + fclose(fp); + + return active; +} + +#endif /* USE_LINUX_PROC */ + + +/* FreeBSD sysctl driver */ +#ifdef USE_FREEBSD_SYSCTL +#undef drName +#define drName USE_FREEBSD_SYSCTL + +/* system headers */ +#include +#include +#include +#include +#include +#include + +/* we need a structure to hold the device id and the driver data */ +struct freebsd_sysctl_drvdata +{ + struct ifmibdata* data; /* device data */ + int id; /* device id */ +}; + +/* device listing */ +int +freebsd_sysctl_list(const char* devname, struct Devices* list) +{ + struct Devices* ndev; + struct Devices* ptr; + struct ifmibdata tempndata; + struct freebsd_sysctl_drvdata* drdata; + int numifaces, numrfaces = 0; + int mib[5], datamib[6]; + int i; + size_t len, len2; + + mib[0] = CTL_NET; + mib[1] = PF_LINK; + mib[2] = NETLINK_GENERIC; + mib[3] = IFMIB_SYSTEM; + mib[4] = IFMIB_IFCOUNT; + + datamib[0] = CTL_NET; + datamib[1] = PF_LINK; + datamib[2] = NETLINK_GENERIC; + datamib[3] = IFMIB_IFDATA; + datamib[4] = 1; + datamib[5] = IFDATA_GENERAL; + + len = sizeof(numifaces); + len2 = sizeof(struct ifmibdata); + + if(sysctl(mib, 5, &numifaces, &len, NULL, 0) < 0) + { + msg_drInfo(drName, "failed to perform sysctl"); + return 0; + } + + ptr = list; + for(i = 1; i <= numifaces; i++) + { + datamib[4] = i; + if(sysctl(datamib, 6, &tempndata, &len2, NULL, 0) < 0) + { + msg_drInfo(drName, "failed to get device(%d) data", i); + break; + } + + if((devname && !strcmp(devname, tempndata.ifmd_name)) || (!devname && + strcmp(tempndata.ifmd_name, "lo"))) + { + ndev = malloc(sizeof(struct Devices)); + ndev->devstart = 0; + ndev->name = strdup(tempndata.ifmd_name); + drdata = malloc(sizeof(struct freebsd_sysctl_drvdata)); + drdata->data = malloc(sizeof(struct ifmibdata)); + memcpy(drdata->data, &tempndata, sizeof(struct ifmibdata)); + drdata->id = i; + ptr->next = ndev; + ndev->next = NULL; + ndev->drvdata = drdata; + ptr = ndev; + + msg_drInfo(drName, "detected %s", ndev->name); + + /* increment the number of really avaible interfaces */ + ++numrfaces; + } + } + + return numrfaces; +} + +/* gather stats */ +int +freebsd_sysctl_get(struct Devices*dev, unsigned long* ip, + unsigned long* op, unsigned long* ib, unsigned long* ob) +{ + struct freebsd_sysctl_drvdata* drdata = dev->drvdata; + int datamib[6]; + size_t len; + + *ip = *op = *ib = *ob = 0; + + datamib[0] = CTL_NET; + datamib[1] = PF_LINK; + datamib[2] = NETLINK_GENERIC; + datamib[3] = IFMIB_IFDATA; + datamib[4] = drdata->id; + datamib[5] = IFDATA_GENERAL; + + len = sizeof(struct ifmibdata); + + if(sysctl(datamib, 6, drdata->data, &len, NULL, 0) < 0) + return 1; + + *ip = drdata->data->ifmd_data.ifi_ipackets; + *op = drdata->data->ifmd_data.ifi_opackets; + *ib = drdata->data->ifmd_data.ifi_ibytes; + *ob = drdata->data->ifmd_data.ifi_obytes; + + return 0; +} + +/* per-interface deallocation */ +void +freebsd_sysctl_term(struct Devices* dev) +{ + struct freebsd_sysctl_drvdata* drdata = dev->drvdata; + free(drdata->data); + free(drdata); +} + +#endif /* USE_FREEBSD_SYSCTL */ + + +/* IRIX's Performance Co-Pilot (PMCAPI 2.x) */ +#ifdef USE_IRIX_PCP +#undef drName +#define drName USE_IRIX_PCP + +/* PCP API headers */ +#include + +/* PCP NameSpace definitions */ +#define PCPNS_NETINBDOM "network.interface.in.bytes" +#define PCPNS_NETINPDOM "network.interface.in.packets" +#define PCPNS_NETOUTBDOM "network.interface.out.bytes" +#define PCPNS_NETOUTPDOM "network.interface.out.packets" + +struct irix_pcp_drvdata +{ + pmID pmId[4]; + int inst; + int ph; +}; + +/* resolve a PCP domain/desc */ +int +irix_pcp_resDom(char* dom, pmID* pmId, pmDesc* pmD) +{ + int r; + if((r = pmLookupName(1, &dom, pmId)) < 0) + { + msg_drInfo(drName, "unable to lookup %s: %s", dom, pmErrStr(r)); + return -1; + } + + if((r = pmLookupDesc(*pmId, pmD)) < 0) + { + msg_drInfo(drName, "unable to get descriptions about %s: %s", + dom, pmErrStr(r)); + return -1; + } + + return 0; +} + +int +irix_pcp_list(const char* devname, struct Devices* list) +{ + pmID pmId[4]; + pmDesc pmD[4]; + int* inst; + char** desc; + + int dta = 0; + int rad = 0; + struct Devices* ndev; + int i; + int* t; + char** p; + struct irix_pcp_drvdata* drdata; + + + /* create a connection to pcpd */ + if((dta = pmNewContext(PM_CONTEXT_HOST, "localhost")) < 0) + { + msg_drInfo(drName, pmErrStr(dta)); + return 0; + } + + /* resolve doms/descs */ + if(irix_pcp_resDom(PCPNS_NETINBDOM, &pmId[0], &pmD[0]) || + irix_pcp_resDom(PCPNS_NETINPDOM, &pmId[1], &pmD[1]) || + irix_pcp_resDom(PCPNS_NETOUTBDOM, &pmId[2], &pmD[2]) || + irix_pcp_resDom(PCPNS_NETOUTPDOM, &pmId[3], &pmD[3])) + return 0; + + /* fetch the instance list from any of the four domains */ + if((dta = pmGetInDom(pmD->indom, &inst, &desc)) < 0) + { + msg_drInfo(drName, "unable to get instances of " PCPNS_NETINBDOM + ": %s", pmErrStr(dta)); + return 0; + } + + /* traverse the list */ + p = desc; + t = inst; + for(i = 0; i < dta; ++i) + { + if((devname && !strcmp(devname, *p)) || + (!devname && strcmp(*p, "lo0"))) + { + msg_drInfo(drName, "detected %s(%d)", *p, *t); + ndev = (struct Devices*)malloc(sizeof(struct Devices)); + ndev->name = strdup(*p); + drdata = (struct irix_pcp_drvdata*)malloc( + sizeof(struct irix_pcp_drvdata)); + memcpy(drdata->pmId, pmId, sizeof(pmId)); + drdata->inst = *t; + ndev->drvdata = (void*)drdata; + + /* append the new device */ + list->next = ndev; + list = ndev; + ndev->next = NULL; + ++rad; + } + + ++p; + ++t; + } + free(desc); + free(inst); + + return rad; +} + +int +irix_pcp_init(struct Devices* dev) +{ + struct irix_pcp_drvdata* drdata = + (struct irix_pcp_drvdata*)dev->drvdata; + + /* reset the device timestamp, can't know when a device + * goes offline with PCP */ + dev->devstart = 0; + + /* initialize a profile for this device */ + pmDelProfile(PM_INDOM_NULL, 0, NULL); + drdata->ph = pmDupContext(); + pmAddProfile(PM_INDOM_NULL, 1, &drdata->inst); + + return 0; +} + +int +irix_pcp_get(struct Devices* dev, unsigned long* ip, unsigned long* op, + unsigned long* ib, unsigned long* ob) +{ + /* switch to the right context */ + struct irix_pcp_drvdata* drdata = + (struct irix_pcp_drvdata*)dev->drvdata; + pmResult* pmR; + + pmUseContext(drdata->ph); + if(pmFetch(4, drdata->pmId, &pmR)) + return 1; + + *ib = pmR->vset[0]->vlist->value.lval; + *ip = pmR->vset[1]->vlist->value.lval; + *ob = pmR->vset[2]->vlist->value.lval; + *op = pmR->vset[3]->vlist->value.lval; + + pmFreeResult(pmR); + return 0; +} + +void +irix_pcp_term(struct Devices* dev) +{ + /* free the device profile */ + struct irix_pcp_drvdata* drdata = + (struct irix_pcp_drvdata*)dev->drvdata; + + pmDestroyContext(drdata->ph); + free(dev->drvdata); +} + +#endif /* USE_IRIX_PCP */ + + +/* Generic SNMP driver for net-snmp >= 5 */ +#ifdef USE_GENERIC_SNMP +#undef drName +#define drName USE_GENERIC_SNMP + +/* NET-SNMP API headers */ +#include +#include + +/* SNMP MIB Definitions (from IF-MIB) and constants */ +#define SNMPMIB_HOST "localhost" +#define SNMPMIB_COMN "public" +#define SNMPMIB_NUM "ifNumber.0" +#define SNMPMIB_STATUS "ifOperStatus" +#define SNMPMIB_CHANGE "ifLastChange" +#define SNMPMIB_IFINBDEF "ifInOctets" +#define SNMPMIB_IFINPDEF "ifInUcastPkts" +#define SNMPMIB_IFOUTBDEF "ifOutOctets" +#define SNMPMIB_IFOUTPDEF "ifOutUcastPkts" + +struct generic_snmp_drvdata +{ + struct snmp_session* se; + int num; + char* operStatName; + oid oidOperStat[MAX_OID_LEN]; + size_t oidOperStatLen; + char* bInName; + oid oidBIn[MAX_OID_LEN]; + size_t oidBInLen; + char* pInName; + oid oidPIn[MAX_OID_LEN]; + size_t oidPInLen; + char* bOutName; + oid oidBOut[MAX_OID_LEN]; + size_t oidBOutLen; + char* pOutName; + oid oidPOut[MAX_OID_LEN]; + size_t oidPOutLen; +}; + +/* + * Parse a specification string [community@]host[:interface]. + * User is responsible to free community, host and interface if != NULL + * Returns true on parsing errors? + */ +int +generic_snmp_pss(const char* str, char** community, + char** host, int* interface) +{ + char* pos; + size_t len; + + if(!str) + { + *host = strdup(SNMPMIB_HOST); + *community = strdup(SNMPMIB_COMN); + *interface = 0; + + return 0; + } + + /* community specification */ + if((pos = strchr(str, '@'))) + { + len = pos - str; + *community = (char*)malloc(len + 1); + memcpy(*community, str, len); + (*community)[len] = 0; + str = pos + 1; + } + else + *community = strdup(SNMPMIB_COMN); + + /* hostname */ + if(!(pos = strchr(str, ':'))) + pos = (char*)str + strlen(str); + len = pos - str; + *host = (char*)malloc(len + 1); + memcpy(*host, str, len); + (*host)[len] = 0; + + /* interface */ + if(*pos) + *interface = atoi(pos + 1); + else + *interface = 0; + + return 0; +} + +/* Create a new session and connect to an host */ +struct snmp_session* +generic_snmp_session(const char* community, const char* host) +{ + struct snmp_session params; + struct snmp_session* se; + + snmp_sess_init(¶ms); + params.version = SNMP_VERSION_1; + params.peername = strdup(host); + params.community = (u_char*)strdup(community); + params.community_len = strlen(community); + + /* try connecting to host */ + SOCK_STARTUP; + se = snmp_open(¶ms); + if(!se) + { + msg_drInfo(drName, "unable to communicate to %s@%s", community, host); + return NULL; + } + + free(params.peername); + free(params.community); + + return se; +} + +char* +generic_snmp_comp(const char* name, const int num) +{ + char* buf = (char*)malloc(strlen(name) + 5); + sprintf(buf, "%s.%d", name, num); + return buf; +} + +char* +generic_snmp_getNodeDesc(struct snmp_session* se, const char* node, int dev) +{ + struct snmp_pdu* pdu; + struct snmp_pdu* res; + oid OID[MAX_OID_LEN]; + size_t OID_len = MAX_OID_LEN; + char* name = generic_snmp_comp(node, dev); + + pdu = snmp_pdu_create(SNMP_MSG_GET); + get_node(name, OID, &OID_len); + free(name); + snmp_add_null_var(pdu, OID, OID_len); + if(snmp_synch_response(se, pdu, &res) == STAT_SUCCESS && + res->errstat == SNMP_ERR_NOERROR) + { + name = (char*)malloc(res->variables->val_len + 1); + memcpy(name, res->variables->val.string, res->variables->val_len); + name[res->variables->val_len] = 0; + + snmp_free_pdu(res); + } + else + return NULL; + + return name; +} + +char* +generic_snmp_getDesc(struct snmp_session* se, int dev) +{ + char* desc; + + return ((desc = generic_snmp_getNodeDesc(se, "ifName", dev))? desc: + generic_snmp_getNodeDesc(se, "ifDescr", dev)); +} + +struct Devices* +generic_snmp_preInit(struct Devices* list, struct snmp_session* se, int dev) +{ + struct Devices* ndev; + struct generic_snmp_drvdata* drdata; + + ndev = (struct Devices*)malloc(sizeof(struct Devices)); + if(!(ndev->name = generic_snmp_getDesc(se, dev))) + return NULL; + + msg_drInfo(drName, "detected %s(%d)", ndev->name, dev); + drdata =(struct generic_snmp_drvdata*) + malloc(sizeof(struct generic_snmp_drvdata)); + drdata->num = dev; + drdata->se = se; + ndev->drvdata = (void*)drdata; + + return devices_append(list, ndev); +} + +int +generic_snmp_list(const char* devname, struct Devices* list) +{ + char* com; + char* host; + int interf; + struct snmp_session* se; + int rad; + int dta; + struct Devices* ndev; + oid OID[MAX_OID_LEN]; + size_t OIDLen = MAX_OID_LEN; + struct snmp_pdu* pdu; + struct snmp_pdu* res; + + /* initialize the snmp library */ + init_snmp(msg_prgName); + + /* parse the device name */ + generic_snmp_pss(devname, &com, &host, &interf); + se = generic_snmp_session(com, host); + if(!se) + return 0; + + if(interf) + { + /* the inferface is specified, build a struture and return immediately */ + ndev = generic_snmp_preInit(list, se, interf); + if(ndev) + rad = 1; + else + { + msg_drInfo(drName, "unable to resolve %d", interf); + snmp_close(se); + rad = 0; + } + } + else + { + /* query for number of interfaces */ + get_node(SNMPMIB_NUM, OID, &OIDLen); + pdu = snmp_pdu_create(SNMP_MSG_GET); + snmp_add_null_var(pdu, OID, OIDLen); + + if(snmp_synch_response(se, pdu, &res) == STAT_SUCCESS && + res->errstat == SNMP_ERR_NOERROR) + dta = *res->variables->val.integer; + else + { + dta = 0; + msg_drInfo(drName, "unable to determine the number of interfaces"); + } + + /* close the temporary session */ + snmp_close(se); + + /* intialize devices */ + for(rad = 0; rad != dta;) + { + se = generic_snmp_session(com, host); + ndev = generic_snmp_preInit(list, se, rad + 1); + if(!ndev) + { + snmp_close(se); + continue; + } + + list = ndev; + ++rad; + } + } + + if(com) + free(com); + if(host) + free(host); + + return rad; +} + +int +generic_snmp_init(struct Devices* dev) +{ + struct generic_snmp_drvdata* drdata = + (struct generic_snmp_drvdata*)dev->drvdata; + + /* TODO: SNMP 'should' be able to tell the last change through ifLastChange */ + dev->devstart = 0; + + drdata->operStatName = generic_snmp_comp(SNMPMIB_STATUS, drdata->num); + drdata->oidOperStatLen = MAX_OID_LEN; + get_node(drdata->operStatName, drdata->oidOperStat, &drdata->oidOperStatLen); + drdata->bInName = generic_snmp_comp(SNMPMIB_IFINBDEF, drdata->num); + drdata->oidBInLen = MAX_OID_LEN; + get_node(drdata->bInName, drdata->oidBIn, &drdata->oidBInLen); + drdata->pInName = generic_snmp_comp(SNMPMIB_IFINPDEF, drdata->num); + drdata->oidPInLen = MAX_OID_LEN; + get_node(drdata->pInName, drdata->oidPIn, &drdata->oidPInLen); + drdata->bOutName = generic_snmp_comp(SNMPMIB_IFOUTBDEF, drdata->num); + drdata->oidBOutLen = MAX_OID_LEN; + get_node(drdata->bOutName, drdata->oidBOut, &drdata->oidBOutLen); + drdata->pOutName = generic_snmp_comp(SNMPMIB_IFOUTPDEF, drdata->num); + drdata->oidPOutLen = MAX_OID_LEN; + get_node(drdata->pOutName, drdata->oidPOut, &drdata->oidPOutLen); + + return 0; +} + +int +generic_snmp_get(struct Devices* dev, unsigned long* ip, unsigned long* op, + unsigned long* ib, unsigned long* ob) +{ + /* switch to the right context */ + struct generic_snmp_drvdata* drdata = + (struct generic_snmp_drvdata*)dev->drvdata; + + struct snmp_pdu* pdu; + struct snmp_pdu* res; + struct variable_list* var; + int stat; + + pdu = snmp_pdu_create(SNMP_MSG_GET); + snmp_add_null_var(pdu, drdata->oidOperStat, drdata->oidOperStatLen); + snmp_add_null_var(pdu, drdata->oidBIn, drdata->oidBInLen); + snmp_add_null_var(pdu, drdata->oidPIn, drdata->oidPInLen); + snmp_add_null_var(pdu, drdata->oidBOut, drdata->oidBOutLen); + snmp_add_null_var(pdu, drdata->oidPOut, drdata->oidPOutLen); + + if(snmp_synch_response(drdata->se, pdu, &res) == STAT_SUCCESS && + res->errstat == SNMP_ERR_NOERROR) + { + var = res->variables; + stat = (*var->val.integer != 1); + var = var->next_variable; + *ib = *var->val.integer; + var = var->next_variable; + *ip = *var->val.integer; + var = var->next_variable; + *ob = *var->val.integer; + var = var->next_variable; + *op = *var->val.integer; + snmp_free_pdu(res); + } + else + stat = 1; + + return stat; +} + +void +generic_snmp_term(struct Devices* dev) +{ + /* free the device profile */ + struct generic_snmp_drvdata* drdata = + (struct generic_snmp_drvdata*)dev->drvdata; + + snmp_close(drdata->se); + free(drdata->operStatName); + free(drdata->bInName); + free(drdata->pInName); + free(drdata->bOutName); + free(drdata->pOutName); + free(dev->drvdata); +} + +#endif /* USE_GENERIC_SNMP */ + +/* NetBSD ioctl driver */ +#ifdef USE_NETBSD_IOCTL +#undef drName +#define drName USE_NETBSD_IOCTL + +/* system headers */ +#include +#include +#include +#include +#include +#include + +int s; +struct ifdatareq ifdreq; + +/* device listing */ +int +netbsd_ioctl_list(const char *devname, struct Devices *list) +{ + struct Devices *ndev; + struct ifaddrs *ifap, *ifa; + unsigned int ifn; + + if((s = socket(AF_INET, SOCK_DGRAM, 0)) < 0) + { + msg_drInfo(drName, "unable to create socket"); + return 0; + } + + if(getifaddrs(&ifap) != 0) + { + msg_drInfo(drName, "failed to perform getifaddrs"); + return 0; + } + + ifn = 0; + for(ifa = ifap; ifa; ifa = ifa->ifa_next) + { + if(ifa->ifa_addr->sa_family == AF_LINK) + { + if((devname && !strcmp(devname, ifa->ifa_name)) || !devname) + { + ndev = NULL; + ndev = malloc(sizeof(struct Devices)); + if(!ndev) + continue; + ndev->devstart = 0; + ndev->name = strdup(ifa->ifa_name); + ndev->next = NULL; + list->next = ndev; + list = ndev; + + msg_drInfo(drName, "detected %s", ndev->name); + ifn++; + } + } + } + freeifaddrs(ifap); + + return ifn; +} + +/* gather stats */ +int +netbsd_ioctl_get(struct Devices *dev, unsigned long *ip, + unsigned long *op, unsigned long *ib, unsigned long *ob) +{ + strncpy(ifdreq.ifdr_name, dev->name, IFNAMSIZ - 1); + if(ioctl(s, SIOCGIFDATA, &ifdreq) < 0) + return 1; + + *ip = ifdreq.ifdr_data.ifi_ipackets; + *ib = ifdreq.ifdr_data.ifi_ibytes; + *op = ifdreq.ifdr_data.ifi_opackets; + *ob = ifdreq.ifdr_data.ifi_obytes; + + return 0; +} + +void +netbsd_ioctl_unlist() +{ + close(s); +} + +#endif /* USE_NETBSD_IOCTL */ + +/* define the drivers list */ +struct drivers_struct drivers_table[] = +{ +#ifdef USE_FREEBSD_SYSCTL + {USE_FREEBSD_SYSCTL, freebsd_sysctl_list, NULL, + freebsd_sysctl_get, freebsd_sysctl_term, NULL}, +#endif +#ifdef USE_NETBSD_IOCTL + {USE_NETBSD_IOCTL, netbsd_ioctl_list, NULL, + netbsd_ioctl_get, NULL, netbsd_ioctl_unlist}, +#endif +#ifdef USE_LINUX_PROC + {USE_LINUX_PROC, linux_proc_list, NULL, + linux_proc_get, NULL, NULL}, +#endif +#ifdef USE_SOLARIS_FPPPD + {USE_SOLARIS_FPPPD, solaris_fpppd_list, solaris_fpppd_init, + solaris_fpppd_get, solaris_fpppd_term, NULL}, +#endif +#ifdef USE_SOLARIS_KSTAT + {USE_SOLARIS_KSTAT, solaris_kstat_list, solaris_kstat_init, + solaris_kstat_get, solaris_kstat_term, NULL}, +#endif +#ifdef USE_IRIX_PCP + {USE_IRIX_PCP, irix_pcp_list, irix_pcp_init, + irix_pcp_get, irix_pcp_term, NULL}, +#endif +#ifdef USE_GENERIC_SNMP + {USE_GENERIC_SNMP, generic_snmp_list, generic_snmp_init, + generic_snmp_get, generic_snmp_term, NULL}, +#endif +#ifdef USE_TESTING_DUMMY + {USE_TESTING_DUMMY, testing_dummy_list, testing_dummy_init, + testing_dummy_get, NULL, NULL}, +#endif + {NULL, NULL, NULL, NULL, NULL, NULL} +}; diff --git a/dockapps/wmnd/src/drivers.h b/dockapps/wmnd/src/drivers.h new file mode 100644 index 0000000..b112997 --- /dev/null +++ b/dockapps/wmnd/src/drivers.h @@ -0,0 +1,58 @@ +/* + * drivers: drivers definitions + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +#ifndef DRIVERS_H +#define DRIVERS_H + +#include "config.h" +#include "wmnd.h" + +/* + * Note to driver implementors: + * + * - p_list_devs is called first to list all the *supported* interfaces. + * Loopback/testing interfaces must be skipped unless specified. + * If a device name is specified, only this device must be listed. + * The driver "should" support comma-separated list of interfaces as the + * "devname" argument, but this is subject to change. + * The number of allocated interfaces is returned. + * + * - p_init_dev is called for each allocated interface. + * + * - p_updt_stats is polled to gather interface statistics. + * The function must return the interface status. + * + * - p_term_dev is called during shutdown for each interface. + * + * - p_term_drv is called during shutdown once. + */ + +typedef int (*p_list_devs) (const char* devname, struct Devices* list); +typedef int (*p_init_dev) (struct Devices* dev); +typedef int (*p_updt_stats) (struct Devices* dev, unsigned long* ip, + unsigned long* op, unsigned long* ib, unsigned long* ob); +typedef void (*p_term_dev) (struct Devices* dev); +typedef void (*p_term_drv) (); + +/* drivers structure list */ +struct drivers_struct +{ + /* base params */ + char* driver_name; + p_list_devs list_devices; + p_init_dev init_device; + p_updt_stats get_stats; + p_term_dev terminate_device; + p_term_drv terminate_driver; + + /* extra data */ + int status; +}; + +/* external definition */ +extern struct drivers_struct drivers_table[]; + +#endif diff --git a/dockapps/wmnd/src/list.h b/dockapps/wmnd/src/list.h new file mode 100644 index 0000000..eadaf53 --- /dev/null +++ b/dockapps/wmnd/src/list.h @@ -0,0 +1,109 @@ +/* + * Generic single linked list to keep various information Copyright (C) + * 1993, 1994 Free Software Foundation, Inc. + * + * Author: Kresten Krab Thorup + * + * This file is part of GNU CC. + * + * GNU CC is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation; either version 2, or (at your option) any later + * version. + * + * GNU CC is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * for more details. + * + * You should have received a copy of the GNU General Public License along + * with GNU CC; see the file COPYING. If not, write to the Free Software + * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + */ + +/* + * As a special exception, if you link this library with files compiled + * with GCC to produce an executable, this does not cause the resulting + * executable to be covered by the GNU General Public License. This + * exception does not however invalidate any other reasons why the + * executable file might be covered by the GNU General Public License. + */ + +#ifndef __LIST_H_ +#define __LIST_H_ + +#include "config.h" +#include +#include + + +typedef struct LinkedList { + void *head; + struct LinkedList *tail; +} LinkedList; + + +/* + * Return a cons cell produced from (head . tail) + */ + +static inline LinkedList* +list_cons(void* head, LinkedList* tail) +{ + LinkedList *cell; + + cell = (LinkedList *) malloc(sizeof(LinkedList)); + cell->head = head; + cell->tail = tail; + return cell; +} + +/* + * Return the length of a list, list_length(NULL) returns zero + */ + +static inline int +list_length(LinkedList* list) +{ + int i = 0; + while (list) { + i += 1; + list = list->tail; + } + return i; +} + +/* + * Remove the element at the head by replacing it by its successor + */ + +static inline void +list_remove_head(LinkedList** list) +{ + if (!*list) + return; + if ((*list)->tail) { + LinkedList *tail = (*list)->tail; /* fetch next */ + *(*list) = *tail; /* copy next to list head */ + free(tail); /* free next */ + } else { /* only one element in list */ + + free(*list); + (*list) = 0; + } +} + +/* + * Free list (backwards recursive) + */ + +static inline void +list_free(LinkedList* list) +{ + if (list) { + list_free(list->tail); + free(list); + } +} + +#endif diff --git a/dockapps/wmnd/src/master.xpm b/dockapps/wmnd/src/master.xpm new file mode 100644 index 0000000..e1062bb --- /dev/null +++ b/dockapps/wmnd/src/master.xpm @@ -0,0 +1,136 @@ +/* XPM */ +static char * master_xpm[] = { +"200 100 32 1", +" c None", +". c #202020", +"+ c #00FFFF s tx_color", +"@ c #1C8C8C s rx_color", +"# c #004941", +"$ c #72E572 s md_color", +"% c #000000", +"& c #333133", +"* c #666366", +"= c #999599", +"- c #202626", +"; c #20ABA7", +"> c #20B2AE", +", c #22332F", +"' c #283C38", +") c #C7C3C7", +"! c #188A86", +"~ c #208784", +"{ c #205251", +"] c #20807E", +"^ c #B60418", +"/ c #FF0724", +"( c #FFDD00", +"_ c #B59900", +": c #D8BB00", +"< c #00FFF2", +"[ c #009900", +"} c #00EB00", +"| c #00AD00", +"1 c #F7F3FF", +"2 c #1E1E27", +"3 c #1F1F22", +" .+@# $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ .......................................................... ", +" .+@# ########################################################## .......................................................... ", +" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&* .+@# .......................................................... ", +" %..........................................................= .+@# .......................................................... .............-;....................................>>>>>.. ", +" %.,###,.,###,.,###,.,###,..,###,.,###,.'''''....'....,''',.) .+@# ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ..............%........................................... ", +" %.#...#.#...#.#...#.#...#..#...#.#...#..'''....'''...'...'.) .+@# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .....................................................!!!.. ", +" %.#...#.#...#.#...#.#...#..#...#.#...#..'''....'''...'...'.) .+@# ########################################################## .............~{........................................... ", +" %.,###,.,###,.,###,.,###,..,###,.,###,...'....'''''..,''',.) .+@# ......................................................##.. ", +" %.#...#.#...#.#...#.#...#..#...#.#...#...............'...'.) .+@# .########################################################. ............]............................................. ", +" %.#...#.#...#.#...#.#...#..#...#.#...#.,',',..,',',..'...'.) .+@# .#,,,,,,,,,,,,,,,,,,,,,,,,,,,,,#,,##,,##,###!##!!##!!#!!#. ............{........................................!!!.. ", +" %.,###,.,###,.,###,.,###,..,###,.,###,.'.'.'..'.'.'..,''',.) .+@# .#,,,,,,,,,,,,,,,,,,,,,,,,,,,,#,,##,,##,###!##!!##!!#!!!#. .......................................................... ", +" %..........................................................) .+@# .#,,,,,,,,,,,,,,,,,,,,,,,,,,,#,,##,,##,###!##!!##!!#!!!!#. ...........>..........................................##.. ", +" %##########################################################) .+@# .#,,,,,,,,,,,,,,,,,,,,,,,,,,#,,##,,##,###!##!!##!!#!!!!!#. ........]{................................................ ", +" %..........................................................) .+@# .#,,,,,,,,,,,,,,,,,,,,,,,,,#,,##,,##,###!##!!##!!#!!!!!!#. ...-..~..............................................!!!.. ", +" %..........................................................) .+@# .#,,,,,,,,,,,,,,,,,,,,,,,,#,,##,,##,###!##!!##!!#!!!!!!!#. ...;..{................................................... ", +" %..........................................................) .+@# .########################################################. ......................................................##.. ", +" %..........................................................) .+@# .......................................................... ", +" %..........................................................) .+@# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/////////////////((((( ....................................................>>>>.. ", +" %##########################################################) .+@# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/////////////////(((((( .......................................................... ", +" %..........................................................) .+@# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/////////////////((((((( ...;..{...............................................##.. ", +" %..........................................................) .+@# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^/////////////////(((((((( ...-..~................................................... ", +" %..........................................................) .+@# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^/////////////////((((((((( ........]{...........................................!!!.. ", +" %..........................................................) .+@# ^^^^^^^^^^^^^^^^^^^^^^^^^^^/////////////////(((((((((( ...........>.............................................. ", +" %..........................................................) .+@# ......................................................##.. ", +" %..........................................................) .+@# ............{............................................. ", +" %..........................................................) .+@# ............]........................................!!!.. ", +" %..........................................................) .+@# .......................................................... ", +" %..........................................................) .+@# .............~{.......................................##.. ", +" %..........................................................) .+@# .......................................................... ", +" %..........................................................) .+@# ..............%......................................!!!.. ", +" %..........................................................) .+@# .............-;........................................... ", +" %..........................................................) .+@# ....................................................>>>>.. ", +" %..........................................................) .+@# .......................................................... ", +" %..........................................................) .+@# .......................................................... ", +" %..........................................................) .+@# ", +" %..........................................................) .+@# ", +" %..........................................................) .+@# ........................ ", +" %..........................................................) .+@# ........................ ", +" %..........................................................) .+@# ........................ ", +" %..........................................................) .+@# ........................ ", +" %..........................................................) .+@# ........................ ", +" %..........................................................) .+@# ........................ ", +" %..........................................................) .+@# ........................ ", +" %..........................................................) .+@# ........................ ", +" %..........................................................) .+@# ", +" %..........................................................) .+@# ", +" %..........................................................) ......................................................................... ", +" %..........................................................) ._:::_.!>>>!..._.....!..._:::_.!>>>!..._.....!..._:::_.!>>>!..._.....!... ", +" %..........................................................) ...(.....<.....:.....>.....(.....<.....:.....>..._.(...!.<.....:.....>... ", +" %..........................................................) ...(.....<.....(.....<....:(:...><>...:(:...><>.._.(...!.<..._.(...!.<... ", +" %..........................................................) ...:.....>.....(.....<.....:.....>.....(.....<.....:.....>..._.(...!.<... ", +" %..........................................................) ..._.....!..._:::_.!>>>!..._.....!..._:::_.!>>>!..._.....!..._:::_.!>>>!. ", +" %..........................................................) ......................................................................... ", +" %##########################################################) ", +" %..........................................................) .......................................................... _(_(_ _((_ ", +" %..........................................................) .,###,.,###,.,###,.,###,..,###,.,###,.'''''....'....,''',. (.(.( (..( ", +" %..........................................................) .#...#.#...#.#...#.#...#..#...#.#...#..'''....'''...'...'. ", +" %..........................................................) .#...#.#...#.#...#.#...#..#...#.#...#..'''....'''...'...'. ", +" %..........................................................) .,###,.,###,.,###,.,###,..,###,.,###,...'....'''''..,''',. ", +" %..........................................................) .#...#.#...#.#...#.#...#..#...#.#...#...............'...'. _(_(_ _((_ ", +" &..........................................................) .#...#.#...#.#...#.#...#..#...#.#...#.,',',..,',',..'...'. (.(.( (..( ", +" *=)))))))))))))))))))))))))))))))))))))))))))))))))))))))))) .,###,.,###,.,###,.,###,..,###,.,###,.'.'.'..'.'.'..,''',. ", +" .......................................................... ", +" ", +" ", +"............................................................................... ..^.. ..[.. ..'.. .//. .}}. .''. |}}}, ^///, |}}}| ^///^ ,''', ", +"..>>>...###!.!>>>!.!>>>!.!###!.!>>>!.!>>>!.!>>>!.!>>>!.!>>>!................... .^/^. .[}[. .,',. /1// }1}} '''' }...} /.../ }...} /.../ '...' ", +".>...>.#...>.#...>.#...>.>...>.>...#.>...#.#...>.>...>.>...>............>...... .///. .}}}. .'''. //// }}}} '''' }...} /.../ }...} /.../ '...' ", +".>...>.#...>.#...>.#...>.>...>.>...#.>...#.#...>.>...>.>...>.......>....>...... ^///^ [}}}[ ,''', .//. .}}. .''. |}}}' ^///' |}}}| ^///^ ,''', ", +".!###!..###!.!>>>!..>>>!.!>>>!.!>>>!.!>>>!..###!.!>>>!.!>>>!..!>...!...>....... }...} /.../ }...' /...' '...' ", +".>...>.#...>.>...#.#...>.#...>.#...>.>...>.#...>.>...>.#...>...........>....... ^///^ [}}}[ ,''', ^//^ |}}| ,'', }...} /.../ }...' /...' '...' ", +".>...>.#...>.>...#.#...>.#...>.#...>.>...>.#...>.>...>.#...>.......>..>........ .///. .}}}. .'''. //// }}}} '''' |}}}, ^///, |'''. ^'''. ,''', ", +"..>>>...###!.!>>>!.!>>>!..###!.!>>>!.!>>>!..###!.!>>>!.!>>>!.......!..>........ .^/^. .[}[. .,',. //// }}}} '''' ", +"............................................................................... ..^.. ..[.. ..'.. ^//^ |}}| ,'', ", +" ", +"................................................................................................................................................................ ", +".#>>>#.!>>>...>>>!.!>>>..!>>>!.!>>>!.!>>>!.!###!..###!..###!.!###!.!###..>###>.!>>>..!>>>!.!>>>!.!>>>!.!>>>!.!>>>!.!>>>!.!###!.!###!.!###!.!###!.!###!.!>>>!.... ", +".>...>.>...>.>...#.>...>.>...#.>...#.>...#.>...>.#...>.#...>.>...>.>...#.>>.>>.>...>.>...>.>...>.>...>.>...>.>...#.#.>.#.>...>.>...>.>...>.>...>.>...>.#...>.... ", +".>...>.>...>.>...#.>...>.>...#.>...#.>...#.>...>.#...>.#...>.>...>.>...#.>.>.>.>...>.>...>.>...>.>...>.>...>.>...#.#.>.#.>...>.>...>.>...>..>.>..>...>.#..>#.... ", +".!>>>!.!>>>..!###..!###!.!>>>..!>>>..!#!>!.!>>>!..###!..###!.!>>>..!###..!###!.!###!.!###!.!>>>!.!>##!.!>>>..!>>>!..#!#..!###!.!###!.!###!...>...!>>>!..#>#..... ", +".>...>.>...>.>...#.>...>.>...#.>...#.>...>.>...>.#...>.#...>.>...>.>...#.>...>.>...>.>...>.>...#.>.>.>.>...>.#...>.#.>.#.>...>.>...>.>.>.>..>.>..#...>.#>..#.... ", +".>...>.>...>.>...#.>...>.>...#.>...#.>...>.>...>.#...>.#...>.>...>.>...#.>...>.>...>.>...>.>...#.>..>>.>...>.#...>.#.>.#.>...>.>...>.>>.>>.>...>.#...>.>...#.... ", +".!###!.!>>>...>>>!.!>>>..!>>>!.!###..!>>>!.!###!..###!.!>>>!.!###!.!>>>!.!###!.!###!.!>>>!.!###..!>>>!.!###!.!>>>!..#!#..!>>>>..>>>..!###!.!###!.!>>>!.!>>>!.... ", +"................................................................................................................................................................ ", +" ", +" ", +"................................................................... .......................................................... ", +"..>>...##!.!>>!.!>>!.!##!.!>>!.!>>!.!>>!.!>>!.!>>!................. .......................................................... ", +".>..>.#..>.#..>.#..>.>..>.>..#.>..#.#..>.>..>.>..>..........>...!>. .......................................................... ", +".!##!..##!.!>>!..>>!.!>>!.!>>!.!>>!..##!.!>>!.!>>!..!>..>..>....23. .......................................................... ", +".>..>.#..>.>..#.#..>.#..>.#..>.>..>.#..>.>..>.#..>.........>....!>. .......................................................... ", +"..>>...##!.!>>!.!>>!..##!.!>>!.!>>!..##!.!>>!.!>>!......>.>...<.... .......................................................... ", +"................................................................... .......................................................... ", +" ", +"................................................................................................................................... ......................... ", +".#>>#.!>>...>>!.!>>..!>>!.!>>!.!>>!.!##!..##!..##!.!##!.!##..>##>.!>>..!>>!.!>>!.!>>!.!>>!.!>>!.!>>!.!##!.!##!.!##!.!##!.!##!.!>>!. ._:::_.!>>>!..._.....!... ", +".>..>.>..>.>..#.>..>.>..#.>..#.>..#.>..>.#..>.#..>.>.>..>..#.>>>>.>..>.>..>.>..>.>..>.>..>.>..#.#.>#.>..>.>..>.>..>.>..>.>..>.#..>. ..:(:...><>....:.....>... ", +".!>>!.!>>..!##..!##!.!>>..!>>..!#!!.!>>!..##!..##!.!>...!##..!##!.!##!.!##!.!>>!.!>#!.!>>..!>>!..#!..!##!.!##!.!##!..>>..!>>!..#>.. .._(_...!..>.>..>.>..#.>..>.>..#.>..#.>..>.>..>.#..>.#..>.>.>..>..#.>..>.>..>.>..>.>..#.>.>>.>..>.#..>.#.>#.>..>.>..>.>..>.>..>.#..>.#>.#. ...:.....>....:(:...><>.. ", +".!##!.!>>...>>!.!>>..!>>!.!##..!>>!.!##!..##!.!>>!.!##!.!>>!.!##!.!##!.!>>!.!##..!>>>.!##!.!>>!..#!..!>>>..>>..!##!.!##!.!>>!.!>>!. ..._.....!..._:::_.!>>>!. ", +"...................................................................................>............................................... ......................... "}; diff --git a/dockapps/wmnd/src/messages.c b/dockapps/wmnd/src/messages.c new file mode 100644 index 0000000..a0d8369 --- /dev/null +++ b/dockapps/wmnd/src/messages.c @@ -0,0 +1,63 @@ +/* + * messages: generalized information reporting - implementation + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +/* local headers */ +#include + +/* externs definitions */ +char* msg_prgName = NULL; +char msg_messages = MSG_FALL; + +void +msg_info(const char* fmt, ...) +{ + if(msg_messages & MSG_FINFO) + { + va_list params; + + printf("%s: ", msg_prgName); + + va_start(params, fmt); + vprintf(fmt, params); + va_end(params); + + printf("\n"); + } +} + +void +msg_err(const char* fmt, ...) +{ + if(msg_messages & MSG_FERR) + { + va_list params; + + fprintf(stderr, "%s: ", msg_prgName); + + va_start(params, fmt); + vfprintf(stderr, fmt, params); + va_end(params); + + fprintf(stderr, "\n"); + } +} + +void +msg_drInfo(const char* driver, const char* fmt, ...) +{ + if(msg_messages & MSG_FDRINFO) + { + va_list params; + + fprintf(stderr, "%s [%s]: ", msg_prgName, driver); + + va_start(params, fmt); + vfprintf(stderr, fmt, params); + va_end(params); + + fprintf(stderr, "\n"); + } +} diff --git a/dockapps/wmnd/src/messages.h b/dockapps/wmnd/src/messages.h new file mode 100644 index 0000000..1cb1cf9 --- /dev/null +++ b/dockapps/wmnd/src/messages.h @@ -0,0 +1,75 @@ +/* + * messages: generalized information reporting + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +#ifndef MESSAGES_H +#define MESSAGES_H + +/* local headers */ +#include "config.h" + +/* system headers */ +#include +#include + +/* + * usually I hate using globals, but in that case it would + * bloat all over the code without some namespace + * + * set this to the program name (argv[0]) when program starts + */ +extern char* msg_prgName; + +/* + * msg_messages is a bitfield of messages to show + */ +#define MSG_FINFO 0x01 +#define MSG_FERR 0x02 +#define MSG_FDRINFO 0x04 +#define MSG_FALL 0x0F +#define MSG_FDBG 0x10 + +extern char msg_messages; + +/* general info, written as argv[0]: ...\n on stdout */ +void +msg_info(const char* fmt, ...); + +/* general errors, written as argv[0]: ...\n on stderr */ +void +msg_err(const char* fmt, ...); + +/* general driver message, written as argv[0] [driver]: ...\n on stderr */ +void +msg_drInfo(const char* driver, const char* fmt, ...); + +/* general debug trace */ +static inline void +msg_dbg(const char* file, const int line, const char* fmt, ...) +{ +#ifndef NDEBUG + if(msg_messages & MSG_FDBG) + { + va_list params; + + fprintf(stderr, "%s[%s:%d]: ", msg_prgName, file, line); + + va_start(params, fmt); + vfprintf(stderr, fmt, params); + va_end(params); + + fprintf(stderr, "\n"); + } +#endif +} + +/* + * msg_dbg requires the filename and the current line. We can use a macro + * to shorten the command lenght a bit (msg_dbg(__POSITION__, ...) + */ +#undef __POSITION__ +#define __POSITION__ __FILE__, __LINE__ + +#endif diff --git a/dockapps/wmnd/src/misc.c b/dockapps/wmnd/src/misc.c new file mode 100644 index 0000000..dad9bd4 --- /dev/null +++ b/dockapps/wmnd/src/misc.c @@ -0,0 +1,218 @@ +/* + * misc: miscellaneus dockapp routines - implementation + * Copyright(c) 1997 by Alfredo K. Kojima + * Copyright(c) 2004 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +#include "config.h" +#include "misc.h" +#include "list.h" + +#include +#include +#include + + +/* + *---------------------------------------------------------------------- + * parse_command-- + * Divides a command line into a argv/argc pair. + *---------------------------------------------------------------------- + */ +#define PRC_ALPHA 0 +#define PRC_BLANK 1 +#define PRC_ESCAPE 2 +#define PRC_DQUOTE 3 +#define PRC_EOS 4 +#define PRC_SQUOTE 5 + + +typedef struct +{ + short nstate; + short output; +} DFA; + + +static DFA mtable[9][6] = +{ + {{ 3, 1}, { 0, 0}, { 4, 0}, { 1, 0}, { 8, 0}, { 6, 0}}, + {{ 1, 1}, { 1, 1}, { 2, 0}, { 3, 0}, { 5, 0}, { 1, 1}}, + {{ 1, 1}, { 1, 1}, { 1, 1}, { 1, 1}, { 5, 0}, { 1, 1}}, + {{ 3, 1}, { 5, 0}, { 4, 0}, { 1, 0}, { 5, 0}, { 6, 0}}, + {{ 3, 1}, { 3, 1}, { 3, 1}, { 3, 1}, { 5, 0}, { 3, 1}}, + {{-1, -1}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}}, + {{ 6, 1}, { 6, 1}, { 7, 0}, { 6, 1}, { 5, 0}, { 3, 0}}, + {{ 6, 1}, { 6, 1}, { 6, 1}, { 6, 1}, { 5, 0}, { 6, 1}}, + {{-1, -1}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}, { 0, 0}} +}; + + +char* +next_token(const char *word, const char** next) +{ + const char* ptr; + char* ret; + char* t; + int state, ctype; + + t = ret = (char*)malloc(strlen(word) + 1); + ptr = word; + + state = 0; + *t = 0; + for(;;) + { + if(*ptr == 0) + ctype = PRC_EOS; + else if(*ptr == '\\') + ctype = PRC_ESCAPE; + else if(*ptr == '"') + ctype = PRC_DQUOTE; + else if(*ptr == '\'') + ctype = PRC_SQUOTE; + else if(*ptr == ' ' || *ptr == '\t') + ctype = PRC_BLANK; + else + ctype = PRC_ALPHA; + + if(mtable[state][ctype].output) + { + *t = *ptr; + t++; + *t = 0; + } + state = mtable[state][ctype].nstate; + ptr++; + if(mtable[state][0].output < 0) + break; + } + + if(*ret == 0) + t = NULL; + else + t = strdup(ret); + free(ret); + + if(ctype == PRC_EOS) + *next = NULL; + else + *next = ptr; + + return t; +} + + +void +parse_command(const char* command, char*** argv, int* argc) +{ + LinkedList* list = NULL; + char* token; + const char* line; + int count, i; + + line = command; + do + { + token = next_token(line, &line); + if(token) + list = list_cons(token, list); + } + while(token && line); + + count = list_length(list); + *argv = (char**)malloc(sizeof(char*) * count); + i = count; + + while(list) + { + (*argv)[--i] = (char*)list->head; + list_remove_head(&list); + } + *argc = count; +} + + +pid_t +exec_command(const char* command) +{ + pid_t pid; + char** argv; + int argc; + + parse_command(command, &argv, &argc); + if(!argv) + return 0; + + if((pid = fork()) == 0) + { + char** args; + int i; + + args = (char**)malloc(sizeof(char*) * (argc + 1)); + if(!args) + exit(10); + for(i = 0; i < argc; i++) + args[i] = argv[i]; + args[argc] = NULL; + execvp(argv[0], args); + exit(10); + } + return pid; +} + + +char* +percsubst(const char* string, const perctbl_t* table, int elements) +{ + size_t inlen = strlen(string); + size_t outlen = inlen * 2; + char* buf = (char*)malloc(outlen); + const char* rptr; + char* wptr; + const perctbl_t* it; + size_t len; + size_t dist; + + for(wptr = buf, rptr = string; *rptr;) + { + /* normal characters */ + if(*rptr != '%') + { + *(wptr++) = *(rptr++); + continue; + } + + /* peek the next one */ + if(*(++rptr) == '%') + { + *(wptr++) = *(rptr++); + continue; + } + + /* search for an element in the table */ + for(it = table; it != table + elements; ++it) + if(*rptr == it->c) + { + len = strlen(it->value); + dist = wptr - buf; + if((outlen - dist) >= len) + { + outlen += len * 2; + buf = (char*)realloc(buf, outlen); + wptr = buf + dist; + } + + memcpy(wptr, it->value, len); + wptr += len; + break; + } + + /* go on */ + ++rptr; + } + *wptr = 0; + + return buf; +} diff --git a/dockapps/wmnd/src/misc.h b/dockapps/wmnd/src/misc.h new file mode 100644 index 0000000..5af9695 --- /dev/null +++ b/dockapps/wmnd/src/misc.h @@ -0,0 +1,32 @@ +/* + * misc: miscellaneus dockapp routines + * Copyright(c) 1997 by Alfredo K. Kojima + * Copyright(c) 2004 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +#ifndef MISC_H +#define MISC_H + +#include + + +/* Tokenize a shell command */ +void +parse_command(const char*, char***, int*); + +/* Exec a command */ +pid_t +exec_command(const char*); + +/* %-style substitution on a string */ +typedef struct +{ + char c; + const char* value; +} perctbl_t; + +char* +percsubst(const char* string, const perctbl_t* table, int elements); + +#endif diff --git a/dockapps/wmnd/src/ppp_defs.h b/dockapps/wmnd/src/ppp_defs.h new file mode 100644 index 0000000..c893004 --- /dev/null +++ b/dockapps/wmnd/src/ppp_defs.h @@ -0,0 +1,195 @@ +/* + * ppp_defs.h - PPP definitions. + * + * Copyright (c) 1994 The Australian National University. + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation is hereby granted, provided that the above copyright + * notice appears in all copies. This software is provided without any + * warranty, express or implied. The Australian National University + * makes no representations about the suitability of this software for + * any purpose. + * + * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY + * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF + * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO + * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, + * OR MODIFICATIONS. + */ + +/* + * ==FILEVERSION 20000114== + * + * NOTE TO MAINTAINERS: + * If you modify this file at all, please set the above date. + * ppp_defs.h is shipped with a PPP distribution as well as with the kernel; + * if everyone increases the FILEVERSION number above, then scripts + * can do the right thing when deciding whether to install a new ppp_defs.h + * file. Don't change the format of that line otherwise, so the + * installation script can recognize it. + */ + +#ifndef _PPP_DEFS_H_ +#define _PPP_DEFS_H_ + +/* + * Define __u8/__u32 if not already defined + */ +#ifndef __u8 +#define __u8 unsigned char +#endif + +#ifndef __u32 +#define __u32 unsigned int +#endif + + +/* + * The basic PPP frame. + */ +#define PPP_HDRLEN 4 /* octets for standard ppp header */ +#define PPP_FCSLEN 2 /* octets for FCS */ +#define PPP_MRU 1500 /* default MRU = max length of info field */ + +#define PPP_ADDRESS(p) (((__u8 *)(p))[0]) +#define PPP_CONTROL(p) (((__u8 *)(p))[1]) +#define PPP_PROTOCOL(p) ((((__u8 *)(p))[2] << 8) + ((__u8 *)(p))[3]) + +/* + * Significant octet values. + */ +#define PPP_ALLSTATIONS 0xff /* All-Stations broadcast address */ +#define PPP_UI 0x03 /* Unnumbered Information */ +#define PPP_FLAG 0x7e /* Flag Sequence */ +#define PPP_ESCAPE 0x7d /* Asynchronous Control Escape */ +#define PPP_TRANS 0x20 /* Asynchronous transparency modifier */ + +/* + * Protocol field values. + */ +#define PPP_IP 0x21 /* Internet Protocol */ +#define PPP_AT 0x29 /* AppleTalk Protocol */ +#define PPP_IPX 0x2b /* IPX protocol */ +#define PPP_VJC_COMP 0x2d /* VJ compressed TCP */ +#define PPP_VJC_UNCOMP 0x2f /* VJ uncompressed TCP */ +#define PPP_MP 0x3d /* Multilink protocol */ +#define PPP_IPV6 0x57 /* Internet Protocol Version 6 */ +#define PPP_COMPFRAG 0xfb /* fragment compressed below bundle */ +#define PPP_COMP 0xfd /* compressed packet */ +#define PPP_IPCP 0x8021 /* IP Control Protocol */ +#define PPP_ATCP 0x8029 /* AppleTalk Control Protocol */ +#define PPP_IPXCP 0x802b /* IPX Control Protocol */ +#define PPP_IPV6CP 0x8057 /* IPv6 Control Protocol */ +#define PPP_CCPFRAG 0x80fb /* CCP at link level (below MP bundle) */ +#define PPP_CCP 0x80fd /* Compression Control Protocol */ +#define PPP_LCP 0xc021 /* Link Control Protocol */ +#define PPP_PAP 0xc023 /* Password Authentication Protocol */ +#define PPP_LQR 0xc025 /* Link Quality Report protocol */ +#define PPP_CHAP 0xc223 /* Cryptographic Handshake Auth. Protocol */ +#define PPP_CBCP 0xc029 /* Callback Control Protocol */ + +/* + * Values for FCS calculations. + */ + +#define PPP_INITFCS 0xffff /* Initial FCS value */ +#define PPP_GOODFCS 0xf0b8 /* Good final FCS value */ +#define PPP_FCS(fcs, c) (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff]) + +/* + * Extended asyncmap - allows any character to be escaped. + */ + +typedef __u32 ext_accm[8]; + +/* + * What to do with network protocol (NP) packets. + */ +enum NPmode { + NPMODE_PASS, /* pass the packet through */ + NPMODE_DROP, /* silently drop the packet */ + NPMODE_ERROR, /* return an error */ + NPMODE_QUEUE /* save it up for later. */ +}; + +/* + * Statistics for LQRP and pppstats + */ +struct pppstat { + __u32 ppp_discards; /* # frames discarded */ + + __u32 ppp_ibytes; /* bytes received */ + __u32 ppp_ioctects; /* bytes received not in error */ + __u32 ppp_ipackets; /* packets received */ + __u32 ppp_ierrors; /* receive errors */ + __u32 ppp_ilqrs; /* # LQR frames received */ + + __u32 ppp_obytes; /* raw bytes sent */ + __u32 ppp_ooctects; /* frame bytes sent */ + __u32 ppp_opackets; /* packets sent */ + __u32 ppp_oerrors; /* transmit errors */ + __u32 ppp_olqrs; /* # LQR frames sent */ +}; + +struct vjstat { + __u32 vjs_packets; /* outbound packets */ + __u32 vjs_compressed; /* outbound compressed packets */ + __u32 vjs_searches; /* searches for connection state */ + __u32 vjs_misses; /* times couldn't find conn. state */ + __u32 vjs_uncompressedin; /* inbound uncompressed packets */ + __u32 vjs_compressedin; /* inbound compressed packets */ + __u32 vjs_errorin; /* inbound unknown type packets */ + __u32 vjs_tossed; /* inbound packets tossed because of error */ +}; + +struct compstat { + __u32 unc_bytes; /* total uncompressed bytes */ + __u32 unc_packets; /* total uncompressed packets */ + __u32 comp_bytes; /* compressed bytes */ + __u32 comp_packets; /* compressed packets */ + __u32 inc_bytes; /* incompressible bytes */ + __u32 inc_packets; /* incompressible packets */ + + /* the compression ratio is defined as in_count / bytes_out */ + __u32 in_count; /* Bytes received */ + __u32 bytes_out; /* Bytes transmitted */ + + double ratio; /* not computed in kernel. */ +}; + +struct ppp_stats { + struct pppstat p; /* basic PPP statistics */ + struct vjstat vj; /* VJ header compression statistics */ +}; + +struct ppp_comp_stats { + struct compstat c; /* packet compression statistics */ + struct compstat d; /* packet decompression statistics */ +}; + +/* + * The following structure records the time in seconds since + * the last NP packet was sent or received. + */ +struct ppp_idle { + time_t xmit_idle; /* time since last NP packet sent */ + time_t recv_idle; /* time since last NP packet received */ +}; + +#ifndef __P +#ifdef __STDC__ +#define __P(x) x +#else +#define __P(x) () +#endif +#endif + +#endif /* _PPP_DEFS_H_ */ diff --git a/dockapps/wmnd/src/pppio.h b/dockapps/wmnd/src/pppio.h new file mode 100644 index 0000000..97c6a34 --- /dev/null +++ b/dockapps/wmnd/src/pppio.h @@ -0,0 +1,97 @@ +/* + * pppio.h - ioctl and other misc. definitions for STREAMS modules. + * + * Copyright (c) 1994 The Australian National University. + * All rights reserved. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation is hereby granted, provided that the above copyright + * notice appears in all copies. This software is provided without any + * warranty, express or implied. The Australian National University + * makes no representations about the suitability of this software for + * any purpose. + * + * IN NO EVENT SHALL THE AUSTRALIAN NATIONAL UNIVERSITY BE LIABLE TO ANY + * PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES + * ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF + * THE AUSTRALIAN NATIONAL UNIVERSITY HAVE BEEN ADVISED OF THE POSSIBILITY + * OF SUCH DAMAGE. + * + * THE AUSTRALIAN NATIONAL UNIVERSITY SPECIFICALLY DISCLAIMS ANY WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS + * ON AN "AS IS" BASIS, AND THE AUSTRALIAN NATIONAL UNIVERSITY HAS NO + * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, + * OR MODIFICATIONS. + */ + +#define _PPPIO(n) (('p' << 8) + (n)) + +#define PPPIO_NEWPPA _PPPIO(130) /* allocate a new PPP unit */ +#define PPPIO_GETSTAT _PPPIO(131) /* get PPP statistics */ +#define PPPIO_GETCSTAT _PPPIO(132) /* get PPP compression stats */ +#define PPPIO_MTU _PPPIO(133) /* set max transmission unit */ +#define PPPIO_MRU _PPPIO(134) /* set max receive unit */ +#define PPPIO_CFLAGS _PPPIO(135) /* set/clear/get compression flags */ +#define PPPIO_XCOMP _PPPIO(136) /* alloc transmit compressor */ +#define PPPIO_RCOMP _PPPIO(137) /* alloc receive decompressor */ +#define PPPIO_XACCM _PPPIO(138) /* set transmit asyncmap */ +#define PPPIO_RACCM _PPPIO(139) /* set receive asyncmap */ +#define PPPIO_VJINIT _PPPIO(140) /* initialize VJ comp/decomp */ +#define PPPIO_ATTACH _PPPIO(141) /* attach to a ppa (without putmsg) */ +#define PPPIO_LASTMOD _PPPIO(142) /* mark last ppp module */ +#define PPPIO_GCLEAN _PPPIO(143) /* get 8-bit-clean flags */ +#define PPPIO_DEBUG _PPPIO(144) /* request debug information */ +#define PPPIO_BIND _PPPIO(145) /* bind to SAP */ +#define PPPIO_NPMODE _PPPIO(146) /* set mode for handling data pkts */ +#define PPPIO_GIDLE _PPPIO(147) /* get time since last data pkt */ +#define PPPIO_PASSFILT _PPPIO(148) /* set filter for packets to pass */ +#define PPPIO_ACTIVEFILT _PPPIO(149) /* set filter for "link active" pkts */ + +/* + * Values for PPPIO_CFLAGS + */ +#define COMP_AC 0x1 /* compress address/control */ +#define DECOMP_AC 0x2 /* decompress address/control */ +#define COMP_PROT 0x4 /* compress PPP protocol */ +#define DECOMP_PROT 0x8 /* decompress PPP protocol */ + +#define COMP_VJC 0x10 /* compress TCP/IP headers */ +#define COMP_VJCCID 0x20 /* compress connection ID as well */ +#define DECOMP_VJC 0x40 /* decompress TCP/IP headers */ +#define DECOMP_VJCCID 0x80 /* accept compressed connection ID */ + +#define CCP_ISOPEN 0x100 /* look at CCP packets */ +#define CCP_ISUP 0x200 /* do packet comp/decomp */ +#define CCP_ERROR 0x400 /* (status) error in packet decomp */ +#define CCP_FATALERROR 0x800 /* (status) fatal error ditto */ +#define CCP_COMP_RUN 0x1000 /* (status) seen CCP ack sent */ +#define CCP_DECOMP_RUN 0x2000 /* (status) seen CCP ack rcvd */ + +/* + * Values for 8-bit-clean flags. + */ +#define RCV_B7_0 1 /* have rcvd char with bit 7 = 0 */ +#define RCV_B7_1 2 /* have rcvd char with bit 7 = 1 */ +#define RCV_EVNP 4 /* have rcvd char with even parity */ +#define RCV_ODDP 8 /* have rcvd char with odd parity */ + +/* + * Values for the first byte of M_CTL messages passed between + * PPP modules. + */ +#define PPPCTL_OERROR 0xe0 /* output error [up] */ +#define PPPCTL_IERROR 0xe1 /* input error (e.g. FCS) [up] */ +#define PPPCTL_MTU 0xe2 /* set MTU [down] */ +#define PPPCTL_MRU 0xe3 /* set MRU [down] */ +#define PPPCTL_UNIT 0xe4 /* note PPP unit number [down] */ + +/* + * Values for the integer argument to PPPIO_DEBUG. + */ +#define PPPDBG_DUMP 0x10000 /* print out debug info now */ +#define PPPDBG_LOG 0x100 /* log various things */ +#define PPPDBG_DRIVER 0 /* identifies ppp driver as target */ +#define PPPDBG_IF 1 /* identifies ppp network i/f target */ +#define PPPDBG_COMP 2 /* identifies ppp compression target */ +#define PPPDBG_AHDLC 3 /* identifies ppp async hdlc target */ diff --git a/dockapps/wmnd/src/wmnd.c b/dockapps/wmnd/src/wmnd.c new file mode 100644 index 0000000..de65cbf --- /dev/null +++ b/dockapps/wmnd/src/wmnd.c @@ -0,0 +1,1918 @@ +/* + * wmnd: main program module + * + * Copyright(c) 2000-2001 by Reed Lai + * Copyright(c) 2001 by Timecop + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +#include "wmnd.h" +#include "cfgdata.h" +#include "display.h" +#include "misc.h" +#include "master.xpm" +#include "drivers.h" +#include "messages.h" + + +struct var *vars; /* config file option structure */ +struct Devices *devices; /* devices to monitor */ +DevTable wmnd; /* interesting information about devices */ +Dockapp dockapp; /* dockapp structure */ +MRegion mr[32]; /* mouse regions */ + + +/* GUI */ +static void redraw_window(void); +unsigned long get_color(char* name); +void new_window(char* res_name, char* res_class, + int width, int height, int argc, char** argv); + +/* config file read/write */ +void conf_read(char* filename); +void conf_write(char* filename); +void assign(char* name, char* value); +struct var *lookup(char* name); +char* value(char* name); +char* vcopy(char* str); + +/* utils for command line */ +int strval_fe(const struct pair_strint *data, const char* val); +int defcon_lk(const char* token); +void defcon_touch(char* token, char* val); + +/* support */ +int add_mr(int index, int x, int y, int width, int height); +int check_mr(int x, int y); +void beat_event(void); +void click_event(unsigned int region, unsigned int button); +static void led_control(const unsigned char led, const unsigned char mode); +void scale(char* rx_buf, char* tx_buf, unsigned long rx, + unsigned long tx, const int gap); +void metric_scale(unsigned char sign, unsigned long value, char* buf); +void binary_scale(unsigned char sign, unsigned long value, char* buf); +void draw_string(const char* buf, unsigned int x, unsigned int y); +void smooth(unsigned long* stat, const unsigned long last, const float smooth); + +/* device statistics */ +void draw_interface(void); +void draw_rate(unsigned long rx, unsigned long tx, const int gap); +void draw_max(unsigned long rx, unsigned long tx); +void draw_stats(struct Devices *ptr, const int gap); + +/* driver functions */ +int devices_init(const char* driver, const char* interface); +void devices_select(const char* interface); +void devices_prev(void); +void devices_getstat(struct Devices *device, unsigned long* ip, + unsigned long* op, unsigned long* ib, unsigned long* ob); +void devices_destroy(void); + +/* useless shit */ +void reaper(int sig); +void usage(void); +void printversion(void); + + +int +add_mr(int index, int x, int y, int width, int height) +{ + mr[index].enable = 1; + mr[index].x = x; + mr[index].y = y; + mr[index].width = width; + mr[index].height = height; + return 0; +} + + +int +check_mr(int x, int y) +{ + register int i; + register int found = 0; + + for(i = 0; i < 32 && !found; i++) + { + if(mr[i].enable && x >= mr[i].x && + x <= mr[i].x + mr[i].width && + y >= mr[i].y && y <= mr[i].y + mr[i].height) + found = 1; + } + if(!found) + return REG_NOREG; + return (i - 1); +} + + +static void +redraw_window(void) +{ + if(dockapp.update) + { + msg_dbg(__POSITION__, "redrawing window"); + XCopyArea(dockapp.d, dockapp.pixmap, dockapp.iconwin, dockapp.gc, + 0, 0, dockapp.width, dockapp.height, 0, 0); + XCopyArea(dockapp.d, dockapp.pixmap, dockapp.win, dockapp.gc, + 0, 0, dockapp.width, dockapp.height, 0, 0); + dockapp.update = 0; + } +} + + +unsigned long +get_color(char* name) +{ + XColor color; + XWindowAttributes attr; + + color.pixel = 0; + + XGetWindowAttributes(dockapp.d, DefaultRootWindow(dockapp.d), &attr); + XParseColor(dockapp.d, DefaultColormap(dockapp.d, + DefaultScreen(dockapp.d)), name, &color); + color.flags = DoRed | DoGreen | DoBlue; + XAllocColor(dockapp.d, attr.colormap, &color); + msg_dbg(__POSITION__, "pixel: %08lx", color.pixel); + return color.pixel; +} + + +void +new_window(char* res_name, char* res_class, + int width, int height, int argc, char** argv) +{ + char* geometry; + XpmAttributes attr; + XpmColorSymbol cols[3] = + { + {"rx_color", NULL, 0}, + {"tx_color", NULL, 0}, + {"md_color", NULL, 0} + }; + Pixel fg, bg; + XGCValues gcval; + XSizeHints sizehints; + XClassHint classhint; + XWMHints wmhints; + + dockapp.width = width; + dockapp.height = height; + dockapp.screen = DefaultScreen(dockapp.d); + dockapp.root = DefaultRootWindow(dockapp.d); + + /* parse the geometry spec, if any */ + geometry = value("geometry"); + if(geometry) + { + unsigned dummy; + XParseGeometry(geometry, &dockapp.x, &dockapp.y, &dummy, &dummy); + } + + sizehints.flags = USSize | (geometry? USPosition: 0); + sizehints.x = dockapp.x; + sizehints.y = dockapp.y; + sizehints.width = width; + sizehints.height = height; + + fg = BlackPixel(dockapp.d, dockapp.screen); + bg = WhitePixel(dockapp.d, dockapp.screen); + + dockapp.win = XCreateSimpleWindow(dockapp.d, dockapp.root, + sizehints.x, sizehints.y, sizehints.width, sizehints.height, 1, fg, bg); + dockapp.iconwin = XCreateSimpleWindow(dockapp.d, dockapp.win, + sizehints.x, sizehints.y, sizehints.width, sizehints.height, 1, fg, bg); + + XSetWMNormalHints(dockapp.d, dockapp.win, &sizehints); + classhint.res_name = res_name; + classhint.res_class = res_class; + XSetClassHint(dockapp.d, dockapp.win, &classhint); + +#define EVENTS (ExposureMask | ButtonPressMask | \ + ButtonReleaseMask | StructureNotifyMask) + XSelectInput(dockapp.d, dockapp.win, EVENTS); + XSelectInput(dockapp.d, dockapp.iconwin, EVENTS); + + XStoreName(dockapp.d, dockapp.win, res_name); + XSetIconName(dockapp.d, dockapp.win, res_name); + + gcval.foreground = fg; + gcval.background = bg; + gcval.graphics_exposures = False; + + dockapp.gc = XCreateGC(dockapp.d, dockapp.win, + GCForeground | GCBackground | GCGraphicsExposures, &gcval); + + cols[0].pixel = get_color(value("rx_color")); + cols[1].pixel = get_color(value("tx_color")); + cols[2].pixel = get_color(value("md_color")); + dockapp.stdColors.txColor = cols[1].pixel; + dockapp.stdColors.rxColor = cols[0].pixel; + dockapp.stdColors.mdColor = cols[2].pixel; + + attr.exactColors = 0; + attr.alloc_close_colors = 1; + attr.closeness = 1L << 15; + attr.colorsymbols = cols; + attr.numsymbols = 3; + attr.valuemask = + (XpmColorSymbols | XpmExactColors | XpmAllocCloseColors | XpmCloseness); + if(XpmCreatePixmapFromData + (dockapp.d, dockapp.win, master_xpm, &dockapp.pixmap, + &dockapp.mask, &attr) != XpmSuccess) + { + msg_err("not enough colors!"); + exit(-1); + } + XShapeCombineMask(dockapp.d, dockapp.win, ShapeBounding, 0, 0, + dockapp.mask, ShapeSet); + XShapeCombineMask(dockapp.d, dockapp.iconwin, ShapeBounding, 0, 0, + dockapp.mask, ShapeSet); + + wmhints.initial_state = WithdrawnState; + wmhints.flags = StateHint; + wmhints.icon_window = dockapp.iconwin; + wmhints.icon_x = sizehints.x; + wmhints.icon_y = sizehints.y; + wmhints.window_group = dockapp.win; + wmhints.flags = + StateHint | IconWindowHint | IconPositionHint | WindowGroupHint; + XSetWMHints(dockapp.d, dockapp.win, &wmhints); + + XSetCommand(dockapp.d, dockapp.win, argv, argc); + XSetCommand(dockapp.d, dockapp.iconwin, argv, argc); + + XMapWindow(dockapp.d, dockapp.win); + dockapp.xfd = ConnectionNumber(dockapp.d); +} + + +/* support function - chop cr/lf off the end of a string */ +void +chomp(char* buffer) +{ + int i = strlen(buffer) - 1; + while (buffer[i] == '\n' || buffer[i] == '\r') + buffer[i--] = '\0'; +} + + +void +conf_read(char* filename) +{ + FILE *fp; + char buf[1024]; + size_t pos; + int line = 0; + int exist; + + fp = fopen(filename, "r"); + + if(fp) + { + /* actually read in the config file, skipping over short and #lines */ + while (fgets(buf, 1024, fp)) { + line++; + if(buf[0] == '#' || (strlen(buf) < 2)) + continue; + chomp(buf); + pos = strcspn(buf, "="); + if(pos < strlen(buf)) + { + buf[pos++] = '\0'; + + /* check for existent value */ + exist = defcon_lk(buf); /* search for buf in defaults */ + if(exist != -1 && !pss_defcon[exist].used) + exist = -1; + if(exist == -1) /* only if isn't a default or it's not on cmdline */ + assign(buf, buf+pos); + } + memset(buf, 0, 1024); + } + fclose(fp); + } + else + { + /* can't open the rc file, make a new one */ + msg_err("can't open WMND rc file '%s', using defaults", filename); + conf_write(filename); + } +} + + +void +conf_write(char* filename) +{ + FILE *fp; + struct var *vp; + int dc; + + fp = fopen(filename, "w"); + if(!fp) + { + msg_err("can't open '%s' for writing", filename); + exit(1); + } + fprintf(fp, "# WMND configuration file (generated automatically)\n\n"); + + /* write only changed values */ + for(vp = vars; vp; vp = vp->v_next) + { + if(!vp->v_value) + continue; + + dc = defcon_lk(vp->v_name); + if(dc == -1 || !pss_defcon[dc].value || + strcmp(pss_defcon[dc].value, vp->v_value)) + fprintf(fp, "%s=%s\n", vp->v_name, vp->v_value); + } + fclose(fp); +} + + +void +assign(char* name, char* value) +{ + struct var* vp; + struct var* newv; + + /* search for existing values */ + for(vp = vars; vp && + (vp->v_next || !strcmp(name, vp->v_name)); vp = vp->v_next) + { + if(!vp->v_next || !strcmp(name, vp->v_name)) + { + /* existing value */ + if(vp->v_value) + free(vp->v_value); + vp->v_value = vcopy(value); + return; + } + } + + /* append the value */ + newv = (struct var*)malloc(sizeof(struct var)); + newv->v_name = vcopy(name); + newv->v_value = vcopy(value); + newv->v_next = NULL; + + if(!vars) + vars = newv; + else + vp->v_next = newv; +} + + +char* +vcopy(char* str) +{ + if(str == NULL) + return NULL; + + return strdup(str); +} + + +int +strval_fe(const struct pair_strint *data, const char* val) +{ + /* returns the correct value for val as int */ + int cnt = 0; + while (data[cnt].strval) + { + if(!strcmp(val,data[cnt].strval)) + return data[cnt].val; + cnt++; + } + + /* not found, return 0 */ + return data->val; +} + + +int +waveval_fe(const struct drwStruct *data, const char* val) +{ + int cnt = 0; + while (data[cnt].funcName) + { + if(!strcmp(val,data[cnt].funcName)) + return cnt; + cnt++; + } + return 0; +} + + +/* Lookup for an index in the defcon table */ +int +defcon_lk(const char* token) +{ + int rtval = 0; + while (pss_defcon[rtval].token) + { + if(!strcmp(token,pss_defcon[rtval].token)) + return rtval; + rtval++; + } + return -1; +} + + +/* Touch an item in the defcon table (mark as 'used') */ +void +defcon_touch(char* token, char* val) +{ + int idx = defcon_lk(token); + + assign(token, val); + if(idx != -1) + pss_defcon[idx].used = 1; +} + + +struct var* +lookup(char* name) +{ + struct var *vp; + + for(vp = vars; vp; vp = vp->v_next) + if(!strcmp(name, vp->v_name)) + return vp; + return NULL; +} + + +char* +value(char* name) +{ + struct var *vp; + + if(!(vp = lookup(name))) + return NULL; + return vp->v_value; +} + + +void +beat_event(void) +{ + unsigned long diff; + unsigned int min, hr; + char temp[16]; + + msg_dbg(__POSITION__, "activated"); + if(!wmnd.curdev->online) + { + if(!bit_get(RUN_ONLINE)) + { + bit_set(RUN_ONLINE); + led_control(LED_POWER, 1); + } + } + else + { + if(bit_get(RUN_ONLINE)) + { + bit_off(RUN_ONLINE); + led_control(LED_POWER, 0); + } + } + if(bit_get(CFG_SHOWTIME) && wmnd.curdev->devstart) + { + diff = (long unsigned)(difftime(time(NULL), wmnd.curdev->devstart) / 60); + min = diff % 60; + hr = (diff / 60) % 100; + sprintf(temp, "%02d.%02d", hr, min); + draw_string(temp, 71, 36); + } +} + + +void +exec_perc_command(const char* cmd, int button) +{ + char buf[4]; + char* newcmd; + perctbl_t data[3]; + + /* button */ + sprintf(buf, "%d", button); + data[0].c = 'b'; + data[0].value = buf; + + /* interface name */ + data[1].c = 'i'; + data[1].value = wmnd.curdev->name; + + /* status */ + data[2].c = 's'; + data[2].value = (wmnd.curdev->online? "0": "1"); + + /* parse and exec the new command */ + newcmd = percsubst(cmd, data, 3); + exec_command(newcmd); + free(newcmd); +} + + +#ifdef USE_TREND +/* static data for trend instance sharing */ +static FILE** trendFd; +static int trendUpd; + + +static inline int +trend_idx(int d, int bp) +{ + return(d * 2 + bp); +} + + +void +close_trend(int i) +{ + if(trendFd[i]) + { + pclose(trendFd[i]); + trendFd[i] = NULL; + } +} + + +void +close_trends() +{ + unsigned i; + for(i = 0; i != wmnd.nr_devices * 2; ++i) + close_trend(i); + free(trendFd); +} + + +int +check_trend(int i) +{ + return(fputs("\n", trendFd[i]) == EOF || fflush(trendFd[i]) == EOF); +} + + +void +exec_trend(struct Devices* dev, int bp) +{ + int d = dev->devnum; + int i = trend_idx(d, bp); + int dead = (!trendFd[i] || check_trend(i)); + + if(dead) + { + /* new trend instance required */ + char cmd[256]; + + /* cmdline */ + snprintf(cmd, sizeof(cmd), + "trend -t '%s %s' -G %d -d -s -c2a -Lin,out %s - %s", + dev->name, (bp? "bytes": "packets"), + (wmnd.scale == binary_scale? 1024: 1000) / (bp? 1: 100), + value("trend_flags"), value("trend_history")); + + /* execute */ + close_trend(i); + if(!(trendFd[i] = popen(cmd, "w"))) + { + msg_err("cannot execute trend!"); + return; + } + } + + if(dead || !trendUpd) + { + /* refill the pipe */ + int x, idx; + idx = (bp? 0: 2); + for(x = 0; x != 58; ++x) + fprintf(trendFd[i], "%lu %lu\n", + dev->his[x][idx + 0], dev->his[x][idx + 1]); + fflush(trendFd[i]); + } +} +#endif + + +void +click_event(unsigned int region, unsigned int button) +{ + char* action = NULL; + if(region == REG_NOREG) /* no region */ + return; + + msg_dbg(__POSITION__, "clicked btn %d in region %d", button, region); + + /* the wheel is valid everywhere */ + if(button == Button4 || button == Button5) + { + if(button == Button4) + devices_prev(); + else + devices_select(NULL); + + draw_interface(); + } + else if(region == REG_DEV) + { + switch(button) + { + case Button1: + devices_select(NULL); + draw_interface(); + break; + + case Button3: + bit_tgl(CFG_SHORTNAME); + msg_dbg(__POSITION__, "shortname: %d", bit_get(CFG_SHORTNAME)); + draw_interface(); + break; + } + } + else if(region == REG_RT_PB) + { + if(button == Button1) + { + bit_tgl(CFG_MODE); + led_control(LED_POWER, bit_get(RUN_ONLINE)); + } + } + else if(region == REG_MAIN) + { + if(button == Button1) + { + if(wmnd.wavemode < (wmnd.nWavemodes - 1)) + wmnd.wavemode++; + else + wmnd.wavemode = 0; + msg_dbg(__POSITION__, "wavemode: %d", wmnd.wavemode); + } + else if(button == Button3) + /* switch time visualization */ + bit_tgl(CFG_SHOWTIME); + } + else if(region == REG_SCALE_RX || region == REG_SCALE_TX) + { + switch(button) + { + case Button1: + /* switch max screen/history */ + bit_tgl(CFG_MAXSCREEN); + break; +#ifdef USE_TREND + case Button2: + /* launch trend */ + exec_trend(wmnd.curdev, bit_get(CFG_MODE)); + break; +#endif + case Button3: + /* toggle max display */ + bit_tgl(CFG_SHOWMAX); + break; + } + } + else if(region == REG_SCRIPT) + { + switch(button) + { + case Button1: + action = value("bt1_action"); + break; + case Button2: + action = value("bt2_action"); + break; + case Button3: + action = value("bt3_action"); + break; + } + if(action) + exec_perc_command(action, button); + } +} + + +void +smooth(unsigned long* stat, const unsigned long last, const float smooth) +{ + *stat = ((unsigned long)(last + (smooth * (*stat - last)))); +} + + +void +mainExit(int sig) +{ + msg_info("caught signal %d, terminating...", sig); +#ifdef USE_TREND + close_trends(); +#endif + devices_destroy(); + exit(1); +} + + +int main(int argc, char* *argv) +{ + char* dispname = NULL; + char* active_interface = NULL; + char* drv_interface = NULL; + char* drv_name = NULL; + char* win_name = NULL; + int parse_conf = 1; + char* conf_file = NULL; + struct Devices* ptr; + unsigned long ib, ob, ip, op; + int ch; + unsigned btn = 0; + int rgn = -1; + XEvent event; + const struct drwStruct* drwPtr; + sigset_t masked; + struct timeval beat_time; + + /* initialize messaging functions */ + msg_prgName = argv[0]; + + msg_dbg(__POSITION__, "wmnd start"); + + /* detect the number of avaible wave modes */ + for(drwPtr = drwFuncs; drwPtr->funcName; ++drwPtr) + ++wmnd.nWavemodes; + msg_dbg(__POSITION__, "detected %d display modes", wmnd.nWavemodes); + + /* + * set default config options before option parsing so command line can + * overwrite config options + */ + wmnd.nr_devices = 0; + wmnd.flags = 0; + vars = NULL; + bit_set(RUN_ONLINE); + bit_set(CFG_MODE); + + /* + * initalize default values using pss_defcon + * we can use ch, because it's used later + */ + ch = 0; + while(pss_defcon[ch].token) + { + assign(pss_defcon[ch].token, pss_defcon[ch].value); + ch++; + } + + /* parse command line */ + while((ch = + getopt(argc, argv, "bc:C:L:d:g:i:hlmMf:Fr:s:S:tvw:D:I:qQo:n:a:")) != EOF) + { + switch(ch) + { + case 'b': + defcon_touch("binary_scale", "yes"); + break; + case 'c': + defcon_touch("tx_color", optarg); + break; + case 'C': + defcon_touch("rx_color", optarg); + break; + case 'L': + defcon_touch("md_color", optarg); + break; + case 'd': + defcon_touch("display", optarg); + break; + case 'g': + defcon_touch("geometry", optarg); + break; + case 'i': + defcon_touch("interface_name", optarg); + break; + case 'l': + defcon_touch("use_long_names", "yes"); + break; + case 'm': + defcon_touch("show_max_values", "no"); + break; + case 'M': + defcon_touch("use_max_history", "yes"); + break; + case 'f': + conf_file = optarg; + break; + case 'F': + parse_conf = 0; + break; + case 'r': + defcon_touch("refresh", optarg); + break; + case 's': + defcon_touch("scroll", optarg); + break; + case 'S': + defcon_touch("avg_steps", optarg); + break; + case 't': + defcon_touch("display_time", "no"); + break; + case 'v': + printversion(); + exit(0); + break; + case 'w': + defcon_touch("wave_mode", optarg); + break; + case 'D': + defcon_touch("driver", optarg); + break; + case 'I': + defcon_touch("driver_interface", optarg); + break; + case 'q': + defcon_touch("quiet", "yes"); + break; + case 'Q': + defcon_touch("quiet", "no"); + break; + case 'o': + defcon_touch("smooth", optarg); + break; + case 'n': + defcon_touch("name", optarg); + break; + case 'a': + defcon_touch("fixed_max", optarg); + break; + default: + usage(); + exit(0); + break; + } + } + if(parse_conf) + { + if(!conf_file) + { + char* tmp; + tmp = getenv("HOME"); + conf_file = (char*)calloc(1, strlen(tmp) + 9); + strcat(conf_file, tmp); + strcat(conf_file, "/.wmndrc"); + } + conf_read(conf_file); + } + + /* set stuff here */ + wmnd.refresh = atoi(value("refresh")); + wmnd.scroll = MAX(atoi(value("scroll")), 1); + wmnd.avgSteps = MAX(atoi(value("avg_steps")), 1); + wmnd.smooth = atof(value("smooth")); + wmnd.maxScale = strtol(value("fixed_max"), NULL, 0); + win_name = value("name"); + if(strval_fe(psi_bool, value("binary_scale"))) + wmnd.scale = binary_scale; + else + wmnd.scale = metric_scale; + active_interface = value("interface_name"); + if(!strcmp(active_interface, "%first")) + active_interface = NULL; + if(!strval_fe(psi_bool, value("use_long_names"))) + bit_set(CFG_SHORTNAME); + if(strval_fe(psi_bool, value("show_max_values"))) + bit_set(CFG_SHOWMAX); + if(!strval_fe(psi_bool, value("use_max_history"))) + bit_set(CFG_MAXSCREEN); + if(strval_fe(psi_bool, value("display_time"))) + bit_set(CFG_SHOWTIME); + wmnd.wavemode = waveval_fe(drwFuncs, value("wave_mode")); + drv_name = value("driver"); + if(!strcmp(drv_name, "%auto")) + drv_name = NULL; + drv_interface = value("driver_interface"); + if(!strcmp(drv_interface, "%any")) + drv_interface = NULL; + if(strval_fe(psi_bool, value("quiet"))) + msg_messages = MSG_FERR; + if(strval_fe(psi_bool, value("debug"))) + msg_messages |= MSG_FDBG; + + /* check for at least one display mode */ + if(!drwFuncs->funcName) + { + msg_err("no avaible display modes, exiting"); + exit(1); + } + + /* initialize drivers and devices */ + if(!active_interface) + active_interface = drv_interface; + if(devices_init(drv_name, drv_interface)) + { + msg_err("no drivers loaded, exiting"); + exit(1); + } + + /* now it's safe to connect signals */ + signal(SIGINT, mainExit); + signal(SIGTERM, mainExit); + signal(SIGCHLD, reaper); + sigemptyset(&masked); + sigaddset(&masked, SIGTERM); + sigaddset(&masked, SIGINT); + +#ifdef USE_TREND + /* initialize trend's data */ + signal(SIGPIPE, SIG_IGN); + trendFd = (FILE**)calloc(sizeof(FILE*), wmnd.nr_devices * 2); + trendUpd = strval_fe(psi_bool, value("trend_update")); +#endif + + msg_dbg(__POSITION__, "open X display"); + dispname = value("display"); + if(!(dockapp.d = XOpenDisplay(dispname))) + { + /* fprintf crashes on some systems if dispname is null */ + if(dispname) + msg_err("unable to open display '%s'", dispname); + else + msg_err("unable to open default display"); + + exit(-1); + } + new_window(win_name, "wmnd", 64, 64, argc, argv); + + add_mr(REG_DEV, 3, 3, 38, 9); /* device */ + add_mr(REG_RT_PB, 54, 3, 7, 9); /* up/down packet/byte mode */ + add_mr(REG_MAIN, 3, 22, 58, 31); /* main display area */ + add_mr(REG_SCALE_RX, 3, 13, 29, 9); /* scale meter, left side (rx) */ + add_mr(REG_SCALE_TX, 32, 13, 29, 9); /* scale meter, right side (tx) */ + add_mr(REG_SCRIPT, 3, 54, 58, 7); /* user script */ + + /* updates should begin immediately */ + memset(&beat_time, 0, sizeof(beat_time)); + + /* clear the number of remaining steps */ + wmnd.avgRSteps = 1; + + if(!active_interface) /* set default device name */ + wmnd.curdev = devices; + else + devices_select(active_interface); + + draw_interface(); + + msg_dbg(__POSITION__, "looping"); + XSync(dockapp.d, False); /* kick off X11 queue */ + + /* loop forever */ + for(;;) + { + unsigned int j; + sigset_t mask; + struct timeval beat_ctime; + unsigned long beat_gap; + int gap; + + /* mask INT/TERM in get_stats */ + sigprocmask(SIG_BLOCK, &masked, &mask); + + /* get statistics for each existing device */ + for(ptr = devices; ptr; ptr = ptr->next) + { + devices_getstat(ptr, &ip, &op, &ib, &ob); + + /* check for device shutdown */ + if(ib < ptr->ib_stat_last) + ptr->ib_stat_last = ib; + if(ob < ptr->ob_stat_last) + ptr->ob_stat_last = ob; + if(ip < ptr->ip_stat_last) + ptr->ip_stat_last = ip; + if(op < ptr->op_stat_last) + ptr->op_stat_last = op; + + /* + * smoothing is performed before led setup and only on bytes, in order to + * let leds blink even when the graph is smoothed. Smoothing packets has + * no sense. + */ + if(wmnd.smooth) + { + smooth(&ib, ptr->ib_stat_last, wmnd.smooth); + smooth(&ob, ptr->ob_stat_last, wmnd.smooth); + } + + /* setup leds */ + if(ptr == wmnd.curdev) + { + if(ptr->ip_stat_last == ip || ptr->online) + led_control(LED_RX, 0); + else + led_control(LED_RX, 1); + + if(ptr->op_stat_last == op || ptr->online) + led_control(LED_TX, 0); + else + led_control(LED_TX, 1); + } + + /* save values in history */ + ptr->his[57][0] += ib - ptr->ib_stat_last; + ptr->his[57][1] += ob - ptr->ob_stat_last; + ptr->his[57][2] += ip - ptr->ip_stat_last; + ptr->his[57][3] += op - ptr->op_stat_last; + ptr->ib_max_his = MAX(ptr->ib_max_his, ptr->his[57][0]); + ptr->ob_max_his = MAX(ptr->ob_max_his, ptr->his[57][1]); + ptr->ip_max_his = MAX(ptr->ip_max_his, ptr->his[57][2]); + ptr->op_max_his = MAX(ptr->op_max_his, ptr->his[57][3]); + + /* save lastest values */ + ptr->ib_stat_last = ib; + ptr->ob_stat_last = ob; + ptr->ip_stat_last = ip; + ptr->op_stat_last = op; + } + + /* restore mask */ + sigprocmask(SIG_SETMASK, &mask, NULL); + + /* fetch current time */ + gettimeofday(&beat_ctime, NULL); + + /* estimate the time gap in milliseconds */ + beat_gap = ((beat_ctime.tv_sec - beat_time.tv_sec) * 1000) + + ((beat_ctime.tv_usec - beat_time.tv_usec) / 1000); + gap = (wmnd.avgSteps != 1? wmnd.scroll: beat_gap / 100); + + if(beat_gap >= wmnd.scroll * 100) + { + beat_time = beat_ctime; + + /* drift the average stats */ + if(!--wmnd.avgRSteps) + { + float div = 1. / wmnd.avgSteps; + + for(ptr = devices; ptr; ptr = ptr->next) + { + ptr->avg[0] = (unsigned long)(div * (ptr->ib_stat_last - ptr->avgBuf[0])); + ptr->avg[1] = (unsigned long)(div * (ptr->ob_stat_last - ptr->avgBuf[1])); + ptr->avg[2] = (unsigned long)(div * (ptr->ip_stat_last - ptr->avgBuf[2])); + ptr->avg[3] = (unsigned long)(div * (ptr->op_stat_last - ptr->avgBuf[3])); + ptr->avgBuf[0] = ptr->ib_stat_last; + ptr->avgBuf[1] = ptr->ob_stat_last; + ptr->avgBuf[2] = ptr->ip_stat_last; + ptr->avgBuf[3] = ptr->op_stat_last; + } + wmnd.avgRSteps = wmnd.avgSteps; + } + + /* cause a beat_event to parse pending x requests */ + beat_event(); + + /* scroll the statistics */ + draw_stats(wmnd.curdev, gap); + for(ptr = devices; ptr; ptr = ptr->next) + { +#ifdef USE_TREND + if(trendUpd) + { + int i, bp, idx; + + for(bp = 0; bp != 2; ++bp) + { + idx = (bp? 0: 2); + i = trend_idx(ptr->devnum, bp); + if(trendFd[i]) + { + if(check_trend(i)) + close_trend(i); + else + { + fprintf(trendFd[i], "%lu %lu\n", + ptr->his[57][idx + 0], ptr->his[57][idx + 1]); + fflush(trendFd[i]); + } + } + } + } +#endif + + for(j = 1; j < 58; j++) + { + ptr->his[j - 1][0] = ptr->his[j][0]; + ptr->his[j - 1][1] = ptr->his[j][1]; + ptr->his[j - 1][2] = ptr->his[j][2]; + ptr->his[j - 1][3] = ptr->his[j][3]; + } + memset(ptr->his[57], 0, sizeof(ptr->his[57])); + } + } + + /* + * beat_event and redraw added also on expose and button release + * events. Now the app is much responsive to user action + */ + while (XPending(dockapp.d)) + { + msg_dbg(__POSITION__, "X11 activity"); + XNextEvent(dockapp.d, &event); + switch (event.type) + { + case Expose: + dockapp.update = 1; + break; + case DestroyNotify: + XCloseDisplay(dockapp.d); + exit(0); + break; + case ButtonPress: + btn = event.xbutton.button; + rgn = check_mr(event.xbutton.x, event.xbutton.y); + break; + case ButtonRelease: + if(btn == event.xbutton.button) + { + if(rgn == check_mr(event.xbutton.x, event.xbutton.y)) + { + click_event(rgn, btn); + beat_event(); + draw_stats(wmnd.curdev, gap); + } + } + break; + } + } + + redraw_window(); + usleep(wmnd.refresh); + } + +#ifdef USE_TREND + close_trends(); +#endif + devices_destroy(); + exit(0); +} + + +void +binary_scale(unsigned char sign, unsigned long value, char* buf) +{ + unsigned char scale; + unsigned int i; + char* r; + + if(value > 1073741823) + { + /* scale in giga */ + value = value >> 30; + scale = 'G'; + } + else + if(value > 1048575) + { + /* scale in mega */ + value = value >> 20; + scale = 'M'; + } + else + if(value > 1023) + { + /* scale in kilo */ + value = value >> 10; + scale = 'K'; + } + else + scale = ' '; + + snprintf(buf, 7, "%c%lu", sign, value); + r = buf; + r++; + + for(i = 3; i > 0 && *r != '\0'; i--) + { + if(*r == '+' || *r == '-' || *r == '.') + ++i; + ++r; + } + *r++ = scale; + *r = '\0'; +} + + +void +metric_scale(unsigned char sign, unsigned long value, char* buf) +{ + float f; + unsigned char scale; + unsigned int i; + char* r; + + f = (float) value; + if(value > 999999999) + { + /* scale in giga */ + f /= 1000000000; + scale = 'G'; + } + else + if(value > 999999) + { + /* scale in mega */ + f /= 1000000; + scale = 'M'; + } + else + if(value > 999) + { + /* scale in kilo */ + f /= 1000; + scale = 'K'; + } + else + scale = ' '; + + snprintf(buf, 7, "%c%f", sign, f); + r = buf; + r++; + + for(i = 3; i > 0 && *r != '\0'; i--) + { + if(*r == '+' || *r == '-' || *r == '.') + ++i; + ++r; + } + *r++ = scale; + *r = '\0'; +} + + +void +scale(char* rx_buf, char* tx_buf, unsigned long rx, + unsigned long tx, const int gap) +{ + char rx_sign, tx_sign; + + if(rx > tx) + { + rx_sign = '+'; + tx_sign = '#'; + } + else + { + rx_sign = '-'; + tx_sign = '*'; + } + + /* return the speed in bps */ + if(gap != 10) + { + float div = 10. / gap; + tx = (unsigned long)(div * tx); + rx = (unsigned long)(div * rx); + } + wmnd.scale(tx_sign, tx, tx_buf); + wmnd.scale(rx_sign, rx, rx_buf); +} + + +void +draw_string(const char* buf, unsigned int x, unsigned int y) +{ + unsigned int w, sx = 0, sy = 0; + unsigned int draw; + const char* r; + + w = 3; + draw = 0; + for(r = buf; *r != '\0'; r++) + { + if(*r >= '0' && *r <= '9') + { + w = 5; + sx = 1 + (w * (*r - '0')); + sy = 86; + draw = 1; + } + else + if(*r == '.') + { + w = 2; + sx = 62; + sy = 86; + draw = 1; + } + else + if(*r >= 'A' && *r <= 'Z') + { + w = 5; + sx = 1 + (w * (*r - 'A')); + sy = 94; + draw = 1; + } + else + if(*r == '+') + { + w = 6; + if(bit_get(CFG_MAXSCREEN)) + { + sx = 133; + sy = 94; + } + else + { + sx = 66; + sy = 46; + } + draw = 1; + } + else + if(*r == '-') + { + w = 6; + if(bit_get(CFG_MAXSCREEN)) + { + sx = 139; + sy = 94; + } + else + { + sx = 72; + sy = 46; + } + draw = 1; + } + else + if(*r == '*') + { + w = 6; + if(bit_get(CFG_MAXSCREEN)) + { + sx = 145; + sy = 94; + } + else + { + sx = 78; + sy = 46; + } + draw = 1; + } + else + if(*r == '#') + { + w = 6; + if(bit_get(CFG_MAXSCREEN)) + { + sx = 151; + sy = 94; + } + else + { + sx = 84; + sy = 46; + } + draw = 1; + } + if(draw) + { + copy_xpm_area(sx, sy, w, 7, x, y); + draw = 0; + } + x += w; + } +} + + +void +draw_rate(unsigned long rx, unsigned long tx, const int gap) +{ + char rx_buf[8]; + char tx_buf[8]; + + /* clear rate bar */ + copy_xpm_area(100, 86, 58, 7, 3, 54); + + /* put rx/tx numbers into strings, scaling them */ + scale(rx_buf, tx_buf, rx, tx, gap); + + /* draw rx/tx strings */ + draw_string(rx_buf, 3, 54); + draw_string(tx_buf, 32, 54); +} + + +void +draw_max(unsigned long rx, unsigned long tx) +{ + char rx_buf[16]; + char tx_buf[16]; + + /* clear rate bar */ + copy_xpm_area(100, 86, 58, 7, 3, 11); + + /* put rx/tx numbers into strings, scaling them. Scale now acceps the median + * time in microseconds to scale the values correctly; as we don't have the + * median time for all samples, use a reasonable default */ + scale(rx_buf, tx_buf, rx, tx, wmnd.scroll); + + /* draw rx/tx strings */ + draw_string(rx_buf, 3, 11); + draw_string(tx_buf, 32, 11); +} + + +void +draw_stats(struct Devices *ptr, const int gap) +{ + unsigned int k; + unsigned long* p; + unsigned int in, out; + unsigned long rx_max_his, tx_max_his; + unsigned long long rx_max, tx_max; + unsigned int size; + + if(bit_get(CFG_SHOWMAX)) + size = 35; /* with max bar mode */ + else + size = 41; /* without max bar */ + + if(bit_get(CFG_MODE)) + { + /* bytes mode */ + in = 0; + out = 1; + rx_max_his = ptr->ib_max_his; + tx_max_his = ptr->ob_max_his; + } + else + { + /* packets mode */ + in = 2; + out = 3; + rx_max_his = ptr->ip_max_his; + tx_max_his = ptr->op_max_his; + } + + /* find maximum value in screen history */ + rx_max = tx_max = 0; + p = (unsigned long*)ptr->his; + for(k = 0; k < 58; k++) + { + rx_max = MAX(rx_max, p[in]); + tx_max = MAX(tx_max, p[out]); + p += 4; + } + + /* draw rx/tx rate */ + p = ptr->avg; + draw_rate(p[in], p[out], gap); + + if(bit_get(CFG_MAXSCREEN)) + draw_max(rx_max, tx_max); + else + draw_max(rx_max_his, tx_max_his); + + p = (unsigned long*)ptr->his; + (*drwFuncs[wmnd.wavemode].funcPtr)(p, in, out, size, rx_max, tx_max); + + /* copy connection time over the graph */ + if(bit_get(CFG_SHOWTIME) && wmnd.curdev->devstart) + copy_xpm_area(70, 36, 23, 7, 37, 46); +} + + +static void +led_control(const unsigned char led, const unsigned char mode) +{ + msg_dbg(__POSITION__, "led: %02x[%02x]", led, mode); + switch (led) + { + case LED_POWER: + switch (bit_get(CFG_MODE)) + { + case 1: + /* bytes */ + if(mode) + /* on-line */ + copy_xpm_area(116, 65, 5, 7, 55, 4) + else + /* off-line */ + copy_xpm_area(122, 65, 5, 7, 55, 4); + break; + case 0: + /* packets */ + if(mode) + /* on-line */ + copy_xpm_area(128, 65, 5, 7, 55, 4) + else + /* off-line */ + copy_xpm_area(134, 65, 5, 7, 55, 4); + break; + } + break; + case LED_RX: + if(mode) + { + /* turn on */ + if(bit_get(LED_RX)) + { + msg_dbg(__POSITION__, "RX led already on"); + return; + } + copy_xpm_area(86, 70, 5, 4, 41, 4); + bit_set(LED_RX); + msg_dbg(__POSITION__, "RX led on"); + } + else + { + /* turn off */ + if(!bit_get(LED_RX)) + { + msg_dbg(__POSITION__, "RX led already off"); + return; + } + copy_xpm_area(92, 70, 5, 4, 41, 4); + bit_off(LED_RX); + msg_dbg(__POSITION__, "RX led off"); + } + break; + case LED_TX: + if(mode) + { + /* turn on */ + if(bit_get(LED_TX)) + { + msg_dbg(__POSITION__, "TX led already on"); + return; + } + copy_xpm_area(86, 65, 5, 4, 48, 4); + bit_set(LED_TX); + msg_dbg(__POSITION__, "TX led on"); + } + else + { + /* turn off */ + if(!bit_get(LED_TX)) + { + msg_dbg(__POSITION__, "TX led already off"); + return; + } + copy_xpm_area(92, 65, 5, 4, 48, 4); + bit_off(LED_TX); + msg_dbg(__POSITION__, "TX led off"); + } + break; + } +} + + +void +draw_interface(void) +{ + int i; + int c; + int k = 3; + char temp[7]; + char* cur_name = wmnd.curdev->name; + int cur_namelen = strlen(cur_name); + + /* refresh */ + copy_xpm_area(65, 54, 38, 9, 3, 3); + led_control(LED_POWER, bit_get(RUN_ONLINE)); + + /* + * little modify to handle names shorter than 4 chars and minor bugfix + * for names shorter than 6 chars (memory overwrite) + */ + if(bit_get(CFG_SHORTNAME)) + { + strncpy(temp, cur_name, (cur_namelen<4)?cur_namelen:3); + temp[3] = (cur_namelen < 4)? '\0': cur_name[cur_namelen - 1]; + temp[4] = '\0'; + } + else + { + if(cur_namelen > 6) + cur_namelen = 6; + strncpy(temp, cur_name, cur_namelen); + temp[cur_namelen] = '\0'; + } + + for(i = 0; temp[i]; i++) + { + c = temp[i]; + if(c >= '0' && c <= '9') { + c -= '0'; + copy_xpm_area(c * 6, 65, 6, 9, k, 3); + k += 6; + } else { + if(c >= 'a' && c <= 'z') + c = c - 'a' + 'A'; + c -= 'A'; + copy_xpm_area(c * 6, 75, 6, 9, k, 3); + k += 6; + } + } +} + + +void +reaper(int sig) +{ + int dummy; + wait(&dummy); +} + + +void +usage(void) +{ + int cnt = 0; + + fprintf(stderr, + "wmnd - WindowMaker Network Devices %s\n\n" + "usage:\n" + " -b base 2 scale (no fractions)\n" + " -c tx color\n" + " -C rx color\n" + " -L middle line color\n" + " -d \n" + " -g \n" + " -h this help screen\n" + " -i select this interface at startup\n" + " -l start using long device names\n" + " -m start with max values hidden\n" + " -M use max values from the entire history\n" + " -f read config instead of ~/.wmndrc\n" + " -F don't parse ~/.wmndrc\n" + " -r refresh rate in microseconds\n" + " -s scroll rate in tenth of seconds\n" + " -S number of samples to average for the speed indicator\n" + " -t start without displaying time\n" + " -n Use instead of 'wmnd' for the window name\n" + " -v print the version number\n" + " -q be less verbose\n" + " -Q enable verbosity\n" + " -o smoothing factor (0-1)\n" + " -a fixed max scale at \n" + " -w select display mode (see below)\n" + " -D specify a driver to use\n" + " -I tell to driver/s the interface to monitor\n\n" + "builtin drivers: ", WMND_VERSION); + + /* display builtin drivers */ + while(drivers_table[cnt].driver_name) + { + if(drivers_table[cnt+1].driver_name) + fprintf(stderr, "%s, ", drivers_table[cnt].driver_name); + else + fprintf(stderr, "%s.\n", drivers_table[cnt].driver_name); + cnt++; + } + + /* display builtin display modes */ + fprintf(stderr, "builtin display modes: "); + cnt = 0; + while(drwFuncs[cnt].funcName) + { + if(drwFuncs[cnt + 1].funcName) + fprintf(stderr,"%s, ",drwFuncs[cnt].funcName); + else + fprintf(stderr,"%s.\n",drwFuncs[cnt].funcName); + cnt++; + } +} + + +void +printversion(void) +{ + printf("%s\n", WMND_VERSION); +} + + +int +devices_init(const char* driver, const char* interface) +{ + /* + * devices init, initializes all drivers/devices + * return: 0 on success, 1 on error + */ + + int cnt = -1; + int devnum; + int in_loop0; + struct Devices *prt; + struct Devices *aftPrt; + struct Devices *tmpPrt; + wmnd.nr_devices = 0; + + /* creating and empy first device */ + msg_dbg(__POSITION__, "initializing devices"); + + devices = (struct Devices*)malloc(sizeof(struct Devices)); + devices->next = NULL; + prt = devices; + + /* starting all drivers */ + do + { + cnt++; + + /* check if driver is specified and check devicename */ + if(driver && strcmp(driver, drivers_table[cnt].driver_name)) + continue; + + /* device matches or driver is NULL, then check if driver is avaible */ + msg_dbg(__POSITION__, "probing %s", drivers_table[cnt].driver_name); + aftPrt = prt; + devnum = (*drivers_table[cnt].list_devices)(interface, prt); + drivers_table[cnt].status = devnum; + if(!devnum) + continue; + + /* driver is avaible, set up all driver's devices */ + for(in_loop0 = 0; in_loop0 < devnum; in_loop0++) + { + prt = prt->next; + prt->devnum = wmnd.nr_devices + in_loop0; + prt->drvnum = cnt; /* set the driver number */ + if(drivers_table[cnt].init_device && + (*drivers_table[cnt].init_device)(prt) == 1) /* init the device */ + { + msg_err("failed to initialize device %s,%d", + drivers_table[cnt].driver_name, in_loop0); + devnum--; + + /* last element in list */ + if(in_loop0 == devnum-1 || !devnum) + { + free(prt); + prt = aftPrt; + continue; + } + + /* remove device from list */ + tmpPrt = prt->next; + free(prt); + prt = tmpPrt; + + if(in_loop0 == devnum) continue; + aftPrt = prt; + in_loop0--; + } + else + { + /* initialize statistics for this device */ + int cnt; + unsigned long int ib, ob, ip, op; + + /* sample some stats to inizialize cleanly the graph */ + (*drivers_table[prt->drvnum].get_stats)(prt, &ip, &op, &ib, &ob); + + prt->ib_max_his = prt->ob_max_his = + prt->ip_max_his = prt->op_max_his = 0; + prt->ib_stat_last = ib; + prt->ob_stat_last = ob; + prt->ip_stat_last = ip; + prt->op_stat_last = op; + + /* cleaning history */ + for(cnt = 0; cnt < 58; cnt++) + memset(prt->his, 0, sizeof(prt->his)); + + /* clean average sampling buffers */ + prt->avgBuf[0] = ib; + prt->avgBuf[1] = ob; + prt->avgBuf[2] = ip; + prt->avgBuf[3] = op; + } + } + + /* all new devices are ok */ + wmnd.nr_devices += devnum; + } + while(drivers_table[cnt+1].driver_name); + + /* remove the first null element */ + prt = devices; + devices = prt->next; + free(prt); + + return (!wmnd.nr_devices); +} + + +void +devices_prev(void) +{ + /* + * devices_prev: cycles for the previous device. + */ + + struct Devices* tmp = devices; + + while(tmp->next && (wmnd.curdev == devices || tmp->next != wmnd.curdev)) + tmp = tmp->next; + + wmnd.curdev = tmp; +} + + +void +devices_select(const char* interface) +{ + /* + * devices_select: sets wmnd.curdev looking up a name + * if name is null, cycles for next device + */ + + struct Devices* prt = devices; + + if(interface) + { + /* searching for a device */ + wmnd.curdev = devices; + while(prt) + { + if(!strcmp(interface, prt->name)) + { + /* name matches */ + wmnd.curdev = prt; + break; + } + prt = prt->next; + } + } + else + { + /* switching active device */ + if(!wmnd.curdev->next) + wmnd.curdev = devices; /* last element, back to first */ + else + wmnd.curdev = wmnd.curdev->next; + } +} + + +void +devices_getstat(struct Devices *device, unsigned long* ip, unsigned long* op, + unsigned long* ib, unsigned long* ob) +{ + /* + * devices_getstat: run appropriate get_stats for device + */ + + int online = + (*drivers_table[device->drvnum].get_stats)(device, ip, op, ib, ob); + if(!online && device->online) + { + /* the device retuned back online, update the timestamp */ + time(&device->devstart); + } + else + if(online && !device->online) + { + /* device shutdown */ + device->devstart = 0; + } + + device->online = online; +} + + +void +devices_destroy(void) +{ + /* + * devices_destroy: sends destroy signal to all devices and frees devices + */ + + struct Devices *ptr; + int cnt; + + while(devices->next) + { + ptr = devices; + devices = devices->next; + if(drivers_table[ptr->drvnum].terminate_device) + (*drivers_table[ptr->drvnum].terminate_device)(ptr); + free(ptr->name); + free(ptr); + } + + for(cnt = 0; drivers_table[cnt].driver_name; ++cnt) + { + if(drivers_table[cnt].status && drivers_table[cnt].terminate_driver) + (*drivers_table[cnt].terminate_driver)(); + } +} diff --git a/dockapps/wmnd/src/wmnd.h b/dockapps/wmnd/src/wmnd.h new file mode 100644 index 0000000..07504b5 --- /dev/null +++ b/dockapps/wmnd/src/wmnd.h @@ -0,0 +1,165 @@ +/* + * wmnd: main program module, shared header + * Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" + * Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY. + */ + +#ifndef WMND_H +#define WMND_H + +#include "bits.h" /* portable bit functions */ + +/* picky time headers, for both time_t and timeval */ +#ifdef TIME_WITH_SYS_TIME +#include +#include +#else +#ifdef HAVE_SYS_TIME_H +#include +#else +#include +#endif +#endif + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +/* version number is now defined into config.h */ +#include "config.h" +#define WMND_VERSION PACKAGE_VERSION + +#define MAXBUF 256 + +#ifndef MIN +#define MIN(a, b) (((a) < (b))? (a): (b)) +#endif +#ifndef MAX +#define MAX(a, b) (((a) < (b))? (b): (a)) +#endif + + +struct Devices +{ + struct Devices* next; /* ptr to next structure */ + char* name; /* device name from /proc/net/dev */ + void* drvdata; /* driver data used by the driver */ + int devnum; /* overall device number */ + int drvnum; /* driver number */ + int online; /* 0 for online, 1 for offline */ + time_t devstart; /* device activity start, 0 for unavaible */ + + unsigned long avg[4]; /* average sampling - last samples */ + unsigned long avgBuf[4]; /* average sampling - buffers */ + + unsigned long his[59][4]; + unsigned long ib_stat_last; + unsigned long ob_stat_last; + unsigned long ip_stat_last; + unsigned long op_stat_last; + unsigned long ib_max_his; /* maximum input bytes in history */ + unsigned long ob_max_his; /* maximum output bytes in history */ + unsigned long ip_max_his; /* maximum input packets in history */ + unsigned long op_max_his; /* maximum output packets in history */ +}; + +struct var +{ + struct var* v_next; /* ptr to next structure */ + char* v_name; /* option name */ + char* v_value; /* option value */ +}; + +typedef struct { + unsigned int nr_devices; /* number of devices in list */ + _bits_type flags; /* big bit-mapped flags mask */ + unsigned int wavemode; /* type of wave graph */ + unsigned int nWavemodes; /* numbers of wave graph */ + struct Devices* curdev; /* current device */ + void /* scale function */ + (*scale)(unsigned char sign, unsigned long value, char* buf); + unsigned int refresh; /* speed of the refresh */ + unsigned int avgSteps; /* number of steps to average */ + unsigned int avgRSteps; /* number of remaining steps */ + float smooth; /* smoothing factor */ + unsigned long scroll; /* speed of the graph scrolling */ + unsigned long maxScale; /* fixed max scale */ +} DevTable; + +typedef struct +{ + unsigned long txColor; + unsigned long rxColor; + unsigned long mdColor; +} stdCols; + +typedef struct +{ + Display* d; + int xfd; + int screen; + Window root; + Window win; + Window iconwin; + Pixmap pixmap; + Pixmap mask; + GC gc; + int width; + int height; + int x; + int y; + int button; + int update; + stdCols stdColors; /* standard allocated colors */ +} Dockapp; + +/* I don't like this very much.. */ +extern Dockapp dockapp; +extern DevTable wmnd; + +typedef struct +{ + int enable; + int x; + int y; + int width; + int height; +} MRegion; + +/* store all configuration in one place */ +#define RUN_ONLINE 3 /* current device is online */ +#define LED_POWER 4 /* next 3 are for different leds */ +#define LED_RX 5 +#define LED_TX 6 +#define CFG_SHOWTIME 15 +#define CFG_MAXSCREEN 16 /* 1: yes 0: no, max history */ +#define CFG_SHORTNAME 17 /* 1: use 0: no */ +#define CFG_MODE 18 /* 1: bytes 0: packets */ +#define CFG_SHOWMAX 19 /* 1: yes 0: no */ + +/* region definitions */ +#define REG_NOREG (-1u) +#define REG_DEV 0 +#define REG_RT_PB 1 +#define REG_MAIN 2 +#define REG_SCALE_RX 3 +#define REG_SCALE_TX 4 +#define REG_SCRIPT 5 + +/* bit ops on wmnd.flags */ +#define bit_set(n) onbit(&wmnd.flags, n) +#define bit_off(n) offbit(&wmnd.flags, n) +#define bit_tgl(n) invbit(&wmnd.flags, n) +#define bit_get(n) getbit(&wmnd.flags, n) + +#endif diff --git a/dockapps/wmnd/stamp-h1 b/dockapps/wmnd/stamp-h1 new file mode 100644 index 0000000..4547fe1 --- /dev/null +++ b/dockapps/wmnd/stamp-h1 @@ -0,0 +1 @@ +timestamp for config.h diff --git a/dockapps/wmweather+/COPYING b/dockapps/wmweather+/COPYING new file mode 100644 index 0000000..d60c31a --- /dev/null +++ b/dockapps/wmweather+/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/dockapps/wmweather+/ChangeLog b/dockapps/wmweather+/ChangeLog new file mode 100644 index 0000000..8038aba --- /dev/null +++ b/dockapps/wmweather+/ChangeLog @@ -0,0 +1,295 @@ +wmweather+ (2.18) unstable; urgency=medium + + * Fix compilation for GCC 10 + * Don't auto-generate date in manpage (Debian doesn't like that) + + -- Brad Jorsch Fri, 24 Apr 2020 14:11:46 -0400 + +wmweather+ (2.17) unstable; urgency=medium + + * Add User-Agent when downloading files. + * Hook SIGABRT to better delete temp files on exit. + * Fix warning right-click handling. + * Add "tsunami" and "tsunami_seismic_msg", although they seem to need their + own warning zones. + + -- Brad Jorsch Sun, 05 Mar 2017 17:22:08 -0500 + +wmweather+ (2.16) unstable; urgency=medium + + * Fix resource leak in wmweather+.c + * Make build reproducable. Patch from Chris Lamb via Debian bug 833440. + * Update METAR and warning URLs + * Fix numsymbols in font.c + + -- Brad Jorsch Sat, 24 Dec 2016 10:04:32 -0500 + +wmweather+ (2.15) unstable; urgency=medium + + * Fix mkgmtime to not crash if passed a tm_mon > 11 + + -- Brad Jorsch Tue, 31 Dec 2013 19:36:42 -0500 + +wmweather+ (2.14) unstable; urgency=medium + + * Update curl code to handle the possiblity of curl_multi_fdset returning -1 + in maxfds. + * Clean up a few warnings from -Werror. + * Use automake 1.14 instead of 1.10. + + -- Brad Jorsch Sun, 08 Dec 2013 15:20:15 -0500 + +wmweather+ (2.13) unstable; urgency=low + + * Change the res_class to "DockApp". + * Escape dashes in the manpage. + + -- Brad Jorsch Wed, 15 Sep 2010 10:10:34 -0400 + +wmweather+ (2.12) unstable; urgency=low + + * Remove curl handle from the multihandle before closing the file + descriptor and before doing the callbacks. Otherwise we might get another + completion message, which will cause double-free errors and such. + + -- Brad Jorsch Tue, 17 Aug 2010 15:27:37 -0400 + +wmweather+ (2.11) unstable; urgency=low + + * Apply 01_wmweather+_patch_displaydelay.dpatch from Debian + * Fix Debian bug #419644 in a different way: First, change snprintf and + vsnprintf handling to be more like AC_FUNC_MALLOC handles malloc. Second, + just always call FUNC_VSNPRINTF_LIBOBJ instead of being conditional on + snprintf. + + -- Brad Jorsch Fri, 18 Jan 2008 10:30:05 -0500 + +wmweather+ (2.10) unstable; urgency=low + + * Remove libwww, add libcurl. + + -- Brad Jorsch Sun, 06 Jan 2008 22:42:07 -0500 + +wmweather+ (2.9) unstable; urgency=low + + * Add support for the new FW/SC distinction in some of the forecast data. + Also do it for METAR, even though the two are supposedly the same there. + * Fix some nasty double-free bugs in download.c if terminate_handler were to + be called before HTLoadAbsolute/HTPostAbsolute returned. + + -- Brad Jorsch Mon, 17 May 2004 23:55:48 -0400 + +wmweather+ (2.8) unstable; urgency=low + + * The downloader now tracks active downloads, and refuses to start a second + download when one is already active for a particular target file. Also, + downloads now time out after 10 minutes. + + -- Brad Jorsch Mon, 29 Mar 2004 22:22:31 -0500 + +wmweather+ (2.7) unstable; urgency=low + + * Oops, forgot to fix the manpage when the URIs changed in v2.5. + + -- Brad Jorsch Fri, 21 Nov 2003 20:55:07 -0500 + +wmweather+ (2.6) unstable; urgency=low + + * Use atexit() to clean up downloaded files. + * Alter forecast parsers to be less picky. 'AVN' and 'MRF' are changing to + 'GFS' and 'GFSX' on Dec 16, and looking for just "MOS GUIDANCE" instead of + "xxx MOS GUIDANCE" should work about as well. + + -- Brad Jorsch Fri, 21 Nov 2003 20:55:07 -0500 + +wmweather+ (2.5) unstable; urgency=low + + * Added the "-display-mode" option. This fixes part of Debian bug #200110. + * Tack the PID on to downloaded files, so multiple instances of wmweather+ + won't stomp on each other. This fixes the rest of Debian bug #200110 + * Rewrote the longitude-guessing code, now it just depends on time_t being + an arithmetic type (which mkgmtime() did already). + * Replace the old b0rken/mktime.c with the one from GNU tar. The old one has + a SysVism that wasn't working too well for BSD people, who need the + replacement because mktime() on BSD fails for 'impossible' times (i.e. the + hour skipped when DST begins). + * Change forecast URIs, because NOAA changed them. + * Add a 'forget-warning-zones' option, which IMO adequately covers Debian + bug #214482. And it allows you to override zones on the command line too. + + -- Brad Jorsch Tue, 28 Oct 2003 13:35:24 -0500 + +wmweather+ (2.4) unstable; urgency=low + + * Remove a bunch of unused variables. + * Initialize a few things the compiler can't tell will always be initialized + before they're used. + - dock.c update_dock(): i will be initialized if either j&1 or j&2, and + only used if j&3. j is not volatile, so this will always initialize i. + - forecast.c locate_current(): current is set to NULL at the beginning of + the function. curdiff is set whenever current is, and is only used when + current!=NULL. + * Added .nf commands to the manpage, so man won't complain about long + pseudo-URLs (Fixes Debian bug #184306). + * Fixed various assumptions about char signedness (i.e. I made them + explicitly signed char) (Fixes Debian bug #181245). + * Added multiple warning zones, so for example you can look at both kyz036 + and kyc209 for warnings (Partially fixes Debian bug #185651). + - The summary isn't so much a warning summary, as a summary of the weather + over the past day or so. + - Unless those "warnings not in the expected place" were due to the kyc209 + versus kyz036 issue, I can't determine where the files might actually + have been. Sorry. + * Updated some of the docs. + * autoconf changed the name of the malloc cache variable... + * Added a replacement mktime. Hopefully it works right. + + -- Brad Jorsch Sat, 22 Mar 2003 12:45:10 -0500 + +wmweather+ (2.3) unstable; urgency=low + + * Fix a compiler warning, thanks to Martin Godisch + * Remove the debian directory at the request of the Debian maintainer; if + you want those files, they are available at debian.org + * Removed documentation of useless -geometry option + * Fixed crash on right-click when no warning zone was given + + -- Brad Jorsch Tue, 28 Jan 2003 12:47:07 -0500 + +wmweather+ (2.2) unstable; urgency=low + + * It seems I forgot to create a b0rken/malloc.c + + -- Brad Jorsch Tue, 1 Oct 2002 16:36:12 -0400 + +wmweather+ (2.1) unstable; urgency=low + + * Make the 'malformed location' error message more clear. + * Fix stupid crash in forecast.c (didn't wrap properly when iterating over + an array) + * Fix is_forecast_current, mktime wants 0-based month. + + -- Brad Jorsch Mon, 30 Sep 2002 15:02:29 -0400 + +wmweather+ (2.0) unstable; urgency=low + + * In no particular order: + * Animations can now display a label indicating the percent being shown. The + forecast window uses this extensively. + * All URIs can now be changed via command line/config file options. + * Added ./configure checks for b0rken snprintf/vsnprintf. + * Added ETA forecasts. These are mixed in with the AVN forecasts in the + rotation, sorted by time. + * Added display of the forecast type, which shows up at the bottom of the + forecast window where wind chill, heat index, and so on appear. + * When not animating, the percent chance cutoff can be adjusted using the + mouse wheel (as mapped to buttons 4 and 5). + * Made all forecast and warning options optional. Thus, if you don't specify + e.g. avn-station, no AVN forecasts will be downloaded. + * Regularized options: -radar is now -radar-uri, and -zone is now + -warning-zone. + * Support for POST for the radar image. + * Support for system-wide configs. + * -email is now optional too. + * Lots of code cleanups. + + -- Brad Jorsch Sun, 22 Sep 2002 14:25:58 -0400 + +wmweather+ (1.11) unstable; urgency=low + + * Fix a few URIs. + * Fix rounding errors in the pressure conversion functions (returned floats + don't need to be rounded, damnit!) + * Fix a bug in the warning code (displaying the wrong warnings) + + -- Brad Jorsch Sun, 15 Sep 2002 18:35:18 -0400 + +wmweather+ (1.10) unstable; urgency=low + + * Handle libwww fds going bad, so the select will still function. + + -- Brad Jorsch Sun, 8 Sep 2002 11:22:05 -0400 + +wmweather+ (1.9) unstable; urgency=low + + * Remove dependancy on libftp, we use libwww's FTP module now. + * Rewrote the file downloader to take advantage of libwww's callbacks + (instead of waiting for the file to appear). + * Adjusted the m4 files to be more informative, and to check for libwraster + in /usr/X11R6 (stupid place for it, but oh well). + * Add some international METAR support. Mainly things reported in different + units. + * Make dock.c signals safe! + + -- Brad Jorsch Thu, 5 Sep 2002 22:01:42 -0400 + +wmweather+ (1.8) unstable; urgency=low + + * Added failure conditions to configure.ac. + * Actually use LIBOBJS. Change to automake-1.6 since 1.4 is b0rken. + + -- Brad Jorsch Sun, 1 Sep 2002 20:31:55 -0400 + +wmweather+ (1.7) unstable; urgency=low + + * Initial Debianization + * Autoconfiscated + * Updated wmgeneral from wmpasman + * Fixed a bug in createXBMfromXPM + * Use createXBMfromXPM to get the mask. It's easier. + + -- Brad Jorsch Thu, 15 Aug 2002 15:31:46 -0400 + +version 1.6 + + * Apparently, AVN uses JUNE instead of JUN. Let's guess it uses JULY too + while we're at it. + + -- Tue, 18 Jun 2002 08:52:27 -0500 + +version 1.5 + + * Fixed heat index so it'll display when the temp is below 100 ;) + + -- Tue, 16 Apr 2002 21:22:07 -0500 + +version 1.4 + + * Changed the METAR display around a little bit. Local time is now primary. + * Changed the warning output to indicate the file the warning is from. + * minor code cleanups + + -- Sat, 8 Sep 2001 17:14:32 -0500 + +version 1.3 + + * Display a moon instead of a sun when it's supposed to be night. We even + calculate a rough moon phase and calculate the solar zenith to determine + whether the sun is up or not. + * Adjusted some of the graphics again. master is even smaller now! + * Make the forecast bottom line change priority every few seconds (in other + words, if more than one line could be displayed it will alternate between + them). + + -- Thu, 6 Sep 2001 22:55:10 -0500 + +version 1.2 + + * Fixed SEPT bug + + -- Sat, 1 Sep 2001 21:10:22 -0500 + +version 1.1 + + * Made the master xpm smaller. + * Changed the font handling so only 1 copy of the characters is needed. + * Changed some of the wmgeneral stuff more. + + -- Tue, 28 Aug 2001 12:46:54 -0500 + +version 1.0 + + * Wrote the thing over the past few weeks. I probably should have been + adding changelog entries all along, oh well. + + -- Tue, 21 Aug 2001 18:36:32 -0500 diff --git a/dockapps/wmweather+/HINTS b/dockapps/wmweather+/HINTS new file mode 100644 index 0000000..b3f55b3 --- /dev/null +++ b/dockapps/wmweather+/HINTS @@ -0,0 +1,74 @@ +Hints for wmweather+ + +(blatantly copied from the Hints for WMPPP ;) + +Generic +-------------------------------------------------------------- +wmweather+ supports various commandline options, 'wmweather+ -h' prints +help about them. Actually, any unrecognized option will print the same help. + +WindowMaker +-------------------------------------------------------------- +WindowMaker users simply drag and drop the wmweather+ dock.app on +the WindowMaker Dock (preferred) or the Clip. + +Now press the rightmouse button on wmweather+'s outer edges and +select "Settings..." from the popup menu that appears. + +Enable the 'Start when WindowMaker is started' option, then +click on the 'OK' button in the Docked Applications Panel. + +Afterstep +-------------------------------------------------------------- +Afterstep users put something like this in their .steprc +"Wharf wmweather+ - MaxSwallow "wmweather+" wmweather+ &" + +Other WindowManagers +-------------------------------------------------------------- +For other windowmanagers, wmweather+ runs nicely as a 64x64 +pixel shaped icon on your desktop. + +BTW, FVWM can swallow it too, so we've heard ;-) + +Dragging wmweather+ +-------------------------------------------------------------- +Be sure to drag wmweather+ on it's outer edges, wmweather+ is a bit +picky due to the large gfx pixmap it keeps ;-) + +Network Usage +-------------------------------------------------------------- +wmweather+ is really rather useless without network access, since it +has to download everything it wants to display... + +Command Line +-------------------------------------------------------------- +Remember to quote your arguments properly. For example, this command: + wmweather+ -s KORD -location 48N 78W +Will be interpreted as passing the value "48N" to the "-location" option. +wmweather+ will then complain that the location is badly formed. Instead, try +quoting any options containing spaces like this: + wmweather+ -s KORD -location "48N 78W" + +Config File +-------------------------------------------------------------- +You may have noticed wmweather+ has an insane number of command line +options. You may also have noticed the comment in the manpage along the +lines of "The configuration file is simply one option (with value if +necessary) per line, leading dashes optional. Empty lines and lines +beginning with the '#' character are ignored." This means just what it says: +your configuration file should contain your command line options, with one +option per line. + +See the file example.conf for a sample configuration file. + +Font Size +-------------------------------------------------------------- +If you think the fonts are too small, you are welcome to redesign the +display and the font. Please keep in mind the following constraints: + * The window size is limited to 64x64. Taking off the border, that means + you get about 54x54 pixels to work with. + * I require the app to display at least the station ID, the effective + date and time of the observarion/forecast, the weather graphic, the + temperature (and high and low for forecasts), the relative humidity, and + the wind speed+direction. At least one extra line is needed for + pressure/heat index/wind chill/precip amount as appropriate. diff --git a/dockapps/wmweather+/Makefile.am b/dockapps/wmweather+/Makefile.am new file mode 100644 index 0000000..0a170b6 --- /dev/null +++ b/dockapps/wmweather+/Makefile.am @@ -0,0 +1,21 @@ +AUTOMAKE_OPTIONS = foreign +ACLOCAL_AMFLAGS = -I m4 + +SUBDIRS = b0rken m4 wmgeneral + +bin_PROGRAMS = wmweather+ + +wmweather__SOURCES = animation.c animation.h avn.c avn.h convert.c convert.h \ + die.c die.h diff.c diff.h dock.c dock.h download.c download.h \ + eta.c eta.h font.c font.h forecast.c forecast.h getLine.c getLine.h \ + metar.c metar.h moon.c moon.h mrf.c mrf.h radar.c radar.h subst.c \ + subst.h sunzenith.c sunzenith.h warnings.c warnings.h wmweather+.c \ + wmweather+.h characters.xpm wmweather_master.xpm +wmweather__LDADD = wmgeneral/libwmgeneral.a wmgeneral/libwmgeneral-x11.a b0rken/libb0rken.a @XLIBS@ + +man_MANS = wmweather+.1 +EXTRA_DIST = HINTS bootstrap example.conf $(man_MANS) + +reallyclean: distclean + -rm -rf autom4te.cache + -rm Makefile.in */Makefile.in aclocal.m4 config.h.in* config.guess config.sub configure install-sh ltmain.sh missing mkinstalldirs stamp-h.in diff --git a/dockapps/wmweather+/Makefile.in b/dockapps/wmweather+/Makefile.in new file mode 100644 index 0000000..10d8885 --- /dev/null +++ b/dockapps/wmweather+/Makefile.in @@ -0,0 +1,1057 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +bin_PROGRAMS = wmweather+$(EXEEXT) +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libpcre.m4 \ + $(top_srcdir)/m4/libwraster.m4 $(top_srcdir)/m4/snprintf.m4 \ + $(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/xpm.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" +PROGRAMS = $(bin_PROGRAMS) +am_wmweather__OBJECTS = animation.$(OBJEXT) avn.$(OBJEXT) \ + convert.$(OBJEXT) die.$(OBJEXT) diff.$(OBJEXT) dock.$(OBJEXT) \ + download.$(OBJEXT) eta.$(OBJEXT) font.$(OBJEXT) \ + forecast.$(OBJEXT) getLine.$(OBJEXT) metar.$(OBJEXT) \ + moon.$(OBJEXT) mrf.$(OBJEXT) radar.$(OBJEXT) subst.$(OBJEXT) \ + sunzenith.$(OBJEXT) warnings.$(OBJEXT) wmweather+.$(OBJEXT) +wmweather__OBJECTS = $(am_wmweather__OBJECTS) +wmweather__DEPENDENCIES = wmgeneral/libwmgeneral.a \ + wmgeneral/libwmgeneral-x11.a b0rken/libb0rken.a +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/animation.Po ./$(DEPDIR)/avn.Po \ + ./$(DEPDIR)/convert.Po ./$(DEPDIR)/die.Po ./$(DEPDIR)/diff.Po \ + ./$(DEPDIR)/dock.Po ./$(DEPDIR)/download.Po ./$(DEPDIR)/eta.Po \ + ./$(DEPDIR)/font.Po ./$(DEPDIR)/forecast.Po \ + ./$(DEPDIR)/getLine.Po ./$(DEPDIR)/metar.Po \ + ./$(DEPDIR)/moon.Po ./$(DEPDIR)/mrf.Po ./$(DEPDIR)/radar.Po \ + ./$(DEPDIR)/subst.Po ./$(DEPDIR)/sunzenith.Po \ + ./$(DEPDIR)/warnings.Po ./$(DEPDIR)/wmweather+.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(wmweather__SOURCES) +DIST_SOURCES = $(wmweather__SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +man1dir = $(mandir)/man1 +NROFF = nroff +MANS = $(man_MANS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) \ + config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in COPYING \ + ChangeLog README compile depcomp install-sh missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBCURL = @LIBCURL@ +LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LINK_XPM = @LINK_XPM@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POW_LIB = @POW_LIB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WMGENERAL_GUI = @WMGENERAL_GUI@ +XLIBS = @XLIBS@ +XMKMF = @XMKMF@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +_libcurl_config = @_libcurl_config@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign +ACLOCAL_AMFLAGS = -I m4 +SUBDIRS = b0rken m4 wmgeneral +wmweather__SOURCES = animation.c animation.h avn.c avn.h convert.c convert.h \ + die.c die.h diff.c diff.h dock.c dock.h download.c download.h \ + eta.c eta.h font.c font.h forecast.c forecast.h getLine.c getLine.h \ + metar.c metar.h moon.c moon.h mrf.c mrf.h radar.c radar.h subst.c \ + subst.h sunzenith.c sunzenith.h warnings.c warnings.h wmweather+.c \ + wmweather+.h characters.xpm wmweather_master.xpm + +wmweather__LDADD = wmgeneral/libwmgeneral.a wmgeneral/libwmgeneral-x11.a b0rken/libb0rken.a @XLIBS@ +man_MANS = wmweather+.1 +EXTRA_DIST = HINTS bootstrap example.conf $(man_MANS) +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +.SUFFIXES: .c .o .obj +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @test -f $@ || rm -f stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +wmweather+$(EXEEXT): $(wmweather__OBJECTS) $(wmweather__DEPENDENCIES) $(EXTRA_wmweather__DEPENDENCIES) + @rm -f wmweather+$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(wmweather__OBJECTS) $(wmweather__LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/animation.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/avn.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/convert.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/die.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/diff.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dock.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/download.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/eta.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/font.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/forecast.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getLine.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/metar.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/moon.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mrf.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/radar.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subst.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sunzenith.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/warnings.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmweather+.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +install-man1: $(man_MANS) + @$(NORMAL_INSTALL) + @list1=''; \ + list2='$(man_MANS)'; \ + test -n "$(man1dir)" \ + && test -n "`echo $$list1$$list2`" \ + || exit 0; \ + echo " $(MKDIR_P) '$(DESTDIR)$(man1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(man1dir)" || exit 1; \ + { for i in $$list1; do echo "$$i"; done; \ + if test -n "$$list2"; then \ + for i in $$list2; do echo "$$i"; done \ + | sed -n '/\.1[a-z]*$$/p'; \ + fi; \ + } | while read p; do \ + if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; echo "$$p"; \ + done | \ + sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ + sed 'N;N;s,\n, ,g' | { \ + list=; while read file base inst; do \ + if test "$$base" = "$$inst"; then list="$$list $$file"; else \ + echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ + $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ + fi; \ + done; \ + for i in $$list; do echo "$$i"; done | $(am__base_list) | \ + while read files; do \ + test -z "$$files" || { \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ + done; } + +uninstall-man1: + @$(NORMAL_UNINSTALL) + @list=''; test -n "$(man1dir)" || exit 0; \ + files=`{ for i in $$list; do echo "$$i"; done; \ + l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ + sed -n '/\.1[a-z]*$$/p'; \ + } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ + -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ + dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(PROGRAMS) $(MANS) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f ./$(DEPDIR)/animation.Po + -rm -f ./$(DEPDIR)/avn.Po + -rm -f ./$(DEPDIR)/convert.Po + -rm -f ./$(DEPDIR)/die.Po + -rm -f ./$(DEPDIR)/diff.Po + -rm -f ./$(DEPDIR)/dock.Po + -rm -f ./$(DEPDIR)/download.Po + -rm -f ./$(DEPDIR)/eta.Po + -rm -f ./$(DEPDIR)/font.Po + -rm -f ./$(DEPDIR)/forecast.Po + -rm -f ./$(DEPDIR)/getLine.Po + -rm -f ./$(DEPDIR)/metar.Po + -rm -f ./$(DEPDIR)/moon.Po + -rm -f ./$(DEPDIR)/mrf.Po + -rm -f ./$(DEPDIR)/radar.Po + -rm -f ./$(DEPDIR)/subst.Po + -rm -f ./$(DEPDIR)/sunzenith.Po + -rm -f ./$(DEPDIR)/warnings.Po + -rm -f ./$(DEPDIR)/wmweather+.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-man + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: install-man1 + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f ./$(DEPDIR)/animation.Po + -rm -f ./$(DEPDIR)/avn.Po + -rm -f ./$(DEPDIR)/convert.Po + -rm -f ./$(DEPDIR)/die.Po + -rm -f ./$(DEPDIR)/diff.Po + -rm -f ./$(DEPDIR)/dock.Po + -rm -f ./$(DEPDIR)/download.Po + -rm -f ./$(DEPDIR)/eta.Po + -rm -f ./$(DEPDIR)/font.Po + -rm -f ./$(DEPDIR)/forecast.Po + -rm -f ./$(DEPDIR)/getLine.Po + -rm -f ./$(DEPDIR)/metar.Po + -rm -f ./$(DEPDIR)/moon.Po + -rm -f ./$(DEPDIR)/mrf.Po + -rm -f ./$(DEPDIR)/radar.Po + -rm -f ./$(DEPDIR)/subst.Po + -rm -f ./$(DEPDIR)/sunzenith.Po + -rm -f ./$(DEPDIR)/warnings.Po + -rm -f ./$(DEPDIR)/wmweather+.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-binPROGRAMS uninstall-man + +uninstall-man: uninstall-man1 + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--depfiles am--refresh check check-am clean \ + clean-binPROGRAMS clean-cscope clean-generic cscope \ + cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ + dist-zstd distcheck distclean distclean-compile \ + distclean-generic distclean-hdr distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-binPROGRAMS install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-man1 install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-binPROGRAMS \ + uninstall-man uninstall-man1 + +.PRECIOUS: Makefile + + +reallyclean: distclean + -rm -rf autom4te.cache + -rm Makefile.in */Makefile.in aclocal.m4 config.h.in* config.guess config.sub configure install-sh ltmain.sh missing mkinstalldirs stamp-h.in + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/dockapps/wmweather+/README b/dockapps/wmweather+/README new file mode 100644 index 0000000..5957efb --- /dev/null +++ b/dockapps/wmweather+/README @@ -0,0 +1,43 @@ +COMPILATION +=========== + +You will need the following libraries (with proper headers) installed +in order to compile this app. If you're using Debian, try packages like +the ones indicated. + libwraster libwraster2, libwraster2-dev + libpcre libpcre3, libpcre3-dev + libm libc6, libc6-dev + libXpm xlibs, xlibs-dev + libX11 xlibs, xlibs-dev + libcurl libcurl4, libcurl4-dev + +For the most part, you should just have to do "./configure && make install" +and the thing will build everything and install it. + +The only really interesting compile-time parameters would be the P and X +variables in animation.c, if you don't like the 10-second cycle or +something. + +If you get errors about a missing libwraster, check the following: + 1) Do you have both the library AND the header installed? If the command + "locate wraster.h" doesn't come back with a header file in one of the + normal places, you'll have trouble. + 2) Check for a line like the following in your ./configure output: + checking if libwraster is wanted... yes: libraries /usr/lib includes /usr/include + In this case, we will look for the files /usr/lib/libwraster.so and + /usr/include/wraster.h. If for some reason you have these files in a + place other than ./configure looks for them, use the --with-libwraster + option to specify the proper prefix. If you have something really dumb + like /usr/include/wraster.h and /usr/X11R6/lib/libwraster.so, try adding + specific -I and -L options to your CFLAGS variable. + +If you get errors about a missing pcre.h, and you have your header in +/usr/include/pcre/pcre.h instead of /usr/include/pcre.h, you will have to +add "-I/usr/include/pcre" to your CFLAGS variable when running ./configure. + +If you get an error about anything missing in the b0rken subdirectory, the +problem is most likely that some library function or another is broken on +your system, configure detected this fact, a replacement was requested, and +no replacement is available. You are welcome to submit a patch. + +For run-time hints, please see the HINTS file. diff --git a/dockapps/wmweather+/aclocal.m4 b/dockapps/wmweather+/aclocal.m4 new file mode 100644 index 0000000..ae358f5 --- /dev/null +++ b/dockapps/wmweather+/aclocal.m4 @@ -0,0 +1,1443 @@ +# generated automatically by aclocal 1.16.2 -*- Autoconf -*- + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +#*************************************************************************** +# _ _ ____ _ +# Project ___| | | | _ \| | +# / __| | | | |_) | | +# | (__| |_| | _ <| |___ +# \___|\___/|_| \_\_____| +# +# Copyright (C) 2006, David Shaw +# +# This software is licensed as described in the file COPYING, which +# you should have received as part of this distribution. The terms +# are also available at https://curl.haxx.se/docs/copyright.html. +# +# You may opt to use, copy, modify, merge, publish, distribute and/or sell +# copies of the Software, and permit persons to whom the Software is +# furnished to do so, under the terms of the COPYING file. +# +# This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY +# KIND, either express or implied. +# +# LIBCURL_CHECK_CONFIG ([DEFAULT-ACTION], [MINIMUM-VERSION], +# [ACTION-IF-YES], [ACTION-IF-NO]) +# ---------------------------------------------------------- +# David Shaw May-09-2006 +# +# Checks for libcurl. DEFAULT-ACTION is the string yes or no to +# specify whether to default to --with-libcurl or --without-libcurl. +# If not supplied, DEFAULT-ACTION is yes. MINIMUM-VERSION is the +# minimum version of libcurl to accept. Pass the version as a regular +# version number like 7.10.1. If not supplied, any version is +# accepted. ACTION-IF-YES is a list of shell commands to run if +# libcurl was successfully found and passed the various tests. +# ACTION-IF-NO is a list of shell commands that are run otherwise. +# Note that using --without-libcurl does run ACTION-IF-NO. +# +# This macro #defines HAVE_LIBCURL if a working libcurl setup is +# found, and sets @LIBCURL@ and @LIBCURL_CPPFLAGS@ to the necessary +# values. Other useful defines are LIBCURL_FEATURE_xxx where xxx are +# the various features supported by libcurl, and LIBCURL_PROTOCOL_yyy +# where yyy are the various protocols supported by libcurl. Both xxx +# and yyy are capitalized. See the list of AH_TEMPLATEs at the top of +# the macro for the complete list of possible defines. Shell +# variables $libcurl_feature_xxx and $libcurl_protocol_yyy are also +# defined to 'yes' for those features and protocols that were found. +# Note that xxx and yyy keep the same capitalization as in the +# curl-config list (e.g. it's "HTTP" and not "http"). +# +# Users may override the detected values by doing something like: +# LIBCURL="-lcurl" LIBCURL_CPPFLAGS="-I/usr/myinclude" ./configure +# +# For the sake of sanity, this macro assumes that any libcurl that is +# found is after version 7.7.2, the first version that included the +# curl-config script. Note that it is very important for people +# packaging binary versions of libcurl to include this script! +# Without curl-config, we can only guess what protocols are available, +# or use curl_version_info to figure it out at runtime. + +AC_DEFUN([LIBCURL_CHECK_CONFIG], +[ + AH_TEMPLATE([LIBCURL_FEATURE_SSL],[Defined if libcurl supports SSL]) + AH_TEMPLATE([LIBCURL_FEATURE_KRB4],[Defined if libcurl supports KRB4]) + AH_TEMPLATE([LIBCURL_FEATURE_IPV6],[Defined if libcurl supports IPv6]) + AH_TEMPLATE([LIBCURL_FEATURE_LIBZ],[Defined if libcurl supports libz]) + AH_TEMPLATE([LIBCURL_FEATURE_ASYNCHDNS],[Defined if libcurl supports AsynchDNS]) + AH_TEMPLATE([LIBCURL_FEATURE_IDN],[Defined if libcurl supports IDN]) + AH_TEMPLATE([LIBCURL_FEATURE_SSPI],[Defined if libcurl supports SSPI]) + AH_TEMPLATE([LIBCURL_FEATURE_NTLM],[Defined if libcurl supports NTLM]) + + AH_TEMPLATE([LIBCURL_PROTOCOL_HTTP],[Defined if libcurl supports HTTP]) + AH_TEMPLATE([LIBCURL_PROTOCOL_HTTPS],[Defined if libcurl supports HTTPS]) + AH_TEMPLATE([LIBCURL_PROTOCOL_FTP],[Defined if libcurl supports FTP]) + AH_TEMPLATE([LIBCURL_PROTOCOL_FTPS],[Defined if libcurl supports FTPS]) + AH_TEMPLATE([LIBCURL_PROTOCOL_FILE],[Defined if libcurl supports FILE]) + AH_TEMPLATE([LIBCURL_PROTOCOL_TELNET],[Defined if libcurl supports TELNET]) + AH_TEMPLATE([LIBCURL_PROTOCOL_LDAP],[Defined if libcurl supports LDAP]) + AH_TEMPLATE([LIBCURL_PROTOCOL_DICT],[Defined if libcurl supports DICT]) + AH_TEMPLATE([LIBCURL_PROTOCOL_TFTP],[Defined if libcurl supports TFTP]) + AH_TEMPLATE([LIBCURL_PROTOCOL_RTSP],[Defined if libcurl supports RTSP]) + AH_TEMPLATE([LIBCURL_PROTOCOL_POP3],[Defined if libcurl supports POP3]) + AH_TEMPLATE([LIBCURL_PROTOCOL_IMAP],[Defined if libcurl supports IMAP]) + AH_TEMPLATE([LIBCURL_PROTOCOL_SMTP],[Defined if libcurl supports SMTP]) + + AC_ARG_WITH(libcurl, + AS_HELP_STRING([--with-libcurl=PREFIX],[look for the curl library in PREFIX/lib and headers in PREFIX/include]), + [_libcurl_with=$withval],[_libcurl_with=ifelse([$1],,[yes],[$1])]) + + if test "$_libcurl_with" != "no" ; then + + AC_PROG_AWK + + _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[[1]]+256*A[[2]]+A[[3]]; print X;}'" + + _libcurl_try_link=yes + + if test -d "$_libcurl_with" ; then + LIBCURL_CPPFLAGS="-I$withval/include" + _libcurl_ldflags="-L$withval/lib" + AC_PATH_PROG([_libcurl_config],[curl-config],[], + ["$withval/bin"]) + else + AC_PATH_PROG([_libcurl_config],[curl-config],[],[$PATH]) + fi + + if test x$_libcurl_config != "x" ; then + AC_CACHE_CHECK([for the version of libcurl], + [libcurl_cv_lib_curl_version], + [libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $[]2}'`]) + + _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` + _libcurl_wanted=`echo ifelse([$2],,[0],[$2]) | $_libcurl_version_parse` + + if test $_libcurl_wanted -gt 0 ; then + AC_CACHE_CHECK([for libcurl >= version $2], + [libcurl_cv_lib_version_ok], + [ + if test $_libcurl_version -ge $_libcurl_wanted ; then + libcurl_cv_lib_version_ok=yes + else + libcurl_cv_lib_version_ok=no + fi + ]) + fi + + if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then + if test x"$LIBCURL_CPPFLAGS" = "x" ; then + LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` + fi + if test x"$LIBCURL" = "x" ; then + LIBCURL=`$_libcurl_config --libs` + + # This is so silly, but Apple actually has a bug in their + # curl-config script. Fixed in Tiger, but there are still + # lots of Panther installs around. + case "${host}" in + powerpc-apple-darwin7*) + LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` + ;; + esac + fi + + # All curl-config scripts support --feature + _libcurl_features=`$_libcurl_config --feature` + + # Is it modern enough to have --protocols? (7.12.4) + if test $_libcurl_version -ge 461828 ; then + _libcurl_protocols=`$_libcurl_config --protocols` + fi + else + _libcurl_try_link=no + fi + + unset _libcurl_wanted + fi + + if test $_libcurl_try_link = yes ; then + + # we didn't find curl-config, so let's see if the user-supplied + # link line (or failing that, "-lcurl") is enough. + LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} + + AC_CACHE_CHECK([whether libcurl is usable], + [libcurl_cv_lib_curl_usable], + [ + _libcurl_save_cppflags=$CPPFLAGS + CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" + _libcurl_save_libs=$LIBS + LIBS="$LIBCURL $LIBS" + + AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include ]],[[ +/* Try and use a few common options to force a failure if we are + missing symbols or can't link. */ +int x; +curl_easy_setopt(NULL,CURLOPT_URL,NULL); +x=CURL_ERROR_SIZE; +x=CURLOPT_WRITEFUNCTION; +x=CURLOPT_WRITEDATA; +x=CURLOPT_ERRORBUFFER; +x=CURLOPT_STDERR; +x=CURLOPT_VERBOSE; +if (x) {;} +]])],libcurl_cv_lib_curl_usable=yes,libcurl_cv_lib_curl_usable=no) + + CPPFLAGS=$_libcurl_save_cppflags + LIBS=$_libcurl_save_libs + unset _libcurl_save_cppflags + unset _libcurl_save_libs + ]) + + if test $libcurl_cv_lib_curl_usable = yes ; then + + # Does curl_free() exist in this version of libcurl? + # If not, fake it with free() + + _libcurl_save_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" + _libcurl_save_libs=$LIBS + LIBS="$LIBS $LIBCURL" + + AC_CHECK_FUNC(curl_free,, + AC_DEFINE(curl_free,free, + [Define curl_free() as free() if our version of curl lacks curl_free.])) + + CPPFLAGS=$_libcurl_save_cppflags + LIBS=$_libcurl_save_libs + unset _libcurl_save_cppflags + unset _libcurl_save_libs + + AC_DEFINE(HAVE_LIBCURL,1, + [Define to 1 if you have a functional curl library.]) + AC_SUBST(LIBCURL_CPPFLAGS) + AC_SUBST(LIBCURL) + + for _libcurl_feature in $_libcurl_features ; do + AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_feature_$_libcurl_feature),[1]) + eval AS_TR_SH(libcurl_feature_$_libcurl_feature)=yes + done + + if test "x$_libcurl_protocols" = "x" ; then + + # We don't have --protocols, so just assume that all + # protocols are available + _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT TFTP" + + if test x$libcurl_feature_SSL = xyes ; then + _libcurl_protocols="$_libcurl_protocols HTTPS" + + # FTPS wasn't standards-compliant until version + # 7.11.0 (0x070b00 == 461568) + if test $_libcurl_version -ge 461568; then + _libcurl_protocols="$_libcurl_protocols FTPS" + fi + fi + + # RTSP, IMAP, POP3 and SMTP were added in + # 7.20.0 (0x071400 == 463872) + if test $_libcurl_version -ge 463872; then + _libcurl_protocols="$_libcurl_protocols RTSP IMAP POP3 SMTP" + fi + fi + + for _libcurl_protocol in $_libcurl_protocols ; do + AC_DEFINE_UNQUOTED(AS_TR_CPP(libcurl_protocol_$_libcurl_protocol),[1]) + eval AS_TR_SH(libcurl_protocol_$_libcurl_protocol)=yes + done + else + unset LIBCURL + unset LIBCURL_CPPFLAGS + fi + fi + + unset _libcurl_try_link + unset _libcurl_version_parse + unset _libcurl_config + unset _libcurl_feature + unset _libcurl_features + unset _libcurl_protocol + unset _libcurl_protocols + unset _libcurl_version + unset _libcurl_ldflags + fi + + if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then + # This is the IF-NO path + ifelse([$4],,:,[$4]) + else + # This is the IF-YES path + ifelse([$3],,:,[$3]) + fi + + unset _libcurl_with +])dnl + +# Copyright (C) 2002-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.16' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.16.2], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.16.2])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking is enabled. +# This creates each '.Po' and '.Plo' makefile fragment that we'll need in +# order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check whether make has an 'include' directive that can support all +# the idioms we need for our automatic dependency tracking code. +AC_DEFUN([AM_MAKE_INCLUDE], +[AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +AC_SUBST([am__quote])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# -*- Autoconf -*- +# Obsolete and "removed" macros, that must however still report explicit +# error messages when used, to smooth transition. +# +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +AC_DEFUN([AM_CONFIG_HEADER], +[AC_DIAGNOSE([obsolete], +['$0': this macro is obsolete. +You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl +AC_CONFIG_HEADERS($@)]) + +AC_DEFUN([AM_PROG_CC_STDC], +[AC_PROG_CC +am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc +AC_DIAGNOSE([obsolete], +['$0': this macro is obsolete. +You should simply use the 'AC][_PROG_CC' macro instead. +Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', +but upon 'ac_cv_prog_cc_stdc'.])]) + +AC_DEFUN([AM_C_PROTOTYPES], + [AC_FATAL([automatic de-ANSI-fication support has been removed])]) +AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2020 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/libpcre.m4]) +m4_include([m4/libwraster.m4]) +m4_include([m4/snprintf.m4]) +m4_include([m4/vsnprintf.m4]) +m4_include([m4/xpm.m4]) diff --git a/dockapps/wmweather+/animation.c b/dockapps/wmweather+/animation.c new file mode 100644 index 0000000..11f9632 --- /dev/null +++ b/dockapps/wmweather+/animation.c @@ -0,0 +1,138 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include + +#include +#include + +#include "wmgeneral/wmgeneral-x11.h" +#include "wmgeneral/xpm_trans.h" + +#include "wmweather+.h" +#include "animation.h" +#include "moon.h" +#include "font.h" + +#define P 4 /* Percent to increment by */ +#define X 4 /* Frames to wait before incrementing */ +#define M (((100/P)+1)*X) + +static int heights[5]={ 11, 12, 14, 14, 19 }; + +void SetAnimation(struct animation *a, int x, int y, int sky, int obs, int vis, + int frz, int snow, int rain, int tstorm, int svtstorm, + double moon){ + int i; + + a->changed=1; + a->active=1; + a->x=x; + a->y=y; + if(sky>=0 && sky<6) a->sky=sky*27; + else a->sky=-1; + if(vis<7 && obs>0 && vis>0 && obs<4){ + a->obs=obs*27-27; + a->vis=256-236*(vis-1)/6; + } else a->vis=0; + + a->items[0]=frz; + a->items[1]=snow; + a->items[2]=rain; + a->items[3]=tstorm; + a->items[4]=svtstorm; + for(i=0; i<5; i++){ + if(a->items[i]==0) continue; + if(a->items[i]%P) a->items[i]=a->items[i]/P+1; + else a->items[i]=a->items[i]/P; + a->items[i]*=X; + if(a->items[i]!=0) a->changed=1; + } + a->ac=0; + a->moon=moon; +} + +void DoAnimation(struct animation *a){ + int i; + int top, h; + + /* Turned off? */ + if(!a->active) return; + + /* Any parameters changed? If yes, draw */ + if(a->changed) goto doit; + + /* Nothing changed, quit if not animating */ + if(!a->do_animate) return; + + /* We are animating. If it's the first frame of a cycle, draw it */ + a->ac++; if(a->ac>=M){ a->ac=0; goto doit; } + + /* Not the first frame, see if anything changed. If so, draw it */ + for(i=0; i<5; i++){ + if(a->ac>=a->items[i] && a->ac<=a->items[i]+X) goto doit; + } + + /* Just draw the counter... */ + if(a->show_counter) goto do_counter; + + /* Nothing to draw, quit */ + return; + +doit: + if(a->min_pct!=a->old_pct){ + if(a->min_pct%P) a->pct=(a->min_pct/P+1)*X; + else a->pct=(a->min_pct/P)*X; + a->old_pct=a->min_pct; + } + a->changed=0; + + if(!a->do_animate) a->ac=a->pct; + copyPixmapArea(124, 18, 26, 31, a->x, a->y); + if(a->sky!=-1){ + copySunMoon(a->x, a->y, a->moon); + combineWithTrans(a->sky, 64, 26, 25, a->x, a->y); + } + if(a->vis>0) combineWithOpacity(a->obs, 89, 26, 25, a->x, a->y, a->vis); + for(i=0; i<5; i++){ + if(a->items[i]==0 || a->ac>=a->items[i]+X) continue; + h=heights[i]; + top=h; + if(a->acac/X; + } else if(a->ac>=a->items[i] && a->acitems[i]+X){ + h-=h*(a->ac%X)/X; + top=h; + } + combineWithTrans(i*27, 129-top, 26, h, a->x, a->y+31-top); + } + if(a->show_counter){{ + char foo[5]; +do_counter: + if(!a->do_animate){ + snprintf(foo, 5, "%d%%", a->min_pct); + } else { + for(i=0; i<100 && a->ac>((i+P-1)/P)*X; i++); + snprintf(foo, 5, "%d%%", i); + } + i=GetStringWidth(foo); + copyPixmapArea(124, 18, i+2, 7, a->x+(26-i-2)/2, a->y+12); + DrawString(a->x+(26-i)/2, a->y+13, foo, 2); + }} +} diff --git a/dockapps/wmweather+/animation.h b/dockapps/wmweather+/animation.h new file mode 100644 index 0000000..1906eb1 --- /dev/null +++ b/dockapps/wmweather+/animation.h @@ -0,0 +1,23 @@ +struct animation { + int do_animate:1; /* animate, or use min_pct? */ + int show_counter:1; /* display the percentage counter? */ + unsigned int min_pct:7; /* when not animating, show any occurence with more + than this percent chance */ + int changed:1; /* Set this if you change any of the above */ + + int active:1; + int x, y; + int sky; + int obs; + int vis; + int items[5]; + int ac; + double moon; + unsigned int old_pct:7; + int pct; +}; + +void SetAnimation(struct animation *a, int x, int y, int sky, int obs, int vis, + int frz, int snow, int rain, int tstorm, int svtstorm, + double moon); +void DoAnimation(struct animation *a); diff --git a/dockapps/wmweather+/avn.c b/dockapps/wmweather+/avn.c new file mode 100644 index 0000000..bc558da --- /dev/null +++ b/dockapps/wmweather+/avn.c @@ -0,0 +1,373 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "wmweather+.h" +#include "forecast.h" +#include "getLine.h" +#include "convert.h" +#include "download.h" +#include "diff.h" +#include "die.h" +#include "sunzenith.h" +#include "moon.h" +#include "subst.h" + +/* Important variables */ +#define AVN_MAX 21 +static time_t avn_time=0; +static char *avn_file=NULL; +static char *avn_newfile=NULL; +static char *avn_req[2]={ NULL, NULL }; +static struct forecast forecasts[AVN_MAX]; + + +/********* init functions ************/ +static int parse_avn(char *file); + +static void reset_avn(void){ + int i; + + for(i=0; i=0){ + if(S_ISREG(statbuf.st_mode) && statbuf.st_size!=0 + && diff(avn_newfile, avn_file) && parse_avn(avn_newfile)){ + avn_time=find_next_time(avn_newfile, "MOS GUIDANCE", 720); + rename(avn_newfile, avn_file); + } else { + unlink(avn_newfile); + if(!parse_avn(avn_file)) reset_avn(); + } + } +} + +void avn_cleanup(void){ + if(avn_file==NULL) return; + unlink(avn_newfile); + unlink(avn_file); +} + +void update_avn(int force){ + time_t t; + + if(avn_file==NULL) return; + + t=time(NULL)/60; + if(!force && avn_time>t) return; + + avn_time=find_next_time(avn_file, "MOS GUIDANCE", 15); + download_file(avn_newfile, avn_req[0], avn_req[1], force?DOWNLOAD_KILL_OTHER_REQUESTS:0, avn_callback, NULL); +} + + +/********* parse functions ************/ + +#define NEXT(s) free(s); \ + len=getLine(&s, fp); \ + if(strstr(s, "")!=NULL) len=0; + +#define DIE() return (free(s), fclose(fp), 0) +#define SPLIT(s) { \ + ID[0]=s[0]; \ + ID[1]=s[1]; \ + ID[2]=s[2]; \ + ID[3]='\0'; \ + for(n=0, c=s+4; c12){ + c=strchr(c+1, '/'); + if(c==NULL) DIE(); + for(mon=1; mon<=12; mon++){ + if(!strncmp(c+1, monthnames[mon], 3) && isspace(*(c+4))) break; + if(!strncmp(c+1, monthnames2[mon], 4) && isspace(*(c+5))){ + i=5; + break; + } + } + } + day=atoi(c+i); + if(day<1) DIE(); + if(c>s+4) day--; + if(mon90) + forecasts[n].moon=calc_moon(m, j, z, h*100); + } + + while(1){ + NEXT(s); + if(len<=10) break; + SPLIT(s); + + if(!strcmp(ID, "X/N")) j=1; + else if(!strcmp(ID, "N/X")) j=2; + else j=0; + if(j!=0){ + for(n=0; n>1); + for(m=0; m=19) + || (forecasts[m].day==k && forecasts[m].hour<19))) + forecasts[m].high=i; + if((j&1)==0 && + ((forecasts[m].day==k-1 && forecasts[m].hour>=8) + || (forecasts[m].day==k && forecasts[m].hour<8))) + forecasts[m].low=i; + } + j++; + } + continue; + } + if(!strcmp(ID, "TMP")){ + ASSIGN(temp); + continue; + } + if(!strcmp(ID, "DPT")){ + ASSIGN(dewpt); + continue; + } + if(!strcmp(ID, "WDR")){ + for(n=0; n0 && m0 && m=0; n--){ + if(forecasts[n].day&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = b0rken +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libpcre.m4 \ + $(top_srcdir)/m4/libwraster.m4 $(top_srcdir)/m4/snprintf.m4 \ + $(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/xpm.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libb0rken_a_AR = $(AR) $(ARFLAGS) +libb0rken_a_DEPENDENCIES = @LIBOBJS@ +am_libb0rken_a_OBJECTS = +libb0rken_a_OBJECTS = $(am_libb0rken_a_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = $(DEPDIR)/lstat.Po $(DEPDIR)/malloc.Po \ + $(DEPDIR)/memcmp.Po $(DEPDIR)/mktime.Po $(DEPDIR)/snprintf.Po \ + $(DEPDIR)/stat.Po $(DEPDIR)/strtod.Po $(DEPDIR)/vsnprintf.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libb0rken_a_SOURCES) +DIST_SOURCES = $(libb0rken_a_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp lstat.c \ + malloc.c memcmp.c mktime.c snprintf.c stat.c strtod.c \ + vsnprintf.c +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBCURL = @LIBCURL@ +LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LINK_XPM = @LINK_XPM@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POW_LIB = @POW_LIB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WMGENERAL_GUI = @WMGENERAL_GUI@ +XLIBS = @XLIBS@ +XMKMF = @XMKMF@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +_libcurl_config = @_libcurl_config@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_LIBRARIES = libb0rken.a +libb0rken_a_SOURCES = +libb0rken_a_LIBADD = @LIBOBJS@ +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu b0rken/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu b0rken/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libb0rken.a: $(libb0rken_a_OBJECTS) $(libb0rken_a_DEPENDENCIES) $(EXTRA_libb0rken_a_DEPENDENCIES) + $(AM_V_at)-rm -f libb0rken.a + $(AM_V_AR)$(libb0rken_a_AR) libb0rken.a $(libb0rken_a_OBJECTS) $(libb0rken_a_LIBADD) + $(AM_V_at)$(RANLIB) libb0rken.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/lstat.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/malloc.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/memcmp.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/mktime.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/snprintf.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/stat.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/strtod.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@$(DEPDIR)/vsnprintf.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f $(DEPDIR)/lstat.Po + -rm -f $(DEPDIR)/malloc.Po + -rm -f $(DEPDIR)/memcmp.Po + -rm -f $(DEPDIR)/mktime.Po + -rm -f $(DEPDIR)/snprintf.Po + -rm -f $(DEPDIR)/stat.Po + -rm -f $(DEPDIR)/strtod.Po + -rm -f $(DEPDIR)/vsnprintf.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f $(DEPDIR)/lstat.Po + -rm -f $(DEPDIR)/malloc.Po + -rm -f $(DEPDIR)/memcmp.Po + -rm -f $(DEPDIR)/mktime.Po + -rm -f $(DEPDIR)/snprintf.Po + -rm -f $(DEPDIR)/stat.Po + -rm -f $(DEPDIR)/strtod.Po + -rm -f $(DEPDIR)/vsnprintf.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am am--depfiles check check-am clean clean-generic \ + clean-noinstLIBRARIES cscopelist-am ctags-am distclean \ + distclean-compile distclean-generic distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \ + uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/dockapps/wmweather+/b0rken/lstat.c b/dockapps/wmweather+/b0rken/lstat.c new file mode 100644 index 0000000..0720a62 --- /dev/null +++ b/dockapps/wmweather+/b0rken/lstat.c @@ -0,0 +1 @@ +/* We never really use lstat, so... */ diff --git a/dockapps/wmweather+/b0rken/malloc.c b/dockapps/wmweather+/b0rken/malloc.c new file mode 100644 index 0000000..67b7494 --- /dev/null +++ b/dockapps/wmweather+/b0rken/malloc.c @@ -0,0 +1,15 @@ +/* Version of malloc that avoids the malloc(0) bug */ + +#if HAVE_CONFIG_H +# include "config.h" +#endif +#undef malloc + +#include + +void *malloc(); + +void *rpl_malloc(size_t size){ + if(size==0) size=1; + return malloc(size); +} diff --git a/dockapps/wmweather+/b0rken/memcmp.c b/dockapps/wmweather+/b0rken/memcmp.c new file mode 100644 index 0000000..e4a8a5b --- /dev/null +++ b/dockapps/wmweather+/b0rken/memcmp.c @@ -0,0 +1,13 @@ +/* Cheapo version of memcmp */ + +#include + +int memcmp(const void *s1, const void *s2, size_t n){ + int i, j; + + for(i=0; i +#endif + +#ifdef _LIBC +# define HAVE_LIMITS_H 1 +# define STDC_HEADERS 1 +#endif + +/* Assume that leap seconds are possible, unless told otherwise. + If the host has a `zic' command with a `-L leapsecondfilename' option, + then it supports leap seconds; otherwise it probably doesn't. */ +#ifndef LEAP_SECONDS_POSSIBLE +# define LEAP_SECONDS_POSSIBLE 1 +#endif + +#include /* Some systems define `time_t' here. */ +#include + +#if HAVE_LIMITS_H +# include +#endif + +#if DEBUG +# include +# if STDC_HEADERS +# include +# endif +/* Make it work even if the system's libc has its own mktime routine. */ +# define mktime my_mktime +#endif /* DEBUG */ + +#ifndef __P +# if defined __GNUC__ || (defined __STDC__ && __STDC__) +# define __P(args) args +# else +# define __P(args) () +# endif /* GCC. */ +#endif /* Not __P. */ + +#ifndef CHAR_BIT +# define CHAR_BIT 8 +#endif + +/* The extra casts work around common compiler bugs. */ +#define TYPE_SIGNED(t) (! ((t) 0 < (t) -1)) +/* The outer cast is needed to work around a bug in Cray C 5.0.3.0. + It is necessary at least when t == time_t. */ +#define TYPE_MINIMUM(t) ((t) (TYPE_SIGNED (t) \ + ? ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1) : (t) 0)) +#define TYPE_MAXIMUM(t) ((t) (~ (t) 0 - TYPE_MINIMUM (t))) + +#ifndef INT_MIN +# define INT_MIN TYPE_MINIMUM (int) +#endif +#ifndef INT_MAX +# define INT_MAX TYPE_MAXIMUM (int) +#endif + +#ifndef TIME_T_MIN +# define TIME_T_MIN TYPE_MINIMUM (time_t) +#endif +#ifndef TIME_T_MAX +# define TIME_T_MAX TYPE_MAXIMUM (time_t) +#endif + +#define TM_YEAR_BASE 1900 +#define EPOCH_YEAR 1970 + +#ifndef __isleap +/* Nonzero if YEAR is a leap year (every 4 years, + except every 100th isn't, and every 400th is). */ +# define __isleap(year) \ + ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) +#endif + +/* How many days come before each month (0-12). */ +const unsigned short int __mon_yday[2][13] = + { + /* Normal years. */ + { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 }, + /* Leap years. */ + { 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366 } + }; + + +#ifdef _LIBC +# define my_mktime_localtime_r __localtime_r +#else +/* If we're a mktime substitute in a GNU program, then prefer + localtime to localtime_r, since many localtime_r implementations + are buggy. */ +static struct tm * +my_mktime_localtime_r (const time_t *t, struct tm *tp) +{ + struct tm *l = localtime (t); + if (! l) + return 0; + *tp = *l; + return tp; +} +#endif /* ! _LIBC */ + + +/* Yield the difference between (YEAR-YDAY HOUR:MIN:SEC) and (*TP), + measured in seconds, ignoring leap seconds. + YEAR uses the same numbering as TM->tm_year. + All values are in range, except possibly YEAR. + If TP is null, return a nonzero value. + If overflow occurs, yield the low order bits of the correct answer. */ +static time_t +ydhms_tm_diff (int year, int yday, int hour, int min, int sec, + const struct tm *tp) +{ + if (!tp) + return 1; + else + { + /* Compute intervening leap days correctly even if year is negative. + Take care to avoid int overflow. time_t overflow is OK, since + only the low order bits of the correct time_t answer are needed. + Don't convert to time_t until after all divisions are done, since + time_t might be unsigned. */ + int a4 = (year >> 2) + (TM_YEAR_BASE >> 2) - ! (year & 3); + int b4 = (tp->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (tp->tm_year & 3); + int a100 = a4 / 25 - (a4 % 25 < 0); + int b100 = b4 / 25 - (b4 % 25 < 0); + int a400 = a100 >> 2; + int b400 = b100 >> 2; + int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); + time_t years = year - (time_t) tp->tm_year; + time_t days = (365 * years + intervening_leap_days + + (yday - tp->tm_yday)); + return (60 * (60 * (24 * days + (hour - tp->tm_hour)) + + (min - tp->tm_min)) + + (sec - tp->tm_sec)); + } +} + +/* Use CONVERT to convert *T to a broken down time in *TP. + If *T is out of range for conversion, adjust it so that + it is the nearest in-range value and then convert that. */ +static struct tm * +ranged_convert (struct tm *(*convert) (const time_t *, struct tm *), + time_t *t, struct tm *tp) +{ + struct tm *r; + + if (! (r = (*convert) (t, tp)) && *t) + { + time_t bad = *t; + time_t ok = 0; + struct tm tm; + + /* BAD is a known unconvertible time_t, and OK is a known good one. + Use binary search to narrow the range between BAD and OK until + they differ by 1. */ + while (bad != ok + (bad < 0 ? -1 : 1)) + { + time_t mid = *t = (bad < 0 + ? bad + ((ok - bad) >> 1) + : ok + ((bad - ok) >> 1)); + if ((r = (*convert) (t, tp))) + { + tm = *r; + ok = mid; + } + else + bad = mid; + } + + if (!r && ok) + { + /* The last conversion attempt failed; + revert to the most recent successful attempt. */ + *t = ok; + *tp = tm; + r = tp; + } + } + + return r; +} + + +/* Convert *TP to a time_t value, inverting + the monotonic and mostly-unit-linear conversion function CONVERT. + Use *OFFSET to keep track of a guess at the offset of the result, + compared to what the result would be for UTC without leap seconds. + If *OFFSET's guess is correct, only one CONVERT call is needed. */ +time_t +__mktime_internal (struct tm *tp, + struct tm *(*convert) (const time_t *, struct tm *), + time_t *offset) +{ + time_t t, dt, t0, t1, t2; + struct tm tm; + + /* The maximum number of probes (calls to CONVERT) should be enough + to handle any combinations of time zone rule changes, solar time, + leap seconds, and oscillations around a spring-forward gap. + POSIX.1 prohibits leap seconds, but some hosts have them anyway. */ + int remaining_probes = 6; + + /* Time requested. Copy it in case CONVERT modifies *TP; this can + occur if TP is localtime's returned value and CONVERT is localtime. */ + int sec = tp->tm_sec; + int min = tp->tm_min; + int hour = tp->tm_hour; + int mday = tp->tm_mday; + int mon = tp->tm_mon; + int year_requested = tp->tm_year; + int isdst = tp->tm_isdst; + + /* Ensure that mon is in range, and set year accordingly. */ + int mon_remainder = mon % 12; + int negative_mon_remainder = mon_remainder < 0; + int mon_years = mon / 12 - negative_mon_remainder; + int year = year_requested + mon_years; + + /* The other values need not be in range: + the remaining code handles minor overflows correctly, + assuming int and time_t arithmetic wraps around. + Major overflows are caught at the end. */ + + /* Calculate day of year from year, month, and day of month. + The result need not be in range. */ + int yday = ((__mon_yday[__isleap (year + TM_YEAR_BASE)] + [mon_remainder + 12 * negative_mon_remainder]) + + mday - 1); + + int sec_requested = sec; +#if LEAP_SECONDS_POSSIBLE + /* Handle out-of-range seconds specially, + since ydhms_tm_diff assumes every minute has 60 seconds. */ + if (sec < 0) + sec = 0; + if (59 < sec) + sec = 59; +#endif + + /* Invert CONVERT by probing. First assume the same offset as last time. + Then repeatedly use the error to improve the guess. */ + + tm.tm_year = EPOCH_YEAR - TM_YEAR_BASE; + tm.tm_yday = tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + t0 = ydhms_tm_diff (year, yday, hour, min, sec, &tm); + + for (t = t1 = t2 = t0 + *offset; + (dt = ydhms_tm_diff (year, yday, hour, min, sec, + ranged_convert (convert, &t, &tm))); + t1 = t2, t2 = t, t += dt) + if (t == t1 && t != t2 + && (isdst < 0 || tm.tm_isdst < 0 + || (isdst != 0) != (tm.tm_isdst != 0))) + /* We can't possibly find a match, as we are oscillating + between two values. The requested time probably falls + within a spring-forward gap of size DT. Follow the common + practice in this case, which is to return a time that is DT + away from the requested time, preferring a time whose + tm_isdst differs from the requested value. In practice, + this is more useful than returning -1. */ + break; + else if (--remaining_probes == 0) + return -1; + + /* If we have a match, check whether tm.tm_isdst has the requested + value, if any. */ + if (dt == 0 && isdst != tm.tm_isdst && 0 <= isdst && 0 <= tm.tm_isdst) + { + /* tm.tm_isdst has the wrong value. Look for a neighboring + time with the right value, and use its UTC offset. + Heuristic: probe the previous three calendar quarters (approximately), + looking for the desired isdst. This isn't perfect, + but it's good enough in practice. */ + int quarter = 7889238; /* seconds per average 1/4 Gregorian year */ + int i; + + /* If we're too close to the time_t limit, look in future quarters. */ + if (t < TIME_T_MIN + 3 * quarter) + quarter = -quarter; + + for (i = 1; i <= 3; i++) + { + time_t ot = t - i * quarter; + struct tm otm; + ranged_convert (convert, &ot, &otm); + if (otm.tm_isdst == isdst) + { + /* We found the desired tm_isdst. + Extrapolate back to the desired time. */ + t = ot + ydhms_tm_diff (year, yday, hour, min, sec, &otm); + ranged_convert (convert, &t, &tm); + break; + } + } + } + + *offset = t - t0; + +#if LEAP_SECONDS_POSSIBLE + if (sec_requested != tm.tm_sec) + { + /* Adjust time to reflect the tm_sec requested, not the normalized value. + Also, repair any damage from a false match due to a leap second. */ + t += sec_requested - sec + (sec == 0 && tm.tm_sec == 60); + if (! (*convert) (&t, &tm)) + return -1; + } +#endif + + if (TIME_T_MAX / INT_MAX / 366 / 24 / 60 / 60 < 3) + { + /* time_t isn't large enough to rule out overflows in ydhms_tm_diff, + so check for major overflows. A gross check suffices, + since if t has overflowed, it is off by a multiple of + TIME_T_MAX - TIME_T_MIN + 1. So ignore any component of + the difference that is bounded by a small value. */ + + double dyear = (double) year_requested + mon_years - tm.tm_year; + double dday = 366 * dyear + mday; + double dsec = 60 * (60 * (24 * dday + hour) + min) + sec_requested; + + /* On Irix4.0.5 cc, dividing TIME_T_MIN by 3 does not produce + correct results, ie., it erroneously gives a positive value + of 715827882. Setting a variable first then doing math on it + seems to work. (ghazi@caip.rutgers.edu) */ + + const time_t time_t_max = TIME_T_MAX; + const time_t time_t_min = TIME_T_MIN; + + if (time_t_max / 3 - time_t_min / 3 < (dsec < 0 ? - dsec : dsec)) + return -1; + } + + *tp = tm; + return t; +} + + +static time_t localtime_offset; + +/* Convert *TP to a time_t value. */ +time_t +mktime (tp) + struct tm *tp; +{ +#ifdef _LIBC + /* POSIX.1 8.1.1 requires that whenever mktime() is called, the + time zone names contained in the external variable `tzname' shall + be set as if the tzset() function had been called. */ + __tzset (); +#endif + + return __mktime_internal (tp, my_mktime_localtime_r, &localtime_offset); +} + +#ifdef weak_alias +weak_alias (mktime, timelocal) +#endif + +#if DEBUG + +static int +not_equal_tm (a, b) + struct tm *a; + struct tm *b; +{ + return ((a->tm_sec ^ b->tm_sec) + | (a->tm_min ^ b->tm_min) + | (a->tm_hour ^ b->tm_hour) + | (a->tm_mday ^ b->tm_mday) + | (a->tm_mon ^ b->tm_mon) + | (a->tm_year ^ b->tm_year) + | (a->tm_mday ^ b->tm_mday) + | (a->tm_yday ^ b->tm_yday) + | (a->tm_isdst ^ b->tm_isdst)); +} + +static void +print_tm (tp) + struct tm *tp; +{ + if (tp) + printf ("%04d-%02d-%02d %02d:%02d:%02d yday %03d wday %d isdst %d", + tp->tm_year + TM_YEAR_BASE, tp->tm_mon + 1, tp->tm_mday, + tp->tm_hour, tp->tm_min, tp->tm_sec, + tp->tm_yday, tp->tm_wday, tp->tm_isdst); + else + printf ("0"); +} + +static int +check_result (tk, tmk, tl, lt) + time_t tk; + struct tm tmk; + time_t tl; + struct tm *lt; +{ + if (tk != tl || !lt || not_equal_tm (&tmk, lt)) + { + printf ("mktime ("); + print_tm (&tmk); + printf (")\nyields ("); + print_tm (lt); + printf (") == %ld, should be %ld\n", (long) tl, (long) tk); + return 1; + } + + return 0; +} + +int +main (argc, argv) + int argc; + char **argv; +{ + int status = 0; + struct tm tm, tmk, tml; + struct tm *lt; + time_t tk, tl; + char trailer; + + if ((argc == 3 || argc == 4) + && (sscanf (argv[1], "%d-%d-%d%c", + &tm.tm_year, &tm.tm_mon, &tm.tm_mday, &trailer) + == 3) + && (sscanf (argv[2], "%d:%d:%d%c", + &tm.tm_hour, &tm.tm_min, &tm.tm_sec, &trailer) + == 3)) + { + tm.tm_year -= TM_YEAR_BASE; + tm.tm_mon--; + tm.tm_isdst = argc == 3 ? -1 : atoi (argv[3]); + tmk = tm; + tl = mktime (&tmk); + lt = localtime (&tl); + if (lt) + { + tml = *lt; + lt = &tml; + } + printf ("mktime returns %ld == ", (long) tl); + print_tm (&tmk); + printf ("\n"); + status = check_result (tl, tmk, tl, lt); + } + else if (argc == 4 || (argc == 5 && strcmp (argv[4], "-") == 0)) + { + time_t from = atol (argv[1]); + time_t by = atol (argv[2]); + time_t to = atol (argv[3]); + + if (argc == 4) + for (tl = from; tl <= to; tl += by) + { + lt = localtime (&tl); + if (lt) + { + tmk = tml = *lt; + tk = mktime (&tmk); + status |= check_result (tk, tmk, tl, tml); + } + else + { + printf ("localtime (%ld) yields 0\n", (long) tl); + status = 1; + } + } + else + for (tl = from; tl <= to; tl += by) + { + /* Null benchmark. */ + lt = localtime (&tl); + if (lt) + { + tmk = tml = *lt; + tk = tl; + status |= check_result (tk, tmk, tl, tml); + } + else + { + printf ("localtime (%ld) yields 0\n", (long) tl); + status = 1; + } + } + } + else + printf ("Usage:\ +\t%s YYYY-MM-DD HH:MM:SS [ISDST] # Test given time.\n\ +\t%s FROM BY TO # Test values FROM, FROM+BY, ..., TO.\n\ +\t%s FROM BY TO - # Do not test those values (for benchmark).\n", + argv[0], argv[0], argv[0]); + + return status; +} + +#endif /* DEBUG */ + +/* +Local Variables: +compile-command: "gcc -DDEBUG -DHAVE_LIMITS_H -DSTDC_HEADERS -Wall -W -O -g mktime.c -o mktime" +End: +*/ diff --git a/dockapps/wmweather+/b0rken/snprintf.c b/dockapps/wmweather+/b0rken/snprintf.c new file mode 100644 index 0000000..a654015 --- /dev/null +++ b/dockapps/wmweather+/b0rken/snprintf.c @@ -0,0 +1,43 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#if defined(HAVE_WORKING_SNPRINTF) + +/* snprintf works, nothing to do */ + +#else + +/* snprintf is b0rken, use vsnprintf */ + +#include +#include + +int rpl_snprintf(char *str, size_t size, const char *format, ...){ + va_list ap; + int r; + + fprintf(stderr, "Using snprintf replacement\n"); + + va_start(ap, format); + r=vsnprintf(str, size, format, ap); + va_end(ap); + return r; +} + +#endif diff --git a/dockapps/wmweather+/b0rken/stat.c b/dockapps/wmweather+/b0rken/stat.c new file mode 100644 index 0000000..2a12993 --- /dev/null +++ b/dockapps/wmweather+/b0rken/stat.c @@ -0,0 +1 @@ +#error Please supply a version of stat. diff --git a/dockapps/wmweather+/b0rken/strtod.c b/dockapps/wmweather+/b0rken/strtod.c new file mode 100644 index 0000000..509554e --- /dev/null +++ b/dockapps/wmweather+/b0rken/strtod.c @@ -0,0 +1 @@ +#error Please supply a version of strtod. diff --git a/dockapps/wmweather+/b0rken/vsnprintf.c b/dockapps/wmweather+/b0rken/vsnprintf.c new file mode 100644 index 0000000..49ce8fc --- /dev/null +++ b/dockapps/wmweather+/b0rken/vsnprintf.c @@ -0,0 +1,95 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifdef vsnprintf +# undef vsnprintf +#endif + +#include +#include + +#if defined(HAVE_WORKING_VSNPRINTF) + +/* vsnprintf works, nothing to do */ + +#elif !defined(VSNPRINTF_BOGUS_RETVAL) + +/* vsnprintf is b0rken, but the return value is ok (thus, the only problem is + * NULL) */ + +int rpl_vsnprintf(char *str, size_t size, const char *format, va_list ap){ + if(str==NULL || size==0){{ + char foo[3]; + return vsnprintf(foo, 3, format, ap); + }} else { + return vsnprintf(str, size, format, ap); + } +} + +#elif !defined(VSNPRINTF_IS_VSPRINTF) && defined(HAVE_VPRINTF) + +/* vsnprintf's retval is bogus, so we compensate. */ + +static FILE *devnull; + +#ifndef va_copy +# ifdef __va_copy +# define va_copy(dest, src) __va_copy(dest, src) +# else +# include +# define va_copy(dest, src) memcpy(&dest, &src, sizeof(va_list)) +# endif +#endif + +int rpl_vsnprintf(char *str, size_t size, const char *format, va_list ap){ + va_list ap2; + int r; + + va_copy(ap2, ap); + +#ifdef VSNPRINTF_NULL_OK + vsnprintf(str, size, format, ap); +#else + if(str==NULL || size==0){{ + char foo[3]; + vsnprintf(foo, 3, format, ap); + }} else { + vsnprintf(str, size, format, ap); + } +#endif + + if(devnull==NULL){ + if((devnull=fopen("/dev/null", "w"))==NULL){ + perror("Couldn't open /dev/null for writing"); + exit(72); + } + } + + r=vfprintf(devnull, format, ap2); + va_end(ap2); + return r; +} + +#else + +/* OK, we're screwed */ + +# error "vsnprintf is so broken we can't compensate. Sorry." + +#endif diff --git a/dockapps/wmweather+/bootstrap b/dockapps/wmweather+/bootstrap new file mode 100755 index 0000000..3f462a0 --- /dev/null +++ b/dockapps/wmweather+/bootstrap @@ -0,0 +1,6 @@ +#! /bin/sh + +aclocal -I m4 \ +&& autoheader \ +&& automake --gnu --add-missing \ +&& autoconf diff --git a/dockapps/wmweather+/characters.xpm b/dockapps/wmweather+/characters.xpm new file mode 100644 index 0000000..998e1c6 --- /dev/null +++ b/dockapps/wmweather+/characters.xpm @@ -0,0 +1,15 @@ +/* XPM */ +static char * characters_xpm[] = { +"179 7 5 1", +" c None", +". c #000000 s Background", +"+ c #0C4E66 s Low", +"@ c #1EC3FF s High", +"# c #127599 s Mid", +"...................................................................................................................................................................................", +".+@+.@@+..@@.@@..@@@.@@@..@@.@.@.@@@...@.@.@.@.....@.@...#@#.@@+.+@+.@@+.+@@.@@@.@.@.@.@.@.#.@.@.@.@.@@@.+@+..@..@@+.@@+.@.@.@@@..@..@@@.+@+.#@#...@.@..@.@..@.@..@.+.......@.@..@.", +".@.@.@.@.@...@.@.@...@...@...@.@..@....@.@.@.@....@...@..@.@.@.@.@.@.@.@.@....@..@.@.@.@...@.@.@.@.@.+#@.@.@..@....@...@.@.@.@...@.....@.@.@.@.@...@.@@@@.@@.@.@..@.@......@...@.@.", +".@@@.@@+.@...@.@.@@..@@..@.@.@@@..@....@.@@..@...@.....@.@.@.@@+.@.@.@@+.+@+..@..@.@.@.@..@...@...@..+@..@.@..@...@+.#@+.@@@.@@+.@@#..@..#@#.#@@..@..@##@.@.@@.@##@.....@@.@...@...", +".@.@.@.@.@...@.@.@...@...@.@.@.@..@..@.@.@.@.@....@...@..@.@.@...@@@.@.@...@..@..@.@.@.@.@...@.@..@..@...@.@..@..@.....@...@...@.@.@..@..@.@...@.@...@..@.@..@.@@@@.@.+....@...@...", +".@.@.@@+..@@.@@..@@@.@....@@.@.@.@@@.+@+.@.@.@@@...@.@...#@#.@...+@@.@.@.@@+..@..@@@..@..#.@.@.@..@..@@@.+@+..@..@@@.@@+...@.@@+.#@#..@..+@+..@..@...@..@.@..@.@..@.+.@.....@.@....", +"..................................................................................................................................................................................."}; diff --git a/dockapps/wmweather+/compile b/dockapps/wmweather+/compile new file mode 100755 index 0000000..23fcba0 --- /dev/null +++ b/dockapps/wmweather+/compile @@ -0,0 +1,348 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN* | MSYS*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/* | msys/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ + icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/dockapps/wmweather+/config.h.in b/dockapps/wmweather+/config.h.in new file mode 100644 index 0000000..e0812fc --- /dev/null +++ b/dockapps/wmweather+/config.h.in @@ -0,0 +1,298 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the `alarm' function. */ +#undef HAVE_ALARM + +/* Define to 1 if you have the `atexit' function. */ +#undef HAVE_ATEXIT + +/* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ +#undef HAVE_DOPRNT + +/* Define to 1 if you have the `dup2' function. */ +#undef HAVE_DUP2 + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have a functional curl library. */ +#undef HAVE_LIBCURL + +/* Define to 1 if you have the `m' library (-lm). */ +#undef HAVE_LIBM + +/* Define to 1 if you have the `pcre' library (-lpcre). */ +#undef HAVE_LIBPCRE + +/* Define to 1 if you have the `wraster' library (-lwraster). */ +#undef HAVE_LIBWRASTER + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIMITS_H + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#undef HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `mkdir' function. */ +#undef HAVE_MKDIR + +/* Define to 1 if you have the `pow' function. */ +#undef HAVE_POW + +/* Define to 1 if you have the `select' function. */ +#undef HAVE_SELECT + +/* Define to 1 if the system has the type `ssize_t'. */ +#undef HAVE_SSIZE_T + +/* Define to 1 if `stat' has the bug that it succeeds when given the + zero-length file name argument. */ +#undef HAVE_STAT_EMPTY_STRING_BUG + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strchr' function. */ +#undef HAVE_STRCHR + +/* Define to 1 if you have the `strcspn' function. */ +#undef HAVE_STRCSPN + +/* Define to 1 if you have the `strdup' function. */ +#undef HAVE_STRDUP + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strrchr' function. */ +#undef HAVE_STRRCHR + +/* Define to 1 if you have the `strspn' function. */ +#undef HAVE_STRSPN + +/* Define to 1 if you have the `strstr' function. */ +#undef HAVE_STRSTR + +/* Define to 1 if you have the `strtol' function. */ +#undef HAVE_STRTOL + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have that is POSIX.1 compatible. */ +#undef HAVE_SYS_WAIT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the `vfork' function. */ +#undef HAVE_VFORK + +/* Define to 1 if you have the header file. */ +#undef HAVE_VFORK_H + +/* Define to 1 if you have the `vprintf' function. */ +#undef HAVE_VPRINTF + +/* Define to 1 if `fork' works. */ +#undef HAVE_WORKING_FORK + +/* Define if snprintf works properly */ +#undef HAVE_WORKING_SNPRINTF + +/* Define to 1 if `vfork' works. */ +#undef HAVE_WORKING_VFORK + +/* Define if vsnprintf works properly */ +#undef HAVE_WORKING_VSNPRINTF + +/* "Define if you have libxpm" */ +#undef HAVE_XPM + +/* Defined if libcurl supports AsynchDNS */ +#undef LIBCURL_FEATURE_ASYNCHDNS + +/* Defined if libcurl supports IDN */ +#undef LIBCURL_FEATURE_IDN + +/* Defined if libcurl supports IPv6 */ +#undef LIBCURL_FEATURE_IPV6 + +/* Defined if libcurl supports KRB4 */ +#undef LIBCURL_FEATURE_KRB4 + +/* Defined if libcurl supports libz */ +#undef LIBCURL_FEATURE_LIBZ + +/* Defined if libcurl supports NTLM */ +#undef LIBCURL_FEATURE_NTLM + +/* Defined if libcurl supports SSL */ +#undef LIBCURL_FEATURE_SSL + +/* Defined if libcurl supports SSPI */ +#undef LIBCURL_FEATURE_SSPI + +/* Defined if libcurl supports DICT */ +#undef LIBCURL_PROTOCOL_DICT + +/* Defined if libcurl supports FILE */ +#undef LIBCURL_PROTOCOL_FILE + +/* Defined if libcurl supports FTP */ +#undef LIBCURL_PROTOCOL_FTP + +/* Defined if libcurl supports FTPS */ +#undef LIBCURL_PROTOCOL_FTPS + +/* Defined if libcurl supports HTTP */ +#undef LIBCURL_PROTOCOL_HTTP + +/* Defined if libcurl supports HTTPS */ +#undef LIBCURL_PROTOCOL_HTTPS + +/* Defined if libcurl supports IMAP */ +#undef LIBCURL_PROTOCOL_IMAP + +/* Defined if libcurl supports LDAP */ +#undef LIBCURL_PROTOCOL_LDAP + +/* Defined if libcurl supports POP3 */ +#undef LIBCURL_PROTOCOL_POP3 + +/* Defined if libcurl supports RTSP */ +#undef LIBCURL_PROTOCOL_RTSP + +/* Defined if libcurl supports SMTP */ +#undef LIBCURL_PROTOCOL_SMTP + +/* Defined if libcurl supports TELNET */ +#undef LIBCURL_PROTOCOL_TELNET + +/* Defined if libcurl supports TFTP */ +#undef LIBCURL_PROTOCOL_TFTP + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +#undef LSTAT_FOLLOWS_SLASHED_SYMLINK + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define as the return type of signal handlers (`int' or `void'). */ +#undef RETSIGTYPE + +/* Define if snprintf's return value isn't as specified by C99 */ +#undef SNPRINTF_BOGUS_RETVAL + +/* Define if snprintf ignores the size argument */ +#undef SNPRINTF_IS_SPRINTF + +/* Define if snprintf(NULL, 0, ...) works properly */ +#undef SNPRINTF_NULL_OK + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Define if vsnprintf's return value isn't as specified by C99 */ +#undef VSNPRINTF_BOGUS_RETVAL + +/* Define if vsnprintf ignores the size argument */ +#undef VSNPRINTF_IS_VSPRINTF + +/* Define if vsnprintf(NULL, 0, ...) works properly */ +#undef VSNPRINTF_NULL_OK + +/* Define to 1 if the X Window System is missing or not being used. */ +#undef X_DISPLAY_MISSING + +/* Enable GNU extensions on systems that have them */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define curl_free() as free() if our version of curl lacks curl_free. */ +#undef curl_free + +/* Define to `__inline__' or `__inline' if that's what the C compiler + calls it, or to nothing if 'inline' is not supported under any name. */ +#ifndef __cplusplus +#undef inline +#endif + +/* Define to rpl_malloc if the replacement function should be used. */ +#undef malloc + +/* Define to `int' if does not define. */ +#undef pid_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to rpl_snprintf if the replacement function should be used. */ +#undef snprintf + +/* Define as `fork' if `vfork' does not work. */ +#undef vfork + +/* Define to rpl_vsnprintf if the replacement function should be used. */ +#undef vsnprintf + +#if !HAVE_SSIZE_T +typedef signed ssize_t; +#endif diff --git a/dockapps/wmweather+/configure b/dockapps/wmweather+/configure new file mode 100755 index 0000000..b5bf7a1 --- /dev/null +++ b/dockapps/wmweather+/configure @@ -0,0 +1,9316 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for wmweather+ 2.18. +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='wmweather+' +PACKAGE_TARNAME='wmweather+' +PACKAGE_VERSION='2.18' +PACKAGE_STRING='wmweather+ 2.18' +PACKAGE_BUGREPORT='' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_header_list= +ac_func_list= +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +XLIBS +POW_LIB +LIBOBJS +EGREP +GREP +LINK_XPM +X_EXTRA_LIBS +X_LIBS +X_PRE_LIBS +X_CFLAGS +CPP +XMKMF +LIBCURL +LIBCURL_CPPFLAGS +_libcurl_config +RANLIB +LN_S +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +WMGENERAL_GUI +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +runstatedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_dependency_tracking +with_libpcre +with_libcurl +with_x +with_xpm +with_xpm_includes +with_xpm_libraries +with_libwraster +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +XMKMF +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir runstatedir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures wmweather+ 2.18 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/wmweather+] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of wmweather+ 2.18:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-libpcre=DIR root directory path of libpcre installation defaults to + /usr/local or /usr if not found in /usr/local + --without-libpcre to disable libpcre usage completely + --with-libcurl=PREFIX look for the curl library in PREFIX/lib and headers + in PREFIX/include + --with-x use the X Window System + --without-xpm do not use the Xpm library + --with-xpm-includes=DIR Xpm include files are in DIR + --with-xpm-libraries=DIR + Xpm libraries are in DIR + --with-libwraster=DIR root directory path of libwraster installation defaults to + /usr/local or /usr if not found in /usr/local + --without-libwraster to disable libwraster usage completely + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + XMKMF Path to xmkmf, Makefile generator for X Window System + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to the package provider. +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +wmweather+ configure 2.18 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by wmweather+ $as_me 2.18, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +as_fn_append ac_header_list " sys/time.h" +as_fn_append ac_header_list " unistd.h" +as_fn_append ac_func_list " alarm" +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_config_headers="$ac_config_headers config.h" + +am__api_version='1.16' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='wmweather+' + VERSION='2.18' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + + +# We need GNU sources for certain features + + + + +# for wmgeneral +WMGENERAL_GUI="libwmgeneral-x11.a" + + +# Checks for programs. +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : + ;; +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + case $ac_cv_prog_cc_stdc in #( + no) : + ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;; #( + *) : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C99" >&5 +$as_echo_n "checking for $CC option to accept ISO C99... " >&6; } +if ${ac_cv_prog_cc_c99+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c99=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include +#include + +// Check varargs macros. These examples are taken from C99 6.10.3.5. +#define debug(...) fprintf (stderr, __VA_ARGS__) +#define showlist(...) puts (#__VA_ARGS__) +#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) +static void +test_varargs_macros (void) +{ + int x = 1234; + int y = 5678; + debug ("Flag"); + debug ("X = %d\n", x); + showlist (The first, second, and third items.); + report (x>y, "x is %d but y is %d", x, y); +} + +// Check long long types. +#define BIG64 18446744073709551615ull +#define BIG32 4294967295ul +#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) +#if !BIG_OK + your preprocessor is broken; +#endif +#if BIG_OK +#else + your preprocessor is broken; +#endif +static long long int bignum = -9223372036854775807LL; +static unsigned long long int ubignum = BIG64; + +struct incomplete_array +{ + int datasize; + double data[]; +}; + +struct named_init { + int number; + const wchar_t *name; + double average; +}; + +typedef const char *ccp; + +static inline int +test_restrict (ccp restrict text) +{ + // See if C++-style comments work. + // Iterate through items via the restricted pointer. + // Also check for declarations in for loops. + for (unsigned int i = 0; *(text+i) != '\0'; ++i) + continue; + return 0; +} + +// Check varargs and va_copy. +static void +test_varargs (const char *format, ...) +{ + va_list args; + va_start (args, format); + va_list args_copy; + va_copy (args_copy, args); + + const char *str; + int number; + float fnumber; + + while (*format) + { + switch (*format++) + { + case 's': // string + str = va_arg (args_copy, const char *); + break; + case 'd': // int + number = va_arg (args_copy, int); + break; + case 'f': // float + fnumber = va_arg (args_copy, double); + break; + default: + break; + } + } + va_end (args_copy); + va_end (args); +} + +int +main () +{ + + // Check bool. + _Bool success = false; + + // Check restrict. + if (test_restrict ("String literal") == 0) + success = true; + char *restrict newvar = "Another string"; + + // Check varargs. + test_varargs ("s, d' f .", "string", 65, 34.234); + test_varargs_macros (); + + // Check flexible array members. + struct incomplete_array *ia = + malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); + ia->datasize = 10; + for (int i = 0; i < ia->datasize; ++i) + ia->data[i] = i * 1.234; + + // Check named initializers. + struct named_init ni = { + .number = 34, + .name = L"Test wide string", + .average = 543.34343, + }; + + ni.number = 58; + + int dynamic_array[ni.number]; + dynamic_array[ni.number - 1] = 543; + + // work around unused variable warnings + return (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == 'x' + || dynamic_array[ni.number - 1] != 543); + + ; + return 0; +} +_ACEOF +for ac_arg in '' -std=gnu99 -std=c99 -c99 -AC99 -D_STDC_C99= -qlanglvl=extc99 +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c99=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c99" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c99" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c99" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 +$as_echo "$ac_cv_prog_cc_c99" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c99" != xno; then : + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 +else + ac_cv_prog_cc_stdc=no +fi + +fi + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO Standard C" >&5 +$as_echo_n "checking for $CC option to accept ISO Standard C... " >&6; } + if ${ac_cv_prog_cc_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +fi + + case $ac_cv_prog_cc_stdc in #( + no) : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; #( + '') : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; #( + *) : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_stdc" >&5 +$as_echo "$ac_cv_prog_cc_stdc" >&6; } ;; +esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + + +# Checks for libraries. + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for cos in -lm" >&5 +$as_echo_n "checking for cos in -lm... " >&6; } +if ${ac_cv_lib_m_cos+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char cos (); +int +main () +{ +return cos (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_cos=yes +else + ac_cv_lib_m_cos=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_cos" >&5 +$as_echo "$ac_cv_lib_m_cos" >&6; } +if test "x$ac_cv_lib_m_cos" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBM 1 +_ACEOF + + LIBS="-lm $LIBS" + +fi + +# +# Handle user hints +# + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libpcre is wanted" >&5 +$as_echo_n "checking if libpcre is wanted... " >&6; } + +# Check whether --with-libpcre was given. +if test "${with_libpcre+set}" = set; then : + withval=$with_libpcre; if test "$withval" != no ; then + LIBPCRE_HOME="$withval" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes: libraries ${LIBPCRE_HOME}/lib includes ${LIBPCRE_HOME}/include" >&5 +$as_echo "yes: libraries ${LIBPCRE_HOME}/lib includes ${LIBPCRE_HOME}/include" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi +else + LIBPCRE_HOME=/usr/local + if test ! -f "${LIBPCRE_HOME}/include/pcre.h" + then + LIBPCRE_HOME=/usr + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes: libraries ${LIBPCRE_HOME}/lib includes ${LIBPCRE_HOME}/include" >&5 +$as_echo "yes: libraries ${LIBPCRE_HOME}/lib includes ${LIBPCRE_HOME}/include" >&6; } + +fi + + +# +# Locate libpcre, if wanted +# + if test -n "${LIBPCRE_HOME}" + then + LDFLAGS="$LDFLAGS -L${LIBPCRE_HOME}/lib" + CPPFLAGS="$CPPFLAGS -I${LIBPCRE_HOME}/include" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pcre_compile in -lpcre" >&5 +$as_echo_n "checking for pcre_compile in -lpcre... " >&6; } +if ${ac_cv_lib_pcre_pcre_compile+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpcre $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pcre_compile (); +int +main () +{ +return pcre_compile (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_pcre_pcre_compile=yes +else + ac_cv_lib_pcre_pcre_compile=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pcre_pcre_compile" >&5 +$as_echo "$ac_cv_lib_pcre_pcre_compile" >&6; } +if test "x$ac_cv_lib_pcre_pcre_compile" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBPCRE 1 +_ACEOF + + LIBS="-lpcre $LIBS" + +else + as_fn_error $? "libpcre is required" "$LINENO" 5 +fi + + else + as_fn_error $? "libpcre is required" "$LINENO" 5 + fi + + + + + + + + + + + + + + + + + + + + + + + + + + +# Check whether --with-libcurl was given. +if test "${with_libcurl+set}" = set; then : + withval=$with_libcurl; _libcurl_with=$withval +else + _libcurl_with=yes +fi + + + if test "$_libcurl_with" != "no" ; then + + for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + + + _libcurl_version_parse="eval $AWK '{split(\$NF,A,\".\"); X=256*256*A[1]+256*A[2]+A[3]; print X;}'" + + _libcurl_try_link=yes + + if test -d "$_libcurl_with" ; then + LIBCURL_CPPFLAGS="-I$withval/include" + _libcurl_ldflags="-L$withval/lib" + # Extract the first word of "curl-config", so it can be a program name with args. +set dummy curl-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path__libcurl_config+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $_libcurl_config in + [\\/]* | ?:[\\/]*) + ac_cv_path__libcurl_config="$_libcurl_config" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in "$withval/bin" +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path__libcurl_config="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +_libcurl_config=$ac_cv_path__libcurl_config +if test -n "$_libcurl_config"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_libcurl_config" >&5 +$as_echo "$_libcurl_config" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + # Extract the first word of "curl-config", so it can be a program name with args. +set dummy curl-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path__libcurl_config+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $_libcurl_config in + [\\/]* | ?:[\\/]*) + ac_cv_path__libcurl_config="$_libcurl_config" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path__libcurl_config="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +_libcurl_config=$ac_cv_path__libcurl_config +if test -n "$_libcurl_config"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_libcurl_config" >&5 +$as_echo "$_libcurl_config" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi + + if test x$_libcurl_config != "x" ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the version of libcurl" >&5 +$as_echo_n "checking for the version of libcurl... " >&6; } +if ${libcurl_cv_lib_curl_version+:} false; then : + $as_echo_n "(cached) " >&6 +else + libcurl_cv_lib_curl_version=`$_libcurl_config --version | $AWK '{print $2}'` +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_curl_version" >&5 +$as_echo "$libcurl_cv_lib_curl_version" >&6; } + + _libcurl_version=`echo $libcurl_cv_lib_curl_version | $_libcurl_version_parse` + _libcurl_wanted=`echo 0 | $_libcurl_version_parse` + + if test $_libcurl_wanted -gt 0 ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libcurl >= version " >&5 +$as_echo_n "checking for libcurl >= version ... " >&6; } +if ${libcurl_cv_lib_version_ok+:} false; then : + $as_echo_n "(cached) " >&6 +else + + if test $_libcurl_version -ge $_libcurl_wanted ; then + libcurl_cv_lib_version_ok=yes + else + libcurl_cv_lib_version_ok=no + fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_version_ok" >&5 +$as_echo "$libcurl_cv_lib_version_ok" >&6; } + fi + + if test $_libcurl_wanted -eq 0 || test x$libcurl_cv_lib_version_ok = xyes ; then + if test x"$LIBCURL_CPPFLAGS" = "x" ; then + LIBCURL_CPPFLAGS=`$_libcurl_config --cflags` + fi + if test x"$LIBCURL" = "x" ; then + LIBCURL=`$_libcurl_config --libs` + + # This is so silly, but Apple actually has a bug in their + # curl-config script. Fixed in Tiger, but there are still + # lots of Panther installs around. + case "${host}" in + powerpc-apple-darwin7*) + LIBCURL=`echo $LIBCURL | sed -e 's|-arch i386||g'` + ;; + esac + fi + + # All curl-config scripts support --feature + _libcurl_features=`$_libcurl_config --feature` + + # Is it modern enough to have --protocols? (7.12.4) + if test $_libcurl_version -ge 461828 ; then + _libcurl_protocols=`$_libcurl_config --protocols` + fi + else + _libcurl_try_link=no + fi + + unset _libcurl_wanted + fi + + if test $_libcurl_try_link = yes ; then + + # we didn't find curl-config, so let's see if the user-supplied + # link line (or failing that, "-lcurl") is enough. + LIBCURL=${LIBCURL-"$_libcurl_ldflags -lcurl"} + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether libcurl is usable" >&5 +$as_echo_n "checking whether libcurl is usable... " >&6; } +if ${libcurl_cv_lib_curl_usable+:} false; then : + $as_echo_n "(cached) " >&6 +else + + _libcurl_save_cppflags=$CPPFLAGS + CPPFLAGS="$LIBCURL_CPPFLAGS $CPPFLAGS" + _libcurl_save_libs=$LIBS + LIBS="$LIBCURL $LIBS" + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ + +/* Try and use a few common options to force a failure if we are + missing symbols or can't link. */ +int x; +curl_easy_setopt(NULL,CURLOPT_URL,NULL); +x=CURL_ERROR_SIZE; +x=CURLOPT_WRITEFUNCTION; +x=CURLOPT_WRITEDATA; +x=CURLOPT_ERRORBUFFER; +x=CURLOPT_STDERR; +x=CURLOPT_VERBOSE; +if (x) {;} + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + libcurl_cv_lib_curl_usable=yes +else + libcurl_cv_lib_curl_usable=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + + CPPFLAGS=$_libcurl_save_cppflags + LIBS=$_libcurl_save_libs + unset _libcurl_save_cppflags + unset _libcurl_save_libs + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libcurl_cv_lib_curl_usable" >&5 +$as_echo "$libcurl_cv_lib_curl_usable" >&6; } + + if test $libcurl_cv_lib_curl_usable = yes ; then + + # Does curl_free() exist in this version of libcurl? + # If not, fake it with free() + + _libcurl_save_cppflags=$CPPFLAGS + CPPFLAGS="$CPPFLAGS $LIBCURL_CPPFLAGS" + _libcurl_save_libs=$LIBS + LIBS="$LIBS $LIBCURL" + + ac_fn_c_check_func "$LINENO" "curl_free" "ac_cv_func_curl_free" +if test "x$ac_cv_func_curl_free" = xyes; then : + +else + +$as_echo "#define curl_free free" >>confdefs.h + +fi + + + CPPFLAGS=$_libcurl_save_cppflags + LIBS=$_libcurl_save_libs + unset _libcurl_save_cppflags + unset _libcurl_save_libs + + +$as_echo "#define HAVE_LIBCURL 1" >>confdefs.h + + + + + for _libcurl_feature in $_libcurl_features ; do + cat >>confdefs.h <<_ACEOF +#define `$as_echo "libcurl_feature_$_libcurl_feature" | $as_tr_cpp` 1 +_ACEOF + + eval `$as_echo "libcurl_feature_$_libcurl_feature" | $as_tr_sh`=yes + done + + if test "x$_libcurl_protocols" = "x" ; then + + # We don't have --protocols, so just assume that all + # protocols are available + _libcurl_protocols="HTTP FTP FILE TELNET LDAP DICT TFTP" + + if test x$libcurl_feature_SSL = xyes ; then + _libcurl_protocols="$_libcurl_protocols HTTPS" + + # FTPS wasn't standards-compliant until version + # 7.11.0 (0x070b00 == 461568) + if test $_libcurl_version -ge 461568; then + _libcurl_protocols="$_libcurl_protocols FTPS" + fi + fi + + # RTSP, IMAP, POP3 and SMTP were added in + # 7.20.0 (0x071400 == 463872) + if test $_libcurl_version -ge 463872; then + _libcurl_protocols="$_libcurl_protocols RTSP IMAP POP3 SMTP" + fi + fi + + for _libcurl_protocol in $_libcurl_protocols ; do + cat >>confdefs.h <<_ACEOF +#define `$as_echo "libcurl_protocol_$_libcurl_protocol" | $as_tr_cpp` 1 +_ACEOF + + eval `$as_echo "libcurl_protocol_$_libcurl_protocol" | $as_tr_sh`=yes + done + else + unset LIBCURL + unset LIBCURL_CPPFLAGS + fi + fi + + unset _libcurl_try_link + unset _libcurl_version_parse + unset _libcurl_config + unset _libcurl_feature + unset _libcurl_features + unset _libcurl_protocol + unset _libcurl_protocols + unset _libcurl_version + unset _libcurl_ldflags + fi + + if test x$_libcurl_with = xno || test x$libcurl_cv_lib_curl_usable != xyes ; then + # This is the IF-NO path + as_fn_error $? "libcurl is required" "$LINENO" 5 + else + # This is the IF-YES path + : + fi + + unset _libcurl_with + + +# Checks for header files. +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for X" >&5 +$as_echo_n "checking for X... " >&6; } + + +# Check whether --with-x was given. +if test "${with_x+set}" = set; then : + withval=$with_x; +fi + +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + case $x_includes,$x_libraries in #( + *\'*) as_fn_error $? "cannot use X directory names containing '" "$LINENO" 5;; #( + *,NONE | NONE,*) if ${ac_cv_have_x+:} false; then : + $as_echo_n "(cached) " >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -f -r conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + cat >Imakefile <<'_ACEOF' +incroot: + @echo incroot='${INCROOT}' +usrlibdir: + @echo usrlibdir='${USRLIBDIR}' +libdir: + @echo libdir='${LIBDIR}' +_ACEOF + if (export CC; ${XMKMF-xmkmf}) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. + for ac_var in incroot usrlibdir libdir; do + eval "ac_im_$ac_var=\`\${MAKE-make} $ac_var 2>/dev/null | sed -n 's/^$ac_var=//p'\`" + done + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl dylib la dll; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ac_x_includes= ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /usr/lib64 | /lib | /lib64) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -f -r conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R7/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/usr/include/X11 +/usr/include/X11R7 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R7/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R7 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Xlib.h. + # First, try using that file with no special directory specified. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # We can compile using X headers with no special include directory. +ac_x_includes= +else + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Xlib.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err conftest.i conftest.$ac_ext +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lX11 $LIBS" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +XrmInitialize () + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + LIBS=$ac_save_LIBS +for ac_dir in `$as_echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl dylib la dll; do + if test -r "$ac_dir/libX11.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi # $ac_x_libraries = no + +case $ac_x_includes,$ac_x_libraries in #( + no,* | *,no | *\'*) + # Didn't find X, or a directory has "'" in its name. + ac_cv_have_x="have_x=no";; #( + *) + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$ac_x_includes'\ + ac_x_libraries='$ac_x_libraries'" +esac +fi +;; #( + *) have_x=yes;; + esac + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $have_x" >&5 +$as_echo "$have_x" >&6; } + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes\ + ac_x_includes='$x_includes'\ + ac_x_libraries='$x_libraries'" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $x_libraries, headers $x_includes" >&5 +$as_echo "libraries $x_libraries, headers $x_includes" >&6; } +fi + +if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +$as_echo "#define X_DISPLAY_MISSING 1" >>confdefs.h + + X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -R must be followed by a space" >&5 +$as_echo_n "checking whether -R must be followed by a space... " >&6; } + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + ac_xsave_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + X_LIBS="$X_LIBS -R$x_libraries" +else + LIBS="$ac_xsave_LIBS -R $x_libraries" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + X_LIBS="$X_LIBS -R $x_libraries" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: neither works" >&5 +$as_echo "neither works" >&6; } +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_c_werror_flag=$ac_xsave_c_werror_flag + LIBS=$ac_xsave_LIBS + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char XOpenDisplay (); +int +main () +{ +return XOpenDisplay (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet" >&5 +$as_echo_n "checking for dnet_ntoa in -ldnet... " >&6; } +if ${ac_cv_lib_dnet_dnet_ntoa+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dnet_ntoa (); +int +main () +{ +return dnet_ntoa (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dnet_dnet_ntoa=yes +else + ac_cv_lib_dnet_dnet_ntoa=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +$as_echo "$ac_cv_lib_dnet_dnet_ntoa" >&6; } +if test "x$ac_cv_lib_dnet_dnet_ntoa" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" +fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dnet_ntoa in -ldnet_stub" >&5 +$as_echo_n "checking for dnet_ntoa in -ldnet_stub... " >&6; } +if ${ac_cv_lib_dnet_stub_dnet_ntoa+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet_stub $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dnet_ntoa (); +int +main () +{ +return dnet_ntoa (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dnet_stub_dnet_ntoa=yes +else + ac_cv_lib_dnet_stub_dnet_ntoa=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +$as_echo "$ac_cv_lib_dnet_stub_dnet_ntoa" >&6; } +if test "x$ac_cv_lib_dnet_stub_dnet_ntoa" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" +fi + + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$ac_xsave_LIBS" + + # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + ac_fn_c_check_func "$LINENO" "gethostbyname" "ac_cv_func_gethostbyname" +if test "x$ac_cv_func_gethostbyname" = xyes; then : + +fi + + if test $ac_cv_func_gethostbyname = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lnsl" >&5 +$as_echo_n "checking for gethostbyname in -lnsl... " >&6; } +if ${ac_cv_lib_nsl_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_nsl_gethostbyname=yes +else + ac_cv_lib_nsl_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_gethostbyname" >&5 +$as_echo "$ac_cv_lib_nsl_gethostbyname" >&6; } +if test "x$ac_cv_lib_nsl_gethostbyname" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" +fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for gethostbyname in -lbsd" >&5 +$as_echo_n "checking for gethostbyname in -lbsd... " >&6; } +if ${ac_cv_lib_bsd_gethostbyname+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char gethostbyname (); +int +main () +{ +return gethostbyname (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_bsd_gethostbyname=yes +else + ac_cv_lib_bsd_gethostbyname=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_bsd_gethostbyname" >&5 +$as_echo "$ac_cv_lib_bsd_gethostbyname" >&6; } +if test "x$ac_cv_lib_bsd_gethostbyname" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" +fi + + fi + fi + + # lieder@skyler.mavd.honeywell.com says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the name server (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + ac_fn_c_check_func "$LINENO" "connect" "ac_cv_func_connect" +if test "x$ac_cv_func_connect" = xyes; then : + +fi + + if test $ac_cv_func_connect = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for connect in -lsocket" >&5 +$as_echo_n "checking for connect in -lsocket... " >&6; } +if ${ac_cv_lib_socket_connect+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $X_EXTRA_LIBS $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char connect (); +int +main () +{ +return connect (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_socket_connect=yes +else + ac_cv_lib_socket_connect=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_connect" >&5 +$as_echo "$ac_cv_lib_socket_connect" >&6; } +if test "x$ac_cv_lib_socket_connect" = xyes; then : + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" +fi + + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + ac_fn_c_check_func "$LINENO" "remove" "ac_cv_func_remove" +if test "x$ac_cv_func_remove" = xyes; then : + +fi + + if test $ac_cv_func_remove = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for remove in -lposix" >&5 +$as_echo_n "checking for remove in -lposix... " >&6; } +if ${ac_cv_lib_posix_remove+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lposix $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char remove (); +int +main () +{ +return remove (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_posix_remove=yes +else + ac_cv_lib_posix_remove=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_posix_remove" >&5 +$as_echo "$ac_cv_lib_posix_remove" >&6; } +if test "x$ac_cv_lib_posix_remove" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +fi + + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + ac_fn_c_check_func "$LINENO" "shmat" "ac_cv_func_shmat" +if test "x$ac_cv_func_shmat" = xyes; then : + +fi + + if test $ac_cv_func_shmat = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shmat in -lipc" >&5 +$as_echo_n "checking for shmat in -lipc... " >&6; } +if ${ac_cv_lib_ipc_shmat+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lipc $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shmat (); +int +main () +{ +return shmat (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ipc_shmat=yes +else + ac_cv_lib_ipc_shmat=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ipc_shmat" >&5 +$as_echo "$ac_cv_lib_ipc_shmat" >&6; } +if test "x$ac_cv_lib_ipc_shmat" = xyes; then : + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +fi + + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for IceConnectionNumber in -lICE" >&5 +$as_echo_n "checking for IceConnectionNumber in -lICE... " >&6; } +if ${ac_cv_lib_ICE_IceConnectionNumber+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lICE $X_EXTRA_LIBS $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char IceConnectionNumber (); +int +main () +{ +return IceConnectionNumber (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_ICE_IceConnectionNumber=yes +else + ac_cv_lib_ICE_IceConnectionNumber=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +$as_echo "$ac_cv_lib_ICE_IceConnectionNumber" >&6; } +if test "x$ac_cv_lib_ICE_IceConnectionNumber" = xyes; then : + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +fi + + LDFLAGS=$ac_save_LDFLAGS + +fi + + + +xpm_includes= +xpm_libraries= + +# Check whether --with-xpm was given. +if test "${with_xpm+set}" = set; then : + withval=$with_xpm; +fi + +if test "$with_xpm" = "no" +then +xpm_includes=no +xpm_libraries=no +fi + +# Check whether --with-xpm-includes was given. +if test "${with_xpm_includes+set}" = set; then : + withval=$with_xpm_includes; xpm_includes="$withval" +fi + + +# Check whether --with-xpm-libraries was given. +if test "${with_xpm_libraries+set}" = set; then : + withval=$with_xpm_libraries; xpm_libraries="$withval" +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for Xpm" >&5 +$as_echo_n "checking for Xpm... " >&6; } +# +# +# Search the include files. Note that XPM can come in (as +# in X11R6) or in if installed locally. +# +if test "$xpm_includes" = ""; then +if ${ice_cv_xpm_includes+:} false; then : + $as_echo_n "(cached) " >&6 +else + +ice_xpm_save_LIBS="$LIBS" +ice_xpm_save_CFLAGS="$CFLAGS" +ice_xpm_save_CPPFLAGS="$CPPFLAGS" +ice_xpm_save_LDFLAGS="$LDFLAGS" +# +LIBS="$X_PRE_LIBS -lXpm -lXt -lX11 $X_EXTRA_LIBS $LIBS" +CFLAGS="$X_CFLAGS $CFLAGS" +CPPFLAGS="$X_CFLAGS $CPPFLAGS" +LDFLAGS="$X_LIBS $LDFLAGS" +# +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include + +int +main () +{ +int a; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +# X11/xpm.h is in the standard search path. +ice_cv_xpm_includes= + +else + +# X11/xpm.h is not in the standard search path. +# Locate it and put its directory in `xpm_includes' +# +# /usr/include/Motif* are used on HP-UX (Motif). +# /usr/include/X11* are used on HP-UX (X and Xaw). +# /usr/dt is used on Solaris (Motif). +# /usr/openwin is used on Solaris (X and Xaw). +# Other directories are just guesses. +for dir in "$x_includes" "${prefix}/include" /usr/include /usr/local/include \ + /usr/include/Motif2.0 /usr/include/Motif1.2 /usr/include/Motif1.1 \ + /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 \ + /usr/dt/include /usr/openwin/include \ + /usr/dt/*/include /opt/*/include /usr/include/Motif* \ + /usr/*/include/X11R6 /usr/*/include/X11R5 /usr/*/include/X11R4 \ + "${prefix}"/*/include /usr/*/include /usr/local/*/include \ + "${prefix}"/include/* /usr/include/* /usr/local/include/*; do +if test -f "$dir/X11/xpm.h" || test -f "$dir/xpm.h"; then +ice_cv_xpm_includes="$dir" +break +fi +done +if test "$ice_cv_xpm_includes" = "/usr/include"; then +ice_cv_xpm_includes= +fi + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +# +LIBS="$ice_xpm_save_LIBS" +CFLAGS="$ice_xpm_save_CFLAGS" +CPPFLAGS="$ice_xpm_save_CPPFLAGS" +LDFLAGS="$ice_xpm_save_LDFLAGS" + +fi + +xpm_includes="$ice_cv_xpm_includes" +fi +# +# +# Now for the libraries. +# +if test "$xpm_libraries" = ""; then +if ${ice_cv_xpm_libraries+:} false; then : + $as_echo_n "(cached) " >&6 +else + +ice_xpm_save_LIBS="$LIBS" +ice_xpm_save_CFLAGS="$CFLAGS" +ice_xpm_save_CPPFLAGS="$CPPFLAGS" +ice_xpm_save_LDFLAGS="$LDFLAGS" +# +LIBS="$X_PRE_LIBS -lXpm -lXt -lX11 $X_EXTRA_LIBS $LIBS" +CFLAGS="$X_CFLAGS $CFLAGS" +CPPFLAGS="$X_CFLAGS $CPPFLAGS" +LDFLAGS="$X_LIBS $LDFLAGS" +# +# +# We use XtToolkitInitialize() here since it takes no arguments +# and thus also works with a C++ compiler. +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +#include +#include + +int +main () +{ +XtToolkitInitialize(); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + +# libxpm.a is in the standard search path. +ice_cv_xpm_libraries= + +else + +# libXpm.a is not in the standard search path. +# Locate it and put its directory in `xpm_libraries' +# +# +# /usr/lib/Motif* are used on HP-UX (Motif). +# /usr/lib/X11* are used on HP-UX (X and Xpm). +# /usr/dt is used on Solaris (Motif). +# /usr/openwin is used on Solaris (X and Xpm). +# Other directories are just guesses. +for dir in "$x_libraries" "${prefix}/lib" /usr/lib /usr/local/lib \ + /usr/lib/Motif2.0 /usr/lib/Motif1.2 /usr/lib/Motif1.1 \ + /usr/lib/X11R6 /usr/lib/X11R5 /usr/lib/X11R4 /usr/lib/X11 \ + /usr/dt/lib /usr/openwin/lib \ + /usr/dt/*/lib /opt/*/lib /usr/lib/Motif* \ + /usr/*/lib/X11R6 /usr/*/lib/X11R5 /usr/*/lib/X11R4 /usr/*/lib/X11 \ + "${prefix}"/*/lib /usr/*/lib /usr/local/*/lib \ + "${prefix}"/lib/* /usr/lib/* /usr/local/lib/*; do +if test -d "$dir" && test "`ls $dir/libXpm.* 2> /dev/null`" != ""; then +ice_cv_xpm_libraries="$dir" +break +fi +done + +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +# +LIBS="$ice_xpm_save_LIBS" +CFLAGS="$ice_xpm_save_CFLAGS" +CPPFLAGS="$ice_xpm_save_CPPFLAGS" +LDFLAGS="$ice_xpm_save_LDFLAGS" + +fi + +# +xpm_libraries="$ice_cv_xpm_libraries" +fi +# +# Add Xpm definitions to X flags +# +if test "$xpm_includes" != "" && test "$xpm_includes" != "$x_includes" && test "$xpm_includes" != "no" +then +X_CFLAGS="-I$xpm_includes $X_CFLAGS" +fi +if test "$xpm_libraries" != "" && test "$xpm_libraries" != "$x_libraries" && test "$xpm_libraries" != "no" +then +case "$X_LIBS" in + *-R\ *) X_LIBS="-L$xpm_libraries -R $xpm_libraries $X_LIBS";; + *-R*) X_LIBS="-L$xpm_libraries -R$xpm_libraries $X_LIBS";; + *) X_LIBS="-L$xpm_libraries $X_LIBS";; +esac +fi +# +# +xpm_libraries_result="$xpm_libraries" +xpm_includes_result="$xpm_includes" + +if test "$xpm_libraries_result" != "no" && test "$xpm_includes_result" != "no" +then +$as_echo "#define HAVE_XPM 1" >>confdefs.h + + LINK_XPM="-lXpm" +else LINK_XPM="" +fi + + + +test "$xpm_libraries_result" = "" && + xpm_libraries_result="in default path" +test "$xpm_includes_result" = "" && + xpm_includes_result="in default path" +test "$xpm_libraries_result" = "no" && + xpm_libraries_result="(none)" +test "$xpm_includes_result" = "no" && + xpm_includes_result="(none)" +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: libraries $xpm_libraries_result, headers $xpm_includes_result" >&5 +$as_echo "libraries $xpm_libraries_result, headers $xpm_includes_result" >&6; } + +if test "$LINK_XPM" = ""; then + as_fn_error $? "cannot find libxpm" "$LINENO" 5 +fi +# +# Handle user hints +# + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libwraster is wanted" >&5 +$as_echo_n "checking if libwraster is wanted... " >&6; } + +# Check whether --with-libwraster was given. +if test "${with_libwraster+set}" = set; then : + withval=$with_libwraster; if test "$withval" != no ; then + LIBWRASTER_HOME="$withval" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes: libraries ${LIBWRASTER_HOME}/lib includes ${LIBWRASTER_HOME}/include" >&5 +$as_echo "yes: libraries ${LIBWRASTER_HOME}/lib includes ${LIBWRASTER_HOME}/include" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi +else + LIBWRASTER_HOME=/usr/local + if test ! -f "${LIBWRASTER_HOME}/include/wraster.h" + then + LIBWRASTER_HOME=/usr + if test ! -f "${LIBWRASTER_HOME}/include/wraster.h" + then + LIBWRASTER_HOME=/usr/X11R6 + fi + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes: libraries ${LIBWRASTER_HOME}/lib includes ${LIBWRASTER_HOME}/include" >&5 +$as_echo "yes: libraries ${LIBWRASTER_HOME}/lib includes ${LIBWRASTER_HOME}/include" >&6; } + +fi + + +# +# Locate libwraster, if wanted +# + if test -n "${LIBWRASTER_HOME}" + then + LDFLAGS="$LDFLAGS -L${LIBWRASTER_HOME}/lib" + CPPFLAGS="$CPPFLAGS -I${LIBWRASTER_HOME}/include" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for RCreateContext in -lwraster" >&5 +$as_echo_n "checking for RCreateContext in -lwraster... " >&6; } +if ${ac_cv_lib_wraster_RCreateContext+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lwraster $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char RCreateContext (); +int +main () +{ +return RCreateContext (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_wraster_RCreateContext=yes +else + ac_cv_lib_wraster_RCreateContext=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_wraster_RCreateContext" >&5 +$as_echo "$ac_cv_lib_wraster_RCreateContext" >&6; } +if test "x$ac_cv_lib_wraster_RCreateContext" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBWRASTER 1 +_ACEOF + + LIBS="-lwraster $LIBS" + +else + as_fn_error $? "libwraster is required" "$LINENO" 5 +fi + + else + as_fn_error $? "libwraster is required" "$LINENO" 5 + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +if test "$ac_cv_header_stdc" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: standard C headers not found" >&5 +$as_echo "$as_me: WARNING: standard C headers not found" >&2;}; fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 +$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } +if ${ac_cv_header_sys_wait_h+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#ifndef WEXITSTATUS +# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) +#endif +#ifndef WIFEXITED +# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) +#endif + +int +main () +{ + int s; + wait (&s); + s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_sys_wait_h=yes +else + ac_cv_header_sys_wait_h=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 +$as_echo "$ac_cv_header_sys_wait_h" >&6; } +if test $ac_cv_header_sys_wait_h = yes; then + +$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h + +fi + +if test "$ac_cv_header_sys_wait_h" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: sys/wait.h not found" >&5 +$as_echo "$as_me: WARNING: sys/wait.h not found" >&2;}; fi +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in fcntl.h limits.h stdlib.h string.h unistd.h sys/time.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_header not found" >&5 +$as_echo "$as_me: WARNING: $ac_header not found" >&2;} +fi + +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if ${ac_cv_header_time+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_time=yes +else + ac_cv_header_time=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + +fi + + +# Checks for typedefs, structures, and compiler characteristics. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 +$as_echo_n "checking for inline... " >&6; } +if ${ac_cv_c_inline+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifndef __cplusplus +typedef int foo_t; +static $ac_kw foo_t static_foo () {return 0; } +$ac_kw foo_t foo () {return 0; } +#endif + +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_inline=$ac_kw +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + test "$ac_cv_c_inline" != no && break +done + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 +$as_echo "$ac_cv_c_inline" >&6; } + +case $ac_cv_c_inline in + inline | yes) ;; + *) + case $ac_cv_c_inline in + no) ac_val=;; + *) ac_val=$ac_cv_c_inline;; + esac + cat >>confdefs.h <<_ACEOF +#ifndef __cplusplus +#define inline $ac_val +#endif +_ACEOF + ;; +esac + +ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" +if test "x$ac_cv_type_pid_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define pid_t int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "ssize_t" "ac_cv_type_ssize_t" "$ac_includes_default" +if test "x$ac_cv_type_ssize_t" = xyes; then : + +cat >>confdefs.h <<_ACEOF +#define HAVE_SSIZE_T 1 +_ACEOF + + +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if ${ac_cv_struct_tm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_tm=time.h +else + ac_cv_struct_tm=sys/time.h +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + + +# Checks for library functions. +for ac_header in vfork.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "vfork.h" "ac_cv_header_vfork_h" "$ac_includes_default" +if test "x$ac_cv_header_vfork_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VFORK_H 1 +_ACEOF + +fi + +done + +for ac_func in fork vfork +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + +if test "x$ac_cv_func_fork" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working fork" >&5 +$as_echo_n "checking for working fork... " >&6; } +if ${ac_cv_func_fork_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_fork_works=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* By Ruediger Kuhlmann. */ + return fork () < 0; + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_fork_works=yes +else + ac_cv_func_fork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_fork_works" >&5 +$as_echo "$ac_cv_func_fork_works" >&6; } + +else + ac_cv_func_fork_works=$ac_cv_func_fork +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&5 +$as_echo "$as_me: WARNING: result $ac_cv_func_fork_works guessed because of cross compilation" >&2;} +fi +ac_cv_func_vfork_works=$ac_cv_func_vfork +if test "x$ac_cv_func_vfork" = xyes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working vfork" >&5 +$as_echo_n "checking for working vfork... " >&6; } +if ${ac_cv_func_vfork_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_vfork_works=cross +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Thanks to Paul Eggert for this test. */ +$ac_includes_default +#include +#ifdef HAVE_VFORK_H +# include +#endif +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static void +#ifdef __cplusplus +sparc_address_test (int arg) +# else +sparc_address_test (arg) int arg; +#endif +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main () +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (0); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + return ( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_vfork_works=yes +else + ac_cv_func_vfork_works=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_vfork_works" >&5 +$as_echo "$ac_cv_func_vfork_works" >&6; } + +fi; +if test "x$ac_cv_func_fork_works" = xcross; then + ac_cv_func_vfork_works=$ac_cv_func_vfork + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&5 +$as_echo "$as_me: WARNING: result $ac_cv_func_vfork_works guessed because of cross compilation" >&2;} +fi + +if test "x$ac_cv_func_vfork_works" = xyes; then + +$as_echo "#define HAVE_WORKING_VFORK 1" >>confdefs.h + +else + +$as_echo "#define vfork fork" >>confdefs.h + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +$as_echo "#define HAVE_WORKING_FORK 1" >>confdefs.h + +fi + +if test "$ac_cv_func_fork_works" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: fork() doesn't seem to work" >&5 +$as_echo "$as_me: WARNING: fork() doesn't seem to work" >&2;}; fi +for ac_header in stdlib.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDLIB_H 1 +_ACEOF + +fi + +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 +$as_echo_n "checking for GNU libc compatible malloc... " >&6; } +if ${ac_cv_func_malloc_0_nonnull+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_malloc_0_nonnull=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if defined STDC_HEADERS || defined HAVE_STDLIB_H +# include +#else +char *malloc (); +#endif + +int +main () +{ +return ! malloc (0); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_malloc_0_nonnull=yes +else + ac_cv_func_malloc_0_nonnull=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 +$as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } +if test $ac_cv_func_malloc_0_nonnull = yes; then : + +$as_echo "#define HAVE_MALLOC 1" >>confdefs.h + +else + $as_echo "#define HAVE_MALLOC 0" >>confdefs.h + + case " $LIBOBJS " in + *" malloc.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS malloc.$ac_objext" + ;; +esac + + +$as_echo "#define malloc rpl_malloc" >>confdefs.h + +fi + + +if test "$ac_cv_func_malloc_0_nonnull" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: malloc() doesn't seem to work" >&5 +$as_echo "$as_me: WARNING: malloc() doesn't seem to work" >&2;}; fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 +$as_echo_n "checking for working memcmp... " >&6; } +if ${ac_cv_func_memcmp_working+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_memcmp_working=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Some versions of memcmp are not 8-bit clean. */ + char c0 = '\100', c1 = '\200', c2 = '\201'; + if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) + return 1; + + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte boundary. + William Lewis provided this test program. */ + { + char foo[21]; + char bar[21]; + int i; + for (i = 0; i < 4; i++) + { + char *a = foo + i; + char *b = bar + i; + strcpy (a, "--------01111111"); + strcpy (b, "--------10000000"); + if (memcmp (a, b, 16) >= 0) + return 1; + } + return 0; + } + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_memcmp_working=yes +else + ac_cv_func_memcmp_working=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 +$as_echo "$ac_cv_func_memcmp_working" >&6; } +test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in + *" memcmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" + ;; +esac + + + + + + for ac_header in $ac_header_list +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + + + + + + + + for ac_func in $ac_func_list +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working mktime" >&5 +$as_echo_n "checking for working mktime... " >&6; } +if ${ac_cv_func_working_mktime+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_working_mktime=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Test program from Paul Eggert and Tony Leneis. */ +#ifdef TIME_WITH_SYS_TIME +# include +# include +#else +# ifdef HAVE_SYS_TIME_H +# include +# else +# include +# endif +#endif + +#include +#include + +#ifdef HAVE_UNISTD_H +# include +#endif + +#ifndef HAVE_ALARM +# define alarm(X) /* empty */ +#endif + +/* Work around redefinition to rpl_putenv by other config tests. */ +#undef putenv + +static time_t time_t_max; +static time_t time_t_min; + +/* Values we'll use to set the TZ environment variable. */ +static const char *tz_strings[] = { + (const char *) 0, "TZ=GMT0", "TZ=JST-9", + "TZ=EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00" +}; +#define N_STRINGS (sizeof (tz_strings) / sizeof (tz_strings[0])) + +/* Return 0 if mktime fails to convert a date in the spring-forward gap. + Based on a problem report from Andreas Jaeger. */ +static int +spring_forward_gap () +{ + /* glibc (up to about 1998-10-07) failed this test. */ + struct tm tm; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); + + tm.tm_year = 98; + tm.tm_mon = 3; + tm.tm_mday = 5; + tm.tm_hour = 2; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + return mktime (&tm) != (time_t) -1; +} + +static int +mktime_test1 (time_t now) +{ + struct tm *lt; + return ! (lt = localtime (&now)) || mktime (lt) == now; +} + +static int +mktime_test (time_t now) +{ + return (mktime_test1 (now) + && mktime_test1 ((time_t) (time_t_max - now)) + && mktime_test1 ((time_t) (time_t_min + now))); +} + +static int +irix_6_4_bug () +{ + /* Based on code from Ariel Faigon. */ + struct tm tm; + tm.tm_year = 96; + tm.tm_mon = 3; + tm.tm_mday = 0; + tm.tm_hour = 0; + tm.tm_min = 0; + tm.tm_sec = 0; + tm.tm_isdst = -1; + mktime (&tm); + return tm.tm_mon == 2 && tm.tm_mday == 31; +} + +static int +bigtime_test (int j) +{ + struct tm tm; + time_t now; + tm.tm_year = tm.tm_mon = tm.tm_mday = tm.tm_hour = tm.tm_min = tm.tm_sec = j; + now = mktime (&tm); + if (now != (time_t) -1) + { + struct tm *lt = localtime (&now); + if (! (lt + && lt->tm_year == tm.tm_year + && lt->tm_mon == tm.tm_mon + && lt->tm_mday == tm.tm_mday + && lt->tm_hour == tm.tm_hour + && lt->tm_min == tm.tm_min + && lt->tm_sec == tm.tm_sec + && lt->tm_yday == tm.tm_yday + && lt->tm_wday == tm.tm_wday + && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst) + == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst)))) + return 0; + } + return 1; +} + +static int +year_2050_test () +{ + /* The correct answer for 2050-02-01 00:00:00 in Pacific time, + ignoring leap seconds. */ + unsigned long int answer = 2527315200UL; + + struct tm tm; + time_t t; + tm.tm_year = 2050 - 1900; + tm.tm_mon = 2 - 1; + tm.tm_mday = 1; + tm.tm_hour = tm.tm_min = tm.tm_sec = 0; + tm.tm_isdst = -1; + + /* Use the portable POSIX.1 specification "TZ=PST8PDT,M4.1.0,M10.5.0" + instead of "TZ=America/Vancouver" in order to detect the bug even + on systems that don't support the Olson extension, or don't have the + full zoneinfo tables installed. */ + putenv ((char*) "TZ=PST8PDT,M4.1.0,M10.5.0"); + + t = mktime (&tm); + + /* Check that the result is either a failure, or close enough + to the correct answer that we can assume the discrepancy is + due to leap seconds. */ + return (t == (time_t) -1 + || (0 < t && answer - 120 <= t && t <= answer + 120)); +} + +int +main () +{ + time_t t, delta; + int i, j; + + /* This test makes some buggy mktime implementations loop. + Give up after 60 seconds; a mktime slower than that + isn't worth using anyway. */ + alarm (60); + + for (;;) + { + t = (time_t_max << 1) + 1; + if (t <= time_t_max) + break; + time_t_max = t; + } + time_t_min = - ((time_t) ~ (time_t) 0 == (time_t) -1) - time_t_max; + + delta = time_t_max / 997; /* a suitable prime number */ + for (i = 0; i < N_STRINGS; i++) + { + if (tz_strings[i]) + putenv ((char*) tz_strings[i]); + + for (t = 0; t <= time_t_max - delta; t += delta) + if (! mktime_test (t)) + return 1; + if (! (mktime_test ((time_t) 1) + && mktime_test ((time_t) (60 * 60)) + && mktime_test ((time_t) (60 * 60 * 24)))) + return 1; + + for (j = 1; ; j <<= 1) + if (! bigtime_test (j)) + return 1; + else if (INT_MAX / 2 < j) + break; + if (! bigtime_test (INT_MAX)) + return 1; + } + return ! (irix_6_4_bug () && spring_forward_gap () && year_2050_test ()); +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_working_mktime=yes +else + ac_cv_func_working_mktime=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_working_mktime" >&5 +$as_echo "$ac_cv_func_working_mktime" >&6; } +if test $ac_cv_func_working_mktime = no; then + case " $LIBOBJS " in + *" mktime.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS mktime.$ac_objext" + ;; +esac + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 +$as_echo_n "checking return type of signal handlers... " >&6; } +if ${ac_cv_type_signal+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +return *(signal (0, 0)) (0) == 1; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_type_signal=int +else + ac_cv_type_signal=void +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 +$as_echo "$ac_cv_type_signal" >&6; } + +cat >>confdefs.h <<_ACEOF +#define RETSIGTYPE $ac_cv_type_signal +_ACEOF + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 +$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } +if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f conftest.sym conftest.file +echo >conftest.file +if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then + if test "$cross_compiling" = yes; then : + ac_cv_func_lstat_dereferences_slashed_symlink=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +struct stat sbuf; + /* Linux will dereference the symlink and fail, as required by POSIX. + That is better in the sense that it means we will not + have to compile and use the lstat wrapper. */ + return lstat ("conftest.sym/", &sbuf) == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_lstat_dereferences_slashed_symlink=yes +else + ac_cv_func_lstat_dereferences_slashed_symlink=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +else + # If the `ln -s' command failed, then we probably don't even + # have an lstat function. + ac_cv_func_lstat_dereferences_slashed_symlink=no +fi +rm -f conftest.sym conftest.file + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 +$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } + +test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && + +cat >>confdefs.h <<_ACEOF +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 +_ACEOF + + +if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then + case " $LIBOBJS " in + *" lstat.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS lstat.$ac_objext" + ;; +esac + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5 +$as_echo_n "checking whether stat accepts an empty string... " >&6; } +if ${ac_cv_func_stat_empty_string_bug+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_stat_empty_string_bug=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +struct stat sbuf; + return stat ("", &sbuf) == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_stat_empty_string_bug=no +else + ac_cv_func_stat_empty_string_bug=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5 +$as_echo "$ac_cv_func_stat_empty_string_bug" >&6; } +if test $ac_cv_func_stat_empty_string_bug = yes; then + case " $LIBOBJS " in + *" stat.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS stat.$ac_objext" + ;; +esac + + +cat >>confdefs.h <<_ACEOF +#define HAVE_STAT_EMPTY_STRING_BUG 1 +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working strtod" >&5 +$as_echo_n "checking for working strtod... " >&6; } +if ${ac_cv_func_strtod+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_strtod=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +$ac_includes_default +#ifndef strtod +double strtod (); +#endif +int +main() +{ + { + /* Some versions of Linux strtod mis-parse strings with leading '+'. */ + char *string = " +69"; + char *term; + double value; + value = strtod (string, &term); + if (value != 69 || term != (string + 4)) + return 1; + } + + { + /* Under Solaris 2.4, strtod returns the wrong value for the + terminating character under some conditions. */ + char *string = "NaN"; + char *term; + strtod (string, &term); + if (term != string && *(term - 1) == 0) + return 1; + } + return 0; +} + +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_strtod=yes +else + ac_cv_func_strtod=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_strtod" >&5 +$as_echo "$ac_cv_func_strtod" >&6; } +if test $ac_cv_func_strtod = no; then + case " $LIBOBJS " in + *" strtod.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS strtod.$ac_objext" + ;; +esac + +ac_fn_c_check_func "$LINENO" "pow" "ac_cv_func_pow" +if test "x$ac_cv_func_pow" = xyes; then : + +fi + +if test $ac_cv_func_pow = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pow in -lm" >&5 +$as_echo_n "checking for pow in -lm... " >&6; } +if ${ac_cv_lib_m_pow+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pow (); +int +main () +{ +return pow (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_m_pow=yes +else + ac_cv_lib_m_pow=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_m_pow" >&5 +$as_echo "$ac_cv_lib_m_pow" >&6; } +if test "x$ac_cv_lib_m_pow" = xyes; then : + POW_LIB=-lm +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cannot find library containing definition of pow" >&5 +$as_echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;} +fi + +fi + +fi + +for ac_func in vprintf +do : + ac_fn_c_check_func "$LINENO" "vprintf" "ac_cv_func_vprintf" +if test "x$ac_cv_func_vprintf" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_VPRINTF 1 +_ACEOF + +ac_fn_c_check_func "$LINENO" "_doprnt" "ac_cv_func__doprnt" +if test "x$ac_cv_func__doprnt" = xyes; then : + +$as_echo "#define HAVE_DOPRNT 1" >>confdefs.h + +fi + +fi +done + + +if test "$ac_cv_func_vprintf" != "yes"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: vprintf() doesn't seem to exist" >&5 +$as_echo "$as_me: WARNING: vprintf() doesn't seem to exist" >&2;}; fi +for ac_func in atexit dup2 mkdir pow select strchr strcspn strdup strerror strrchr strspn strstr strtol +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_func doesn't seem to be available" >&5 +$as_echo "$as_me: WARNING: $ac_func doesn't seem to be available" >&2;} +fi +done + +ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf" +if test "x$ac_cv_func_snprintf" = xyes; then : + x_cv_func_snprintf_exists=yes +else + x_cv_func_snprintf_exists=no +fi + + +if test $x_cv_func_snprintf_exists != yes; then x_cv_func_snprintf_size=no; else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if snprintf honors the size argument" >&5 +$as_echo_n "checking if snprintf honors the size argument... " >&6; } +if ${x_cv_func_snprintf_size+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + x_cv_func_snprintf_size=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int snprintf(char *str, size_t size, const char *format, ...); +#endif + +int +main () +{ +char foo[]="ABC"; snprintf(foo, 2, "%d", 12); +exit((foo[0]=='1' && foo[1]=='\0' && foo[2]=='C')?0:1); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + x_cv_func_snprintf_size=yes +else + x_cv_func_snprintf_size=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $x_cv_func_snprintf_size" >&5 +$as_echo "$x_cv_func_snprintf_size" >&6; } +fi +test $x_cv_func_snprintf_size != yes && +$as_echo "#define SNPRINTF_IS_SPRINTF 1" >>confdefs.h + + + +if test $x_cv_func_snprintf_size != yes; then x_cv_func_snprintf_retval=no; else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if snprintf return value is sane" >&5 +$as_echo_n "checking if snprintf return value is sane... " >&6; } +if ${x_cv_func_snprintf_retval+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + x_cv_func_snprintf_retval=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int snprintf(char *str, size_t size, const char *format, ...); +#endif + +int +main () +{ +char foo[10]; exit((snprintf(foo, 1, "%d", 9876)==4)?0:1); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + x_cv_func_snprintf_retval=yes +else + x_cv_func_snprintf_retval=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $x_cv_func_snprintf_retval" >&5 +$as_echo "$x_cv_func_snprintf_retval" >&6; } +fi +test $x_cv_func_snprintf_retval != yes && +$as_echo "#define SNPRINTF_BOGUS_RETVAL 1" >>confdefs.h + + + +if test $x_cv_func_snprintf_size != yes; then x_cv_func_snprintf_null_ok=no; else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if snprintf(NULL, 0, ...) works" >&5 +$as_echo_n "checking if snprintf(NULL, 0, ...) works... " >&6; } +if ${x_cv_func_snprintf_null_ok+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + x_cv_func_snprintf_null_ok=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int snprintf(char *str, size_t size, const char *format, ...); +#endif + +int +main () +{ +int r=snprintf(NULL, 0, "%d", 100); exit((r==3 || r==-1)?0:1); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + x_cv_func_snprintf_null_ok=yes +else + x_cv_func_snprintf_null_ok=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $x_cv_func_snprintf_null_ok" >&5 +$as_echo "$x_cv_func_snprintf_null_ok" >&6; } +fi +test $x_cv_func_snprintf_null_ok = yes && +$as_echo "#define SNPRINTF_NULL_OK 1" >>confdefs.h + + + + +if test $x_cv_func_snprintf_retval = yes -a $x_cv_func_snprintf_null_ok = yes; then + +$as_echo "#define HAVE_WORKING_SNPRINTF 1" >>confdefs.h + + x_cv_func_snprintf_working=yes + +else + x_cv_func_snprintf_working=no + case " $LIBOBJS " in + *" snprintf.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS snprintf.$ac_objext" + ;; +esac + + +$as_echo "#define snprintf rpl_snprintf" >>confdefs.h + +fi + + +if test $ac_cv_func_vprintf != yes; then x_cv_func_vsnprintf_exists=no; else +ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf" +if test "x$ac_cv_func_vsnprintf" = xyes; then : + x_cv_func_vsnprintf_exists=yes +else + x_cv_func_vsnprintf_exists=no +fi + +fi + + +if test $x_cv_func_vsnprintf_exists != yes; then x_cv_func_vsnprintf_size=no; else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if vsnprintf honors the size argument" >&5 +$as_echo_n "checking if vsnprintf honors the size argument... " >&6; } +if ${x_cv_func_vsnprintf_size+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + x_cv_func_vsnprintf_size=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int vsnprintf(char *str, size_t size, const char *format, va_list ap); +#endif +int doit(char *str, size_t size, const char *format, ...){ + va_list ap; + int r; + va_start(ap, format); + r=vsnprintf(str, size, format, ap); + va_end(ap); + return r; +} + +int +main () +{ +char foo[]="ABC"; doit(foo, 2, "%d", 12); +exit((foo[0]=='1' && foo[1]=='\0' && foo[2]=='C')?0:1); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + x_cv_func_vsnprintf_size=yes +else + x_cv_func_vsnprintf_size=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $x_cv_func_vsnprintf_size" >&5 +$as_echo "$x_cv_func_vsnprintf_size" >&6; } +fi +test $x_cv_func_vsnprintf_size != yes && +$as_echo "#define VSNPRINTF_IS_VSPRINTF 1" >>confdefs.h + + + +if test $x_cv_func_vsnprintf_size != yes; then x_cv_func_vsnprintf_retval=no; else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if vsnprintf return value is sane" >&5 +$as_echo_n "checking if vsnprintf return value is sane... " >&6; } +if ${x_cv_func_vsnprintf_retval+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + x_cv_func_vsnprintf_retval=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int vsnprintf(char *str, size_t size, const char *format, va_list ap); +#endif +int doit(char *str, size_t size, const char *format, ...){ + va_list ap; + int r; + va_start(ap, format); + r=vsnprintf(str, size, format, ap); + va_end(ap); + return r; +} + +int +main () +{ +char foo[10]; exit((doit(foo, 1, "%d", 9876)==4)?0:1); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + x_cv_func_vsnprintf_retval=yes +else + x_cv_func_vsnprintf_retval=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $x_cv_func_vsnprintf_retval" >&5 +$as_echo "$x_cv_func_vsnprintf_retval" >&6; } +fi +test $x_cv_func_vsnprintf_retval != yes && +$as_echo "#define VSNPRINTF_BOGUS_RETVAL 1" >>confdefs.h + + + +if test $x_cv_func_vsnprintf_size != yes; then x_cv_func_vsnprintf_null_ok=no; else +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if vsnprintf(NULL, 0, ...) works" >&5 +$as_echo_n "checking if vsnprintf(NULL, 0, ...) works... " >&6; } +if ${x_cv_func_vsnprintf_null_ok+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + x_cv_func_vsnprintf_null_ok=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int vsnprintf(char *str, size_t size, const char *format, va_list ap); +#endif +int doit(char *str, size_t size, const char *format, ...){ + va_list ap; + int r; + va_start(ap, format); + r=vsnprintf(str, size, format, ap); + va_end(ap); + return r; +} + +int +main () +{ +int r=doit(NULL, 0, "%d", 100); exit((r==3 || r==-1)?0:1); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + x_cv_func_vsnprintf_null_ok=yes +else + x_cv_func_vsnprintf_null_ok=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $x_cv_func_vsnprintf_null_ok" >&5 +$as_echo "$x_cv_func_vsnprintf_null_ok" >&6; } +fi +test $x_cv_func_vsnprintf_null_ok = yes && +$as_echo "#define VSNPRINTF_NULL_OK 1" >>confdefs.h + + + + +if test $x_cv_func_vsnprintf_retval = yes -a $x_cv_func_vsnprintf_null_ok = yes; then + +$as_echo "#define HAVE_WORKING_VSNPRINTF 1" >>confdefs.h + + x_cv_func_snprintf_working=yes + +else + x_cv_func_snprintf_working=no + case " $LIBOBJS " in + *" vsnprintf.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS vsnprintf.$ac_objext" + ;; +esac + + +$as_echo "#define vsnprintf rpl_vsnprintf" >>confdefs.h + +fi + + +CFLAGS="$CFLAGS \$(X_CFLAGS) \$(LIBCURL_CPPFLAGS)" +LIBS="$LIBS \$(LIBCURL)" +XLIBS="\$(X_PRE_LIBS) \$(X_LIBS) \$(LINK_XPM) -lX11 -lXext \$(X_EXTRA_LIBS)" + + +ac_config_files="$ac_config_files Makefile" + +ac_config_files="$ac_config_files b0rken/Makefile" + +ac_config_files="$ac_config_files m4/Makefile" + +ac_config_files="$ac_config_files wmgeneral/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by wmweather+ $as_me 2.18, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to the package provider." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +wmweather+ config.status 2.18 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "b0rken/Makefile") CONFIG_FILES="$CONFIG_FILES b0rken/Makefile" ;; + "m4/Makefile") CONFIG_FILES="$CONFIG_FILES m4/Makefile" ;; + "wmgeneral/Makefile") CONFIG_FILES="$CONFIG_FILES wmgeneral/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? + done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE=\"gmake\" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/dockapps/wmweather+/configure.ac b/dockapps/wmweather+/configure.ac new file mode 100644 index 0000000..cdc195f --- /dev/null +++ b/dockapps/wmweather+/configure.ac @@ -0,0 +1,84 @@ +# Process this file with autoconf to produce a configure script. +AC_INIT([wmweather+], 2.18,, [wmweather+]) +AM_CONFIG_HEADER(config.h) +AM_INIT_AUTOMAKE +AM_SILENT_RULES([yes]) + +# We need GNU sources for certain features +AH_VERBATIM([_GNU_SOURCE], +[/* Enable GNU extensions on systems that have them */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE +#endif]) + +AC_SUBST(VERSION) + +# for wmgeneral +WMGENERAL_GUI="libwmgeneral-x11.a" +AC_SUBST(WMGENERAL_GUI) + +# Checks for programs. +AC_PROG_AWK +AC_PROG_CC +AC_PROG_CC_STDC +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_RANLIB + +# Checks for libraries. +AC_CHECK_LIB([m],[cos]) +CHECK_LIBPCRE(, AC_MSG_ERROR(libpcre is required)) +LIBCURL_CHECK_CONFIG([yes],,,AC_MSG_ERROR(libcurl is required)) + +# Checks for header files. +AC_PATH_XTRA +AC_FIND_XPM +if test "$LINK_XPM" = ""; then + AC_MSG_ERROR(cannot find libxpm) +fi +CHECK_LIBWRASTER(, AC_MSG_ERROR(libwraster is required)) +AC_HEADER_STDC +if test "$ac_cv_header_stdc" != "yes"; then AC_MSG_WARN(standard C headers not found); fi +AC_HEADER_SYS_WAIT +if test "$ac_cv_header_sys_wait_h" != "yes"; then AC_MSG_WARN(sys/wait.h not found); fi +AC_CHECK_HEADERS([fcntl.h limits.h stdlib.h string.h unistd.h sys/time.h],, AC_MSG_WARN($ac_header not found)) +AC_HEADER_TIME + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_C_INLINE +AC_TYPE_PID_T +AC_TYPE_SIZE_T +AC_CHECK_TYPES([ssize_t]) +AH_BOTTOM( +[#if !HAVE_SSIZE_T +typedef signed ssize_t; +#endif]) +AC_STRUCT_TM + +# Checks for library functions. +AC_FUNC_FORK +if test "$ac_cv_func_fork_works" != "yes"; then AC_MSG_WARN(fork() doesn't seem to work); fi +AC_FUNC_MALLOC +if test "$ac_cv_func_malloc_0_nonnull" != "yes"; then AC_MSG_WARN(malloc() doesn't seem to work); fi +AC_FUNC_MEMCMP +AC_FUNC_MKTIME +AC_TYPE_SIGNAL +AC_FUNC_STAT +AC_FUNC_STRTOD +AC_FUNC_VPRINTF +if test "$ac_cv_func_vprintf" != "yes"; then AC_MSG_WARN(vprintf() doesn't seem to exist); fi +AC_CHECK_FUNCS([atexit dup2 mkdir pow select strchr strcspn strdup strerror strrchr strspn strstr strtol],, AC_MSG_WARN($ac_func doesn't seem to be available)) +FUNC_SNPRINTF_LIBOBJ +FUNC_VSNPRINTF_LIBOBJ + +CFLAGS="$CFLAGS \$(X_CFLAGS) \$(LIBCURL_CPPFLAGS)" +LIBS="$LIBS \$(LIBCURL)" +XLIBS="\$(X_PRE_LIBS) \$(X_LIBS) \$(LINK_XPM) -lX11 -lXext \$(X_EXTRA_LIBS)" +AC_SUBST(XLIBS) + +AC_CONFIG_FILES([Makefile]) +AC_CONFIG_FILES([b0rken/Makefile]) +AC_CONFIG_FILES([m4/Makefile]) +AC_CONFIG_FILES([wmgeneral/Makefile]) +AC_OUTPUT diff --git a/dockapps/wmweather+/convert.c b/dockapps/wmweather+/convert.c new file mode 100644 index 0000000..42e9e99 --- /dev/null +++ b/dockapps/wmweather+/convert.c @@ -0,0 +1,452 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#if TM_IN_SYS_TIME +# if TIME_WITH_SYS_TIME +# include +# include +# else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +# endif +#else +#include +#endif +#include +#include +#include +#include "convert.h" + +/* + * To indicate unavailable data + * 999 is used for temperature + * x<0 is used for rh, pressure, and windspeed + */ + + +/* Calculations */ + +int rh_C(int temp_C, int dewpt_C){ + float f; + + if(temp_C==999 || dewpt_C==999) return 999; + + f=1782.75*(dewpt_C-temp_C)/((237.7+dewpt_C)*(237.7+temp_C)); + return round(pow(10, f+2)); +} + +int rh_F(int temp_F, int dewpt_F){ + float f; + + if(temp_F==999 || dewpt_F==999) return 999; + + f=3208.95*(dewpt_F-temp_F)/((395.86+dewpt_F)*(395.86+temp_F)); + return round(pow(10, f+2)); +} + +int heatindex_C(int temp_C, int rh){ +#if 1 + if(temp_C==999 || temp_C<21 || rh<0) return 999; + return heatindex_F(temp_C2F(temp_C), rh); +#else + int temp2, rh2; + + if(temp_C==999 || temp_C<38 || rh<0) return 999; + + temp2=temp_C*temp_C; + rh2=rh*rh; + return round(16.18754948 + 2.900509394*temp_C - 0.0221545692*temp2 + 4.20938791*rh - 0.26300889*temp_C*rh + 0.0039811176*temp2*rh - 0.02956469*rh2 + 0.001305828*temp_C*rh2 - 6.4476e-06*temp2*rh2); +#endif +} + +int heatindex_F(int temp_F, int rh){ + int temp2, temp3, rh2, rh3; + + if(temp_F==999 || temp_F<70 || rh<0) return 999; + + temp2=temp_F*temp_F; + temp3=temp2*temp_F; + rh2=rh*rh; + rh3=rh2*rh; + return round(16.923 + .185212*temp_F + 5.37941*rh - .100254*temp_F*rh + (9.41695e-3)*temp2 + (7.28898e-3)*rh2 + (3.45372e-4)*temp2*rh - (8.14971e-4)*temp_F*rh2 + (1.02102e-5)*temp2*rh2 - (3.8646e-5)*temp3 + (2.91583e-5)*rh3 + (1.42721e-6)*temp3*rh + (1.97483e-7)*temp_F*rh3 - (2.18429e-8)*temp3*rh2 + (8.43296e-10)*temp2*rh3 - (4.81975e-11)*temp3*rh3); +#if 0 + return round(-42.379 + 2.04901523*temp_F + 10.14333127*rh - 0.22475541*temp_F*rh - .00683783*temp2 - .05481717*rh2 + .00122874*temp2*rh + .00085282*temp_F*rh2 - .00000199*temp2*rh2); +#endif +} + +int windchill_C(int temp_C, int windspeed){ + if(temp_C==999 || windspeed<0) return 999; + + return windchill_F(temp_C2F(temp_C), windspeed); +} + +int windchill_F(int temp_F, int windspeed){ + double ret; + if(temp_F==999 || windspeed<0) return 999; + + ret=35.74 + 0.6215*temp_F + (-35.75 + 0.4275*temp_F)*pow(windspeed*50292/57875.0, 0.16); + if(ret>temp_F) return temp_F; + return round(ret); +} + +/* Length Conversions */ + +int in2cm(int in){ + if(in<0) return in; + return round(in*2.54); +} + +float m2mi(int meters){ + if(meters<0) return meters; + return meters*125/201168; +} + +/* Windspeed Conversions */ + +int knots2mph(int knots){ + if(knots<0) return knots; + return round(knots*57875/50292.0); +} + +int knots2kph(int knots){ + if(knots<0) return knots; + return round(knots*463/250.0); +} + +int kph2knots(int kph){ + if(kph<0) return kph; + return round(kph*250/463.0); +} + +int knots2mps(int knots){ + if(knots<0) return knots; + return round(knots*463/900.0); +} + +int mps2knots(int mps){ + if(mps<0) return mps; + return round(mps*900/463.0); +} + +int knots2beaufort(int knots){ + if(knots<0) return knots; + if(knots<1) return 0; + if(knots<=3) return 1; + if(knots<=6) return 2; + if(knots<=10) return 3; + if(knots<=16) return 4; + if(knots<=21) return 5; + if(knots<=27) return 6; + if(knots<=33) return 7; + if(knots<=40) return 8; + if(knots<=47) return 9; + if(knots<=55) return 10; + if(knots<=63) return 11; + return 12; +} + + +/* Temperature Conversions */ + +int temp_C2F(int temp_C){ + if(temp_C==999) return 999; + return round(temp_C*9/5.0+32); +} + +int temp_F2C(int temp_F){ + if(temp_F==999) return 999; + return round((temp_F-32)*5/9.0); +} + + +/* Pressure Conversions */ + +float inHg2mmHg(float inHg){ + if(inHg<0) return inHg; + return inHg*25.4; +} + +float inHg2hPa(float inHg){ + if(inHg<0) return inHg; + return inHg*33.8639; +} + +float inHg2atm(float inHg){ + if(inHg<0) return inHg; + return inHg*.033421052632; +} + +float hPa2inHg(float hPa){ + if(hPa<0) return hPa; + return hPa/33.8639; +} + + +/* Time Conversions */ + +/* NOTE: y%400==100 because y=year-1900 */ +#define is_leap(y) (y%4==0 && (y%100!=0 || y%400==100)) + +/* mktime for UTC, more or less. + * Differences: + * - no range checking + * - never recalculates tm_wday or tm_yday + */ +time_t mkgmtime(struct tm *tm){ + static long msec[]={0, 2678400, 5097600, 7776000, 10368000, 13046400, 15638400, 18316800, 20995200, 23587200, 26265600, 28857600}; + time_t t; + int i; + + while(tm->tm_mon>=12){ + tm->tm_year++; + tm->tm_mon-=12; + } + while(tm->tm_mon<0){ + tm->tm_year--; + tm->tm_mon+=12; + } + + t=0; + if(tm->tm_year>70){ + for(i=70; itm_year; i++){ + t+=31536000; + if(is_leap(i)) t+=86400; + } + } else if(tm->tm_year<70){ + for(i=69; i>=tm->tm_year; i--){ + t-=31536000; + if(is_leap(i)) t-=86400; + } + } + t+=msec[tm->tm_mon]; + if(tm->tm_mon>1 && is_leap(tm->tm_year)) t+=86400; + t+=(((tm->tm_mday-1)*24+tm->tm_hour)*60+tm->tm_min)*60+tm->tm_sec; + + return t; +} + +int utc2local(int hm, int *month, int *day, int *year, int *wday){ + time_t t=time(NULL); + struct tm *tm; + + tm=gmtime(&t); + tm->tm_hour=hm/100; + tm->tm_min=hm%100; + if(month!=NULL && *month!=-1) tm->tm_mon=*month-1; + if(day!=NULL && *day!=-1) tm->tm_mday=*day; + if(year!=NULL && *year!=-1) tm->tm_year=*year; + + t=mkgmtime(tm); + tm=localtime(&t); + + if(month!=NULL) *month=tm->tm_mon+1; + if(day!=NULL) *day=tm->tm_mday; + if(year!=NULL) *year=tm->tm_year; + if(wday!=NULL) *wday=tm->tm_wday; + return tm->tm_hour*100+tm->tm_min; +} + +int local2utc(int hm, int *month, int *day, int *year, int *wday){ + time_t t=time(NULL); + struct tm *tm; + + tm=localtime(&t); + tm->tm_hour=hm/100; + tm->tm_min=hm%100; + if(month!=NULL && *month!=-1) tm->tm_mon=*month-1; + if(day!=NULL && *day!=-1) tm->tm_mday=*day; + if(year!=NULL && *year!=-1) tm->tm_year=*year; + + t=mktime(tm); + tm=gmtime(&t); + + if(month!=NULL) *month=tm->tm_mon+1; + if(day!=NULL) *day=tm->tm_mday; + if(year!=NULL) *year=tm->tm_year; + if(wday!=NULL) *wday=tm->tm_wday; + return tm->tm_hour*100+tm->tm_min; +} + +void fix_date(int *month, int *day, int *year, int *wday){ + time_t t=time(NULL); + struct tm *tm; + + tm=gmtime(&t); + if(month!=NULL && *month!=-1) tm->tm_mon=*month-1; + if(day!=NULL && *day!=-1) tm->tm_mday=*day; + if(year!=NULL && *year!=-1) tm->tm_year=*year; + + t=mkgmtime(tm); + tm=gmtime(&t); + + if(month!=NULL) *month=tm->tm_mon+1; + if(day!=NULL) *day=tm->tm_mday; + if(year!=NULL) *year=tm->tm_year; + if(wday!=NULL) *wday=tm->tm_wday; +} + +int hm2min(int hm){ + return hm/100*60+hm%100; +} + +/* Letter Case (destructive!) */ + +char *str_upper(char *str){ + char *c; + + for(c=str; *c!='\0'; c++){ + *c=toupper(*c); + } + return str; +} + +char *str_lower(char *str){ + char *c; + + for(c=str; *c!='\0'; c++){ + *c=tolower(*c); + } + return str; +} + + +/* Angle conversions */ + +/* Convert radian angle to degrees */ +double rad2deg(double angle) { + return 180.0*angle/PI; +} + +/* Convert degree angle to radians */ +double deg2rad(double angle) { + return PI*angle/180.0; +} + + +/* Date conversions */ + +/* Numerical day-of-year from month, day and year */ +int mdy2doy(int mn, int dy, int y) { + return 275*mn/9 - ((y%4==0 && (y%100!=0 || y%400==100))?1:2)*(mn + 9)/12 + dy-30; +} + +/* Julian day from month/day/year */ +double mdy2jd(int year, int month, int day) { + int A, B; + + year+=1900; + if (month <= 2) { + year -= 1; + month += 12; + } + A=year/100; + B=2 - A + A/4; + + return (int)(365.25*(year + 4716)) + (int)(30.6001*(month+1)) + day + B - 1524.5; +} + +/* convert Julian Day to centuries since J2000.0. */ +double jd2jcent(double jd) { + return (jd - 2451545.0)/36525.0; +} + +/* convert centuries since J2000.0 to Julian Day. */ +double jcent2jd(double t) { + return t * 36525.0 + 2451545.0; +} + + +/* Lat/Long conversions */ + +static double parse_dd_or_dms(char *s, char **e){ + double deg; + + *e=s; + if(strchr(s, 'x') || strchr(s, 'X')) return NAN; + if(!strchr(s, '\'')){ + if(!isdigit(*s) && *s!='.') return NAN; + return strtod(s, e); + } + + if(!isdigit(*s)) return NAN; + deg=strtol(s, e, 10); + if(*e==s || *e==NULL || **e!='\'') return deg; + s=++(*e); + if(!isdigit(*s)) return deg; + deg+=strtol(s, e, 10)/60.0; + if(*e==s || *e==NULL || **e!='\'') return deg; + s=++(*e); + if(!isdigit(*s) && *s!='.') return NAN; + deg+=strtod(s, e)/3600.0; + if(*e!=s && *e!=NULL && **e=='\'') (*e)++; + return deg; +} + +int str2dd(char *s, double *lat, double *lon){ + char *e; + int dir=0; + char c; + + c=toupper(*s); + if(c=='+' || c=='N'){ + s++; dir=1; + } + if(c=='-' || c=='S'){ + s++; dir=-1; + } + + *lat=parse_dd_or_dms(s, &e); + if(isnan(*lat) || e==NULL || e==s || *e=='\0') return 0; + if(!dir){ + c=toupper(*e); + if(c=='N') dir=1; + if(c=='S') dir=-1; + if(dir) e++; + } + if(dir<0) *lat=-*lat; + + while(isspace(*e)) e++; + if(*e=='\0') return 0; + + s=e; dir=0; + c=toupper(*s); + if(c=='+' || c=='W'){ + s++; dir=1; + } + if(c=='-' || c=='E'){ + s++; dir=-1; + } + + *lon=parse_dd_or_dms(s, &e); + if(isnan(*lon) || e==s) return 0; + if(e==NULL || *e=='\0') return 1; + if(dir==0){ + c=toupper(*e); + if(c=='W') dir=1; + if(c=='E') dir=-1; + if(dir!=0) e++; + } + if(dir<0) *lon=-*lon; + + return (*e=='\0'); +} diff --git a/dockapps/wmweather+/convert.h b/dockapps/wmweather+/convert.h new file mode 100644 index 0000000..0582c62 --- /dev/null +++ b/dockapps/wmweather+/convert.h @@ -0,0 +1,67 @@ +#ifndef PI +# define PI 3.1415926535897932384626433832795029L +#endif + +/* + * Note that all floating point calculations are rounded with .5 going up. + * Since C automatically truncates, adding .5 to every calculation does + * rounding for us nicely. + * + * To indicate unavailable data + * 999 is used for temperature + * x<0 is used for rh, pressure, and windspeed + */ + +/* Calculations */ +int rh_C(int temp_C, int dewpt_C); +int rh_F(int temp_F, int dewpt_F); +int heatindex_C(int temp_C, int rh); +int heatindex_F(int temp_F, int rh); +int windchill_C(int temp_C, int windspeed); /* knots */ +int windchill_F(int temp_F, int windspeed); /* knots */ + +/* Length Conversions */ +int in2cm(int in); +float m2mi(int meters); + +/* Windspeed Conversions */ +int knots2mph(int knots); +int knots2kph(int knots); +int knots2mps(int knots); +int knots2beaufort(int knots); +int kph2knots(int kph); +int mps2knots(int mps); + +/* Temperature Conversions */ +int temp_C2F(int temp_C); +int temp_F2C(int temp_F); + +/* Pressure Conversions */ +float inHg2mmHg(float inHg); +float inHg2hPa(float inHg); +float inHg2atm(float inHg); +float hPa2inHg(float hPa); + +/* Time Conversions */ +time_t mkgmtime(struct tm *tm); +int utc2local(int hm, int *mon, int *day, int *year, int *wday); +int local2utc(int hm, int *mon, int *day, int *year, int *wday); +void fix_date(int *month, int *day, int *year, int *wday); +int hm2min(int hm); + +/* Letter Case (destructive!) */ +char *str_upper(char *str); +char *str_lower(char *str); + +/* Angle conversions */ +double rad2deg(double angle); +double deg2rad(double angle); + +/* Date conversions */ +int mdy2doy(int mn, int dy, int y); +double mdy2jd(int year, int month, int day); +double jd2jcent(double jd); +double jcent2jd(double t); + +/* Lat/Long conversions */ +int str2dd(char *s, double *lat, double *lon); diff --git a/dockapps/wmweather+/depcomp b/dockapps/wmweather+/depcomp new file mode 100755 index 0000000..6b39162 --- /dev/null +++ b/dockapps/wmweather+/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1999-2020 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/dockapps/wmweather+/die.c b/dockapps/wmweather+/die.c new file mode 100644 index 0000000..83011d7 --- /dev/null +++ b/dockapps/wmweather+/die.c @@ -0,0 +1,57 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include +#include + +#include "wmweather+.h" +#include "die.h" + +void vwarn(char *fmt, va_list ap){ + fprintf(stderr, "%s: ", ProgName); + vfprintf(stderr, fmt, ap); + if (errno) fprintf(stderr, ": %s", strerror(errno)); + fprintf(stderr, "\n"); +} + +void warn(char *fmt, ...){ + va_list argv; + + va_start(argv, fmt); + vwarn(fmt, argv); + va_end(argv); +} + + +void vdie(char *fmt, va_list ap){ + vwarn(fmt, ap); + exit(1); +} + +void die(char *fmt, ...){ + va_list argv; + + va_start(argv, fmt); + vwarn(fmt, argv); + va_end(argv); + exit(1); +} diff --git a/dockapps/wmweather+/die.h b/dockapps/wmweather+/die.h new file mode 100644 index 0000000..4bc8492 --- /dev/null +++ b/dockapps/wmweather+/die.h @@ -0,0 +1,7 @@ +#include + +void warn(char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2))); +void die(char *fmt, ...) __attribute__ ((__format__ (__printf__, 1, 2), __noreturn__)); + +void vwarn(char *fmt, va_list ap) __attribute__ ((__format__ (__printf__, 1, 0))); +void vdie(char *fmt, va_list ap) __attribute__ ((__format__ (__printf__, 1, 0), __noreturn__)); diff --git a/dockapps/wmweather+/diff.c b/dockapps/wmweather+/diff.c new file mode 100644 index 0000000..3b77334 --- /dev/null +++ b/dockapps/wmweather+/diff.c @@ -0,0 +1,62 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include + +#include "wmweather+.h" + +int diff(char *file1, char *file2){ + FILE *fp1, *fp2; + size_t len1, len2; + struct stat statbuf; + int ret; + int len=BIGBUF_LEN/2; + char *s1=(char *)bigbuf, *s2=(char *)(bigbuf+len); + + if((fp1=fopen(file1, "r"))==NULL) return -1; + if((fp2=fopen(file2, "r"))==NULL){ fclose(fp1); return -1; } + if(fstat(fileno(fp1), &statbuf)<0 || !S_ISREG(statbuf.st_mode)){ + fclose(fp1); + fclose(fp2); + return -1; + } + len1=statbuf.st_size; + if(fstat(fileno(fp2), &statbuf)<0 || !S_ISREG(statbuf.st_mode)){ + fclose(fp1); + fclose(fp2); + return -1; + } + len2=statbuf.st_size; + if(len1!=len2){ fclose(fp1); fclose(fp2); return 1; } + if(len1==0){ fclose(fp1); fclose(fp2); return 0; } + while(!feof(fp1) && !feof(fp2)){ + len1=fread(s1, sizeof(char), len, fp1); + len2=fread(s2, sizeof(char), len, fp2); + if(len1!=len2 || memcmp(s1, s2, len1)){ + fclose(fp1); fclose(fp2); return 1; + } + } + ret=(!feof(fp1) || !feof(fp2)); + fclose(fp1); + fclose(fp2); + return ret; +} diff --git a/dockapps/wmweather+/diff.h b/dockapps/wmweather+/diff.h new file mode 100644 index 0000000..e5ea5e0 --- /dev/null +++ b/dockapps/wmweather+/diff.h @@ -0,0 +1,5 @@ +/* Returns 0 if the files are identical + * 1 if they differ + * -1 if fopen or fstat fails, or if files are not both regular files + */ +int diff(char *file1, char *file2); diff --git a/dockapps/wmweather+/dock.c b/dockapps/wmweather+/dock.c new file mode 100644 index 0000000..79d6134 --- /dev/null +++ b/dockapps/wmweather+/dock.c @@ -0,0 +1,782 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#if TM_IN_SYS_TIME +# if TIME_WITH_SYS_TIME +# include +# include +# else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +# endif +#else +#include +#endif +#include +#include +#include +#include +#include + +#include +#include + +#include "wmgeneral/wmgeneral-x11.h" +#include "wmgeneral/mouse_regions.h" +#include "wmgeneral/xpm_trans.h" + +#include "wmweather_master.xpm" +static int wmweather_mask_width; +static int wmweather_mask_height; +static char *wmweather_mask_bits; + +#include "wmweather+.h" +#include "convert.h" +#include "metar.h" +#include "avn.h" +#include "eta.h" +#include "mrf.h" +#include "warnings.h" +#include "forecast.h" +#include "radar.h" +#include "animation.h" +#include "die.h" +#include "font.h" + +/* Globals */ +int current_mode; +struct forecast *cur_forecast; +int window_X, window_Y; + +#define X 4 +#define P 4 +#define M (((100/P)+1)*X) +static struct forecast *last_fcst; +static int last_font=-1; +static time_t last_time=0; +static int but_stat=-1; +static int dclick=0; +static int dclick_counter=-1; +static time_t update_time; +static int forecast_priority, last_priority; +static struct animation anim; +static int counter_timer=0; +static int show_counter; +static int min_pct; +static int sigs=0; + + +/* Prototypes */ + +void DrawDisplay(int force); + + +/* Functions */ + +void sigusr2(int i){ + sigs |= 2; + if(signal(SIGUSR2, sigusr2)==SIG_ERR) + warn("Error setting SIGUSR2 signal handler!"); +} + +void sigusr1(int i){ + sigs |= 1; + if(signal(SIGUSR1, sigusr1)==SIG_ERR) + warn("Error setting SIGUSR1 signal handler!"); +} + +void sigfunc(int i){ + sigs |= i<<8; + if(signal(i, sigfunc)==SIG_ERR) + warn("Error setting %d signal handler!", i); +} + +void do_cleanup(void){ + metar_cleanup(); + warnings_cleanup(); + avn_cleanup(); + eta_cleanup(); + mrf_cleanup(); + radar_cleanup(); +} + +void sigabort(int i){ + // Not exactly safe, but everything is blowing up anyway + do_cleanup(); + signal(SIGABRT, SIG_DFL); + abort(); +} + +void init_dock(int argc, char **argv){ + sscanf(wmweather_master_xpm[0], "%d %d %*s", &wmweather_mask_width, &wmweather_mask_height); + wmweather_mask_bits=malloc((wmweather_mask_width+7)/8*wmweather_mask_height); + if(!wmweather_mask_bits) die("malloc failed"); + createXBMfromXPM(wmweather_mask_bits, wmweather_master_xpm, wmweather_mask_width, wmweather_mask_height); + openDockWindow(argc, argv, wmweather_master_xpm, wmweather_mask_bits, wmweather_mask_width, wmweather_mask_height); + + AddMouseRegion(0, 5, 5, 23, 14); /* Cur button */ + AddMouseRegion(1, 23, 5, 41, 14); /* Fcst burron */ + AddMouseRegion(2, 41, 5, 59, 14); /* Map button */ + AddMouseRegion(3, 5, 17, 59, 59); /* Large window */ + AddMouseRegion(4, 5, 17, 11, 24); /* left forecast arrow */ + AddMouseRegion(5, 53, 17, 59, 24); /* right forecast arrow */ + AddMouseRegion(6, 14, 17, 50, 24); /* forecast little window */ + AddMouseRegion(7, 5, 27, 59, 59); /* forecast big window */ + + init_metar(); + if(warning_zones) init_warnings(); + if(avn_station) init_avn(); + if(eta_station) init_eta(); + if(mrf_station) init_mrf(); + init_radar(); + errno=0; + if(atexit(do_cleanup)) warn("atexit() failed, files will not be cleaned up\n"); + + current_mode=starting_mode; + window_X=0; window_Y=0; + cur_forecast=NULL; + last_fcst=NULL; + last_font=-1; + last_time=0; + anim.do_animate=start_do_animation; + anim.show_counter=0; + anim.changed=1; + anim.min_pct=1; + anim.old_pct=0; + min_pct=20; + show_counter=0; + but_stat=-1; + dclick=0; + dclick_counter=-1; + update_time=0; + forecast_priority=4; + last_priority=-1; + + if(signal(SIGUSR1, sigusr1)==SIG_ERR) + warn("Error setting SIGUSR1 signal handler!"); + if(signal(SIGUSR2, sigusr2)==SIG_ERR) + warn("Error setting SIGUSR2 signal handler!"); + if(signal(SIGHUP, sigfunc)==SIG_ERR) + warn("Error setting SIGHUP signal handler!"); + if(signal(SIGINT, sigfunc)==SIG_ERR) + warn("Error setting SIGINT signal handler!"); + if(signal(SIGPIPE, sigfunc)==SIG_ERR) + warn("Error setting SIGPIPE signal handler!"); + if(signal(SIGTERM, sigfunc)==SIG_ERR) + warn("Error setting SIGTERM signal handler!"); + if(signal(SIGABRT, sigabort)==SIG_ERR) + warn("Error setting SIGABRT signal handler!"); + + DrawDisplay(1); +} + + +void update_dock(){ + XEvent Event; + int i=0, j; + int exposeflag=0; + + j=sigs; + sigs=0; + if(j){ + if(j&~3) exit(j); + if(j&1) i=current_mode; + if(j&2) i=-1; + if(j&3){ + switch(i){ + case 0: + update_metar(1); + break; + case 1: + update_avn(1); + update_eta(1); + update_mrf(1); + break; + case 2: + update_radar(1); + break; + default: + update_metar(1); + update_avn(1); + update_eta(1); + update_mrf(1); + update_radar(1); + break; + } + } + } + + if(update_time0) if(!--counter_timer){ + anim.changed=1; + show_counter=anim.show_counter=0; + } + + if(dclick_counter>-1) dclick_counter--; + + while(XPending(display)){ + XNextEvent(display, &Event); + switch (Event.type){ + case GraphicsExpose: + case NoExpose: + case Expose: + exposeflag=1; + break; + case DestroyNotify: + XCloseDisplay(display); + exit(0); + break; + case ButtonPress: + but_stat = CheckMouseRegion(Event.xbutton.x, Event.xbutton.y); + if((dclick!=but_stat+1 && dclick!=-but_stat-1) || dclick_counter<0){ + dclick=-but_stat-1; + dclick_counter=4; + } else if(dclick==-but_stat-1) dclick=but_stat+1; + + switch(but_stat){ + case 0: + case 1: + case 2: + if(current_mode!=but_stat){ + current_mode=but_stat; + if(!anim.do_animate && !show_counter){ + show_counter=1; + counter_timer=10; + } + DrawDisplay(1); + } + break; + case 3: + case 7: + switch(Event.xbutton.button){ + case 2: + if(current_mode==2){ + if(radar_cross!=NULL){ + do_radar_cross=1; + DrawDisplay(1); + } + } else { + anim.changed=1; + anim.show_counter=0; + anim.do_animate=!anim.do_animate; + anim.min_pct=1; + if(!anim.do_animate && current_mode==1){ + anim.min_pct=min_pct; + show_counter=anim.show_counter=1; + counter_timer=20; + } + } + break; + + case 4: + if(current_mode==1 && !anim.do_animate && min_pct<100){ + if(Event.xbutton.state&ShiftMask){ + min_pct+=10; + if(min_pct>100) min_pct=100; + } else min_pct++; + anim.min_pct=min_pct; + show_counter=anim.show_counter=1; + counter_timer=20; + anim.changed=1; + } + break; + + case 5: + if(current_mode==1 && !anim.do_animate && min_pct>0){ + if(Event.xbutton.state&ShiftMask){ + min_pct-=10; + if(min_pct<0) min_pct=0; + } else min_pct--; + anim.min_pct=min_pct; + anim.show_counter=1; + counter_timer=20; + anim.changed=1; + } + break; + + case 6: + if(current_mode==1){ + show_counter=anim.show_counter=1; + anim.changed=1; + counter_timer=0; + } + break; + } + break; + + case 4: + copyPixmapArea(123, 96, 6, 7, 65, 17); + break; + case 5: + copyPixmapArea(129, 96, 6, 7, 113, 17); + break; + } + break; + + case ButtonRelease: + i = CheckMouseRegion(Event.xbutton.x, Event.xbutton.y); + if(dclick_counter<0) dclick=0; + + if(but_stat==4){ + copyPixmapArea(123, 89, 6, 7, 65, 17); + } + if(but_stat==5){ + copyPixmapArea(129, 89, 6, 7, 113, 17); + } + if(current_mode==2 && (but_stat==3 || but_stat==7) + && Event.xbutton.button==2){ + do_radar_cross=0; + DrawDisplay(1); + } + + if(but_stat == i && but_stat >= 0){ + switch(but_stat){ + case 3: + case 7: + if(Event.xbutton.button==1){ + if(dclick==but_stat+1) kill(getpid(), SIGUSR1); + else if(warning_zones) output_warnings(0); + } + if(Event.xbutton.button==2){ + if(dclick==but_stat+1 && current_mode==1){ + show_counter=anim.show_counter=!anim.show_counter; + anim.changed=1; + counter_timer=0; + } + } + if(Event.xbutton.button==3 && warning_zones) output_warnings(1); + if(Event.xbutton.button==6){ + show_counter=anim.show_counter=0; + anim.changed=1; + } + break; + case 4: + current_forecast_next(-1); + forecast_priority=4; + last_priority=0; + DrawDisplay(0); + break; + case 5: + current_forecast_next(1); + forecast_priority=4; + last_priority=0; + DrawDisplay(0); + break; + case 6: + if(Event.xbutton.button==3) current_forecast_next(-1); + if(Event.xbutton.button==2){{ + struct forecast *f=current_forecast_get(); + struct forecast *g; + current_forecast_next(1); + while((g=current_forecast_get())!=f){ + if((f->hour<0 && g->hour>=0) || + (f->hour>=0 && g->hour<0)) break; + current_forecast_next(1); + } + }} + if(Event.xbutton.button==1) current_forecast_next(1); + forecast_priority=4; + last_priority=0; + DrawDisplay(0); + break; + } + but_stat=-1; + } + break; + } + } + if(exposeflag){ + setMaskXY(-window_X, -window_Y); + RedrawWindowXY(window_X, window_Y); + } + DoAnimation(&anim); +} + + +void DrawDisplay(int force){ + int font=0; + int x, y, z; + struct forecast *f; + time_t t; + struct tm *tm; + + if(current_warnings) font=1; + if(force || last_font!=font) last_time=-1; + last_font=font; + + switch(current_mode){ + case 0: + if(last_time==current.last_update) break; + last_time=current.last_update; + EnableMouseRegion(3); + DisableMouseRegion(4); + DisableMouseRegion(5); + DisableMouseRegion(6); + DisableMouseRegion(7); + window_X=0; window_Y=0; + + copyPixmapArea(124, 0, 54, 9, 5, 5); + copyPixmapArea(124, 9, 18, 9, 5, 5); + copyPixmapArea(124, 18, 54, 42, 5, 17); + + DrawString(7, 17, metar_station, font+1); + if(current.month>0 && current.month<13 && current.date!=-1){ + snprintf(bigbuf, BIGBUF_LEN, "%s %d", monthnames[(int)current.month], current.date); + DrawString(32, 17, bigbuf, font+1); + } + if(current.time!=-1){ + snprintf(bigbuf, BIGBUF_LEN, "%04dL (%04dZ)", current.time, local2utc(current.time, NULL, NULL, NULL, NULL)); + DrawString(7, 23, bigbuf, font+1); + } + if(current.temp!=999){ + x=(temp_mode==0)?temp_C2F(current.temp):current.temp; + if(x<-99) x=-99; + if(x>199) x=199; + snprintf(bigbuf, BIGBUF_LEN, "%d", x); + DrawString(32, 29, bigbuf, font); + } + if(current.rh!=-1){ + DrawChar(55, 29, '%', font); + DrawNumber(54, 29, current.rh, font); + } + if(current.windspeed==0){ + x=GetStringWidth("CALM"); + DrawString(32+(26-x)/2, 35, "CALM", font); + } else { + if(current.winddir>=0 && current.winddir<=16){ + x=GetStringWidth(directions[current.winddir]); + DrawString(45-x, 35, directions[current.winddir], font); + } + switch(windspeed_mode){ + case 0: + x=knots2mph(current.windspeed); + break; + case 1: + x=knots2kph(current.windspeed); + break; + case 3: + x=knots2mps(current.windspeed); + break; + case 4: + x=knots2beaufort(current.windspeed); + break; + } + if(x>=0 && x<1000) + DrawNumber(58, 35, x, font); + } + if(current.pressure>0){ + switch(pressure_mode){ + case 1: + snprintf(bigbuf, BIGBUF_LEN, "P:%4.0f", inHg2hPa(current.pressure)); + break; + case 2: + snprintf(bigbuf, BIGBUF_LEN, "P:%5.1f", inHg2mmHg(current.pressure)); + break; + case 3: + snprintf(bigbuf, BIGBUF_LEN, "P:%5.3f", inHg2atm(current.pressure)); + break; + default: + snprintf(bigbuf, BIGBUF_LEN, "P:%5.2f", current.pressure); + break; + } + DrawString(32, 41, bigbuf, font); + } + if(current.heatindex!=999){ + x=(temp_mode==0)?current.heatindex:temp_F2C(current.heatindex); + if(x<-99) x=-99; + if(x>199) x=199; + snprintf(bigbuf, BIGBUF_LEN, "HI: %d", x); + DrawString(32, 47, bigbuf, font); + } + if(current.windchill!=999){ + x=(temp_mode==0)?current.windchill:temp_F2C(current.windchill); + if(x<-99) x=-99; + if(x>199) x=199; + snprintf(bigbuf, BIGBUF_LEN, "WC: %d", x); + DrawString(32, 53, bigbuf, font); + } + + anim.show_counter=0; + anim.min_pct=1; + SetAnimation(&anim, 5, 28, current.sky, current.obs, current.vis, + current.frz, current.snow, current.rain, current.tstorm, 0, + current.moon); + + break; + + case 1: + f=current_forecast_get(); + if(last_fcst!=f) last_time=-1; + last_fcst=f; + if(f!=NULL){ + if(last_time==f->last_update) + goto case_1_end; /* still check bottom line priority */ + else last_time=f->last_update; + } + + DisableMouseRegion(3); + EnableMouseRegion(4); + EnableMouseRegion(5); + EnableMouseRegion(6); + EnableMouseRegion(7); + window_X=60; window_Y=0; + last_priority=-1; + + copyPixmapArea(124, 0, 54, 9, 65, 5); + copyPixmapArea(142, 9, 18, 9, 83, 5); + copyPixmapArea(123, 89, 6, 7, 65, 17); + copyPixmapArea(129, 89, 6, 7, 113, 17); + copyPixmapArea(124, 18, 36, 7, 74, 17); + copyPixmapArea(124, 18, 54, 32, 65, 27); + + if(f==NULL) break; + + t=time(NULL); + tm=localtime(&t); + bigbuf[0]='\0'; + if(tm->tm_mon+1==f->month && tm->tm_mday==f->day){ + if(f->hour<0) snprintf(bigbuf, BIGBUF_LEN, "TODAY"); + else snprintf(bigbuf, BIGBUF_LEN, "TODAY %dL", f->hour); + } else { + x=tm->tm_mon+1; + y=tm->tm_mday+1; + fix_date(&x, &y, NULL, NULL); + if(x==f->month && y==f->day){ + if(f->hour<0) snprintf(bigbuf, BIGBUF_LEN, "TOMORROW"); + else snprintf(bigbuf, BIGBUF_LEN, "TMRW %dL", f->hour); + } else { + z=0; + if(f->wday!=-1){ + for(z=0; z<5; z++){ + y++; + fix_date(&x, &y, NULL, NULL); + if(x==f->month && y==f->day){ + if(f->hour<0) snprintf(bigbuf, BIGBUF_LEN, "%s", + wdaynames[(int)f->wday]); + else snprintf(bigbuf, BIGBUF_LEN, "%.3s %dL", + wdaynames[(int)f->wday], f->hour); + z=99; + } + } + } + if(z<99 && f->month>0 && f->day>0){ + if(f->hour<0) + snprintf(bigbuf, BIGBUF_LEN, "%.3s %d", + monthnames[(int)f->month], f->day); + else snprintf(bigbuf, BIGBUF_LEN, "%.3s %d %dL", + monthnames[(int)f->month], f->day, + f->hour); + } + } + } + x=GetStringWidth(bigbuf); + DrawString(60+(64-x)/2, 18, bigbuf, font); + + x=GetStringWidth(f->station); + DrawString(118-x, 28, f->station, font+1); + + if(f->high!=999 || f->low!=999){ + DrawChar(104, 35, '/', font); + if(f->high!=999){ + x=(temp_mode==0)?f->high:temp_F2C(f->high); + if(x<-99) x=-99; + if(x>199) x=199; + DrawNumber(103, 35, x, font); + } + if(f->low!=999){ + x=(temp_mode==0)?f->low:temp_F2C(f->low); + if(x<-99) x=-99; + if(x>199) x=199; + DrawNumber(118, 35, x, font); + } + } + if(f->temp!=999){ + x=(temp_mode==0)?f->temp:temp_F2C(f->temp); + if(x<-99) x=-99; + if(x>199) x=199; + snprintf(bigbuf, BIGBUF_LEN, "%d", x); + DrawString(92, 41, bigbuf, font); + } + if(f->rh!=-1){ + DrawChar(115, 41, '%', font); + DrawNumber(114, 41, f->rh, font); + } + if(f->windspeed==0){ + x=GetStringWidth("CALM"); + DrawString(92+(26-x)/2, 47, "CALM", font); + } else { + if(f->winddir>=0 && f->winddir<=16){ + x=GetStringWidth(directions[f->winddir]); + DrawString(105-x, 47, directions[f->winddir], font); + } + switch(windspeed_mode){ + case 0: + x=knots2mph(f->windspeed); + break; + case 1: + x=knots2kph(f->windspeed); + break; + case 3: + x=knots2mps(f->windspeed); + break; + case 4: + x=knots2beaufort(f->windspeed); + break; + } + if(x>=0 && x<1000) + DrawNumber(118, 47, x, font); + } + + anim.show_counter=show_counter; + anim.min_pct=min_pct; + SetAnimation(&anim, 65, 28, f->sky, f->obs, f->vis, + f->frz, f->snow, f->rain, f->tstorm, f->svtstorm, + f->moon); + +case_1_end: + if(f==NULL || forecast_priority==last_priority) break; + + /* This is a little tricky. We use the switch as a calculated goto + * (ick) to determine which order to try things in. Fall-through is + * intended. */ + switch(forecast_priority){ + default: + /* WTF? Oh well, just start at the beginning */ + + case 0: + if(f->heatindex>=80 && f->heatindex!=999){ + copyPixmapArea(124, 18, 26, 5, 92, 53); + x=(temp_mode==0)?f->heatindex:temp_F2C(f->heatindex); + snprintf(bigbuf, BIGBUF_LEN, "HI: %d", x); + DrawString(92, 53, bigbuf, font); + forecast_priority=0; + break; + } + + case 1: + if(f->windchill<=40 && f->windchill!=999){ + copyPixmapArea(124, 18, 26, 5, 92, 53); + x=(temp_mode==0)?f->windchill:temp_F2C(f->windchill); + snprintf(bigbuf, BIGBUF_LEN, "WC: %d", x); + DrawString(92, 53, bigbuf, font); + forecast_priority=1; + break; + } + + case 2: + if(f->snowamt>0){ + copyPixmapArea(124, 18, 26, 5, 92, 53); + if(f->snowamt==1){ x=1; y=2; } + else if(f->snowamt==8){ x=8; y=-1; } + else { x=f->snowamt; y=x+2; } + if(length_mode==1){ + x=in2cm(x); y=in2cm(y); + } + if(x>9 && y>9) x=9; + if(y==-1) snprintf(bigbuf, BIGBUF_LEN, "SN:>%d", x); + else snprintf(bigbuf, BIGBUF_LEN, "SN:%d-%d", x, y); + DrawString(92, 53, bigbuf, font); + forecast_priority=2; + break; + } + + case 3: + if(f->precipamt>0){ + copyPixmapArea(124, 18, 26, 5, 92, 53); + switch(f->precipamt){ + case 1: + if(length_mode==0) DrawString(92, 53, "P:.01-.1", font); + if(length_mode==1) DrawString(92, 53, "P: 0-.25", font); + break; + case 2: + if(length_mode==0) DrawString(92, 53, "P:.1-.25", font); + if(length_mode==1) DrawString(92, 53, "P:.25-.6", font); + break; + case 3: + if(length_mode==0) DrawString(92, 53, "P:.25-.5", font); + if(length_mode==1) DrawString(92, 53, "P:.6-1.3", font); + break; + case 4: + if(length_mode==0) DrawString(92, 53, "P: .5-1", font); + if(length_mode==1) DrawString(92, 53, "P: 1-2.5", font); + break; + case 5: + if(length_mode==0) DrawString(92, 53, "P: 1-2", font); + if(length_mode==1) DrawString(92, 53, "P: 2.5-5", font); + break; + case 6: + if(length_mode==0) DrawString(92, 53, "P: >2", font); + if(length_mode==1) DrawString(92, 53, "P: >5", font); + break; + case 7: + if(length_mode==0) DrawString(92, 53, "P: >3", font); + if(length_mode==1) DrawString(92, 53, "P: >7.6", font); + break; + } + forecast_priority=3; + break; + } + + case 4: + copyPixmapArea(124, 18, 26, 5, 92, 53); + x=GetStringWidth("<")+1; + y=GetStringWidth(f->ID)+1; + z=GetStringWidth(">"); + DrawChar(118-x-y-z, 53, '<', font+1); + DrawString(118-y-z, 53, f->ID, font+1); + DrawChar(118-z, 53, '>', font+1); + forecast_priority=4; + break; + } + last_priority=forecast_priority; + break; + + case 2: + if(last_time==radar_update_time) break; + last_time=radar_update_time; + EnableMouseRegion(3); + DisableMouseRegion(4); + DisableMouseRegion(5); + DisableMouseRegion(6); + DisableMouseRegion(7); + window_X=0; window_Y=0; + + copyPixmapArea(124, 0, 54, 9, 5, 5); + copyPixmapArea(160, 9, 18, 9, 41, 5); + put_radar(6, 18, font); + + anim.active=0; + break; + } + DoAnimation(&anim); +} diff --git a/dockapps/wmweather+/dock.h b/dockapps/wmweather+/dock.h new file mode 100644 index 0000000..87c32ee --- /dev/null +++ b/dockapps/wmweather+/dock.h @@ -0,0 +1,2 @@ +void init_dock(int argc, char **argv); +void update_dock(); diff --git a/dockapps/wmweather+/download.c b/dockapps/wmweather+/download.c new file mode 100644 index 0000000..26b0e14 --- /dev/null +++ b/dockapps/wmweather+/download.c @@ -0,0 +1,282 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include +#include + +#include "die.h" +#include "download.h" + +static const char *user_agent = "wmweather+/" VERSION; + +static CURLM *multi_handle=NULL; +struct download_info { + CURL *handle; + FILE *fp; + void (*callback)(char *filename, void *data); + char *filename; + void *data; + int flags; + struct download_info *next; + struct download_info *prev; +}; +static struct download_info *active_list=NULL; + +static void add_active(struct download_info *d){ + d->next=active_list; + d->prev=NULL; + if(active_list!=NULL) active_list->prev=d; + active_list=d; +} + +static void remove_active(struct download_info *d){ + if(active_list==d) active_list=d->next; + if(d->prev!=NULL) d->prev->next=d->next; + if(d->next!=NULL) d->next->prev=d->prev; + d->next=NULL; + d->prev=NULL; +} + +static struct download_info *find_active_file(char *f){ + struct download_info *d; + for(d=active_list; d!=NULL; d=d->next){ + if(!strcmp(d->filename,f)) return d; + } + return NULL; +} + +static void handle_done(CURLMsg *msg){ + struct download_info *info; + long status; + + if(curl_easy_getinfo(msg->easy_handle, CURLINFO_PRIVATE, &info)!=CURLE_OK || info==NULL){ + warn("Could not retrieve info handle from CURL handle. WTF?"); + for(info=active_list; info && info->handle!=msg->easy_handle; info=info->next); + if(info==NULL){ + warn("Could not find it in the active list either. WTF?"); + curl_multi_remove_handle(multi_handle, msg->easy_handle); + curl_easy_cleanup(msg->easy_handle); + return; + } + } + + remove_active(info); + curl_multi_remove_handle(multi_handle, info->handle); + fclose(info->fp); + + if(msg->data.result!=CURLE_OK){ + if(msg->data.result==CURLE_HTTP_RETURNED_ERROR){ + if(curl_easy_getinfo(info->handle, CURLINFO_RESPONSE_CODE, &status)!=CURLE_OK) status=600; + if(status!=404 || !(info->flags&DOWNLOAD_NO_404)) + warn("HTTP download of %s returned %ld", info->filename, status); + } else { + warn("Download of %s failed: %s", info->filename, curl_easy_strerror(msg->data.result)); + } + unlink(info->filename); + } else { + (*info->callback)(info->filename, info->data); + } + + curl_easy_cleanup(info->handle); + free(info->filename); + free(info); +} + + +void download_init(char *email){ + if(multi_handle==NULL){ + if(curl_global_init(CURL_GLOBAL_ALL)) + die("Could not initialize CURL"); + multi_handle=curl_multi_init(); + if(multi_handle==NULL) die("Could not create a CURL multihandle"); + } +} + +void download_process(unsigned long sleeptime){ + fd_set rd, wr, er; + struct timeval tv; + int maxfd, n, x; + CURLMsg *msg; + CURLMcode status; + + if(sleeptime>0) do { + FD_ZERO(&rd); + FD_ZERO(&wr); + FD_ZERO(&er); + errno = 0; + status = curl_multi_fdset(multi_handle, &rd, &wr, &er, &maxfd); + if(status!=CURLM_OK){ + warn("Could not fetch curl fdset: %s", curl_multi_strerror(status)); + usleep(sleeptime); + return; + } + if(maxfd<0){ + /* It's not something we can select on, sleep and then blindly call + * curl_multi_perform. + */ + usleep(sleeptime); + break; + } + + tv.tv_sec=0; + tv.tv_usec=sleeptime; + if(sleeptime>=1000000){ + tv.tv_sec=sleeptime/1000000; + tv.tv_usec=sleeptime%1000000; + } + + n=select(maxfd+1, &rd, &wr, &er, &tv); + if(n==0) return; + if(n<0){ + switch(errno){ + case EINTR: + case ENOMEM: + /* transient errors, hope it's good next time */ + break; + + default: + warn("WTF? select errno=%d", errno); + break; + } + usleep(sleeptime); + return; + } + } while(0); + + while(curl_multi_perform(multi_handle, &x)==CURLM_CALL_MULTI_PERFORM); + while((msg=curl_multi_info_read(multi_handle, &x))){ + switch(msg->msg){ + case CURLMSG_DONE: + handle_done(msg); + break; + default: + warn("Unknown CURL message type %d", msg->msg); + break; + } + } +} + +int download_kill(char *filename){ + struct download_info *info; + info=find_active_file(filename); + if(info==NULL) return ENOENT; + remove_active(info); + curl_multi_remove_handle(multi_handle, info->handle); + warn("Download of %s interrupted", info->filename); + unlink(info->filename); + curl_easy_cleanup(info->handle); + free(info->filename); + fclose(info->fp); + free(info); + return 0; +} + +int download_file(char *filename, char *from_addr, char *postdata, int flags, void (*callback)(char *filename, void *data), void *data){ + struct download_info *info=NULL; + + if(callback==NULL || filename==NULL || from_addr==NULL) return 1; + + if(flags&DOWNLOAD_KILL_OTHER_REQUESTS){ + download_kill(filename); + } else { + info=find_active_file(filename); + if(info!=NULL){ + errno=0; + warn("Cannot download %s: download already in progress", filename); + return 1; + } + } + + if((info=malloc(sizeof(*info)))==NULL){ + warn("Malloc error in download_file"); + goto fail; + } + info->handle=NULL; + info->fp=NULL; + info->callback=callback; + info->filename=NULL; + info->data=data; + info->flags=flags; + info->next=NULL; + info->prev=NULL; + + if((info->filename=strdup(filename))==NULL) goto fail; + if((info->fp=fopen(info->filename, "wb"))==NULL){ + warn("Error opening %s for output", info->filename); + goto fail; + } + + info->handle=curl_easy_init(); + if(info->handle==NULL){ + warn("Error creating a CURL handle"); + goto fail; + } + if(curl_easy_setopt(info->handle, CURLOPT_URL, from_addr)!=CURLE_OK || + curl_easy_setopt(info->handle, CURLOPT_NOPROGRESS, 1)!=CURLE_OK || + curl_easy_setopt(info->handle, CURLOPT_NOSIGNAL, 1)!=CURLE_OK || + curl_easy_setopt(info->handle, CURLOPT_WRITEDATA, info->fp)!=CURLE_OK || + curl_easy_setopt(info->handle, CURLOPT_FAILONERROR, 1)!=CURLE_OK || + curl_easy_setopt(info->handle, CURLOPT_AUTOREFERER, 1)!=CURLE_OK || + curl_easy_setopt(info->handle, CURLOPT_FOLLOWLOCATION, 1)!=CURLE_OK || + curl_easy_setopt(info->handle, CURLOPT_USERAGENT, user_agent)!=CURLE_OK || + curl_easy_setopt(info->handle, CURLOPT_TIMEOUT, 10*60)!=CURLE_OK || + curl_easy_setopt(info->handle, CURLOPT_PRIVATE, info)!=CURLE_OK + ){ + warn("Error setting CURL options"); + goto fail; + } + if(postdata!=NULL){ + if(curl_easy_setopt(info->handle, CURLOPT_COPYPOSTFIELDS, postdata)!=CURLE_OK){ + warn("Error setting CURL post options"); + goto fail; + } + } + if(curl_multi_add_handle(multi_handle, info->handle)!=CURLM_OK){ + warn("Could not add handle for %s to multihandle", info->filename); + goto fail; + } + add_active(info); + + /* Call download_process with 0 to force at least one call to + * curl_multi_process, because curl won't actually create a socket until + * that function is called and download_process won't otherwise call + * curl_multi_process until the socket is created... + */ + download_process(0); + + return 0; + +fail: + if(info){ + if(info->handle) curl_easy_cleanup(info->handle); + info->handle=NULL; + if(info->fp) fclose(info->fp); + info->fp=NULL; + if(info->filename){ + unlink(info->filename); + free(info->filename); + } + info->filename=NULL; + free(info); + } + return 1; +} diff --git a/dockapps/wmweather+/download.h b/dockapps/wmweather+/download.h new file mode 100644 index 0000000..492a6b7 --- /dev/null +++ b/dockapps/wmweather+/download.h @@ -0,0 +1,13 @@ +#ifndef DOWNLOAD_H +#define DOWNLOAD_H + +/* flags for download_file */ +#define DOWNLOAD_NO_404 1 +#define DOWNLOAD_KILL_OTHER_REQUESTS 2 + +void download_init(char *email); +void download_process(unsigned long sleep_time); +int download_kill(char *filename); +int download_file(char *filename, char *from_addr, char *postdata, int flags, void (*callback)(char *filename, void *data), void *data); + +#endif diff --git a/dockapps/wmweather+/eta.c b/dockapps/wmweather+/eta.c new file mode 100644 index 0000000..9697a6b --- /dev/null +++ b/dockapps/wmweather+/eta.c @@ -0,0 +1,365 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "wmweather+.h" +#include "forecast.h" +#include "getLine.h" +#include "convert.h" +#include "download.h" +#include "diff.h" +#include "die.h" +#include "sunzenith.h" +#include "moon.h" +#include "subst.h" + +/* Important variables */ +#define ETA_MAX 21 +static time_t eta_time=0; +static char *eta_file=NULL; +static char *eta_newfile=NULL; +static char *eta_req[2]={ NULL, NULL }; +static struct forecast forecasts[ETA_MAX]; + + +/********* init functions ************/ +static int parse_eta(char *file); + +static void reset_eta(void){ + int i; + + for(i=0; i=0){ + if(S_ISREG(statbuf.st_mode) && statbuf.st_size!=0 + && diff(eta_newfile, eta_file) && parse_eta(eta_newfile)){ + eta_time=find_next_time(eta_newfile, "MOS GUIDANCE", 720); + rename(eta_newfile, eta_file); + } else { + unlink(eta_newfile); + if(!parse_eta(eta_file)) reset_eta(); + } + } +} + +void eta_cleanup(void){ + if(eta_file==NULL) return; + unlink(eta_newfile); + unlink(eta_file); +} + +void update_eta(int force){ + time_t t; + + if(eta_file==NULL) return; + + t=time(NULL)/60; + if(!force && eta_time>t) return; + + eta_time=find_next_time(eta_file, "MOS GUIDANCE", 15); + download_file(eta_newfile, eta_req[0], eta_req[1], force?DOWNLOAD_KILL_OTHER_REQUESTS:0, eta_callback, NULL); +} + + +/********* parse functions ************/ + +#define NEXT(s) free(s); \ + len=getLine(&s, fp); \ + if(strstr(s, "")!=NULL) len=0; + +#define DIE() return (free(s), fclose(fp), 0) +#define SPLIT(s) { \ + ID[0]=s[0]; \ + ID[1]=s[1]; \ + ID[2]=s[2]; \ + ID[3]='\0'; \ + memset(split,'\0',sizeof(split)); \ + for(n=0, c=s+4; c12){ + c=strchr(c+1, '/'); + if(c==NULL) DIE(); + for(mon=1; mon<=12; mon++){ + if(!strncmp(c+1, monthnames[mon], 3) && isspace(*(c+4))) break; + if(!strncmp(c+1, monthnames2[mon], 4) && isspace(*(c+5))){ + i=5; + break; + } + } + } + day=atoi(c+i); + if(day<1) DIE(); + if(c>s+4) day--; + if(mon90) + forecasts[n].moon=calc_moon(m, j, z, h*100); + } + + while(1){ + NEXT(s); + if(len<=10) break; + SPLIT(s); + + if(!strcmp(ID, "X/N")) j=1; + else if(!strcmp(ID, "N/X")) j=2; + else j=0; + if(j!=0){ + for(n=0; n>1); + for(m=0; m=19) + || (forecasts[m].day==k && forecasts[m].hour<19))) + forecasts[m].high=i; + if((j&1)==0 && + ((forecasts[m].day==k-1 && forecasts[m].hour>=8) + || (forecasts[m].day==k && forecasts[m].hour<8))) + forecasts[m].low=i; + } + j++; + } + continue; + } + if(!strcmp(ID, "TMP")){ + ASSIGN(temp); + continue; + } + if(!strcmp(ID, "DPT")){ + ASSIGN(dewpt); + continue; + } + if(!strcmp(ID, "WDR")){ + for(n=0; n0 && m0 && m + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include + +#include +#include + +#include "font.h" + +#include "wmgeneral/wmgeneral-x11.h" +extern XpmIcon wmgen; +extern GC NormalGC; +extern Window Root; + +#include "characters.xpm" + +static Pixmap fonts[3]={ None, None, None }; +static char *colors[3][4]={ + { "#000000", "#0C4E66", "#127599", "#1EC3FF" }, + { "#000000", "#664D0B", "#997411", "#FFC21D" }, + { "#000000", "#662B31", "#99414A", "#FF6D7B" } +}; + +void init_font(int i){ + XpmIcon x; + XpmColorSymbol cols[4]={ + {"Background", NULL, 0}, + {"Low", NULL, 0}, + {"Mid", NULL, 0}, + {"High", NULL, 0} + }; + int j; + + if(fonts[i]!=None) return; + for(j=0; j<4; j++){ + cols[j].pixel=GetColor(colors[i][j]); + } + x.attributes.numsymbols=4; + x.attributes.colorsymbols=cols; + x.attributes.exactColors=False; + x.attributes.closeness=40000; + x.attributes.valuemask=(XpmColorSymbols | XpmExactColors | XpmCloseness); + GetXPM(&x, characters_xpm); + fonts[i]=x.pixmap; + XFreePixmap(display, x.mask); +} + +int DrawString(int x, int y, char *str, int font){ + int w; + char *c; + + w=0; + for(c=str; *c!='\0'; c++){ + w+=DrawChar(x+w, y, *c, font); + w++; + } + + return w-1; +} + +int GetStringWidth(char *str){ + int w; + char *c; + + w=0; + for(c=str; *c!='\0'; c++){ + w+=DrawChar(-1, -1, *c, -1); + w++; + } + + return w-1; +} + +int DrawNumber(int x, int y, int n, int font){ + int w; + int flag=0; + char c; + + if(n<0){ + flag=1; + n=-n; + } + + w=0; + do { + w+=3; + c='0'+(n%10); + DrawChar(x-w, y, c, font); + n/=10; + w++; + } while(n>0); + if(flag){ + w+=2; + DrawChar(x-w, y, '-', font); + w++; + } + + return w-1; +} + +int DrawChar(int x, int y, char c, int font){ + int sx, w; + + c=toupper(c); + w=3; + if(c>='A' && c<='Z'){ + sx=(c-'A')*4+1; + if(c=='M'){ w=4; sx=149; } + if(c=='N'){ w=4; sx=154; } + if(c=='W'){ w=4; sx=159; } + } else if(c>='0' && c<='9') sx=(c-'0')*4+105; + else if(c==':'){ w=1; sx=164; } + else if(c=='('){ w=2; sx=171; } + else if(c==')'){ w=2; sx=174; } + else if(c=='%') sx=89; + else if(c=='-'){ w=2; sx=168; } + else if(c=='.'){ w=1; sx=166; } + else if(c=='<') sx=49; + else if(c=='>') sx=53; + else if(c=='/') sx=145; + else if(c=='\''){ w=1; sx=177; } + else return 0; + + if(x>=0 && y>=0 && x+w<192 && y<174 && font>=0 && font<3){ + init_font(font); + XCopyArea(display, fonts[font], wmgen.pixmap, NormalGC, sx, 1, w, 5, x, y); + } + return w; +} diff --git a/dockapps/wmweather+/font.h b/dockapps/wmweather+/font.h new file mode 100644 index 0000000..2240bde --- /dev/null +++ b/dockapps/wmweather+/font.h @@ -0,0 +1,7 @@ +int DrawString(int x, int y, char *str, int font); +int GetStringWidth(char *str); +int DrawNumber(int x, int y, int n, int font); +int DrawChar(int x, int y, char c, int font); + +/* This is called automatically if necessary */ +void init_font(int i); diff --git a/dockapps/wmweather+/forecast.c b/dockapps/wmweather+/forecast.c new file mode 100644 index 0000000..e8921d4 --- /dev/null +++ b/dockapps/wmweather+/forecast.c @@ -0,0 +1,311 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#if TM_IN_SYS_TIME +# if TIME_WITH_SYS_TIME +# include +# include +# else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +# endif +#else +#include +#endif +#include +#include +#include +#include + +#include "forecast.h" +#include "convert.h" +#include "getLine.h" +#include "die.h" + +/* Important variables */ +static struct forecast **forecasts=NULL; +static int num_forecasts=0; +static pcre *date=NULL; +static int ovecsize=1; +static int changed=0; + +/* functions */ + +time_t find_next_time(char *file, char *pat, int minutes){ + FILE *fp; + char *s; + time_t t, mintime; + + mintime=time(NULL)/60+15; + if((fp=fopen(file, "r"))==NULL) return mintime; + + s=NULL; + while(!feof(fp)){ + getLine(&s, fp); + if(strstr(s, pat)!=NULL) break; + free(s); + s=NULL; + } + fclose(fp); + if(s==NULL) return mintime; + t=parse_time_string(s)/60+minutes; + free(s); + return (t>mintime)?t:mintime; +} + +time_t parse_time_string(char *s){ + struct tm tm; + int ovector[ovecsize]; + int ovalue; + char *e; + int i; + + if(date==NULL){ + date=pcre_compile("\\b(\\d+)/(\\d+)/(\\d+)\\s+(\\d\\d)(\\d\\d)\\s*UTC\\b", 0, (const char **)&e, &i, NULL); + if(date==NULL){ + warn("find_next PCRE error: %s at %i", e, i); + return -1; + } + pcre_fullinfo(date, NULL, PCRE_INFO_CAPTURECOUNT, &ovecsize); + ovecsize=(ovecsize+1)*3; + return parse_time_string(s); + } + + ovalue=pcre_exec(date, NULL, s, strlen(s), 0, 0, ovector, ovecsize); + if(ovalue<=0) return -1; + + if(pcre_get_substring(s, ovector, ovalue, 1, (const char **)&e)<0) return 0; + tm.tm_mon=atoi(e)-1; + pcre_free_substring(e); + if(pcre_get_substring(s, ovector, ovalue, 2, (const char **)&e)<0) return 0; + tm.tm_mday=atoi(e); + pcre_free_substring(e); + if(pcre_get_substring(s, ovector, ovalue, 3, (const char **)&e)<0) return 0; + tm.tm_year=atoi(e)-1900; + pcre_free_substring(e); + if(pcre_get_substring(s, ovector, ovalue, 4, (const char **)&e)<0) return 0; + tm.tm_hour=atoi(e); + pcre_free_substring(e); + if(pcre_get_substring(s, ovector, ovalue, 5, (const char **)&e)<0) return 0; + tm.tm_min=atoi(e); + pcre_free_substring(e); + tm.tm_sec=0; + + return mkgmtime(&tm); +} + +void add_forecast(struct forecast *f, char *ID, char *station){ + if((forecasts=realloc(forecasts, ++num_forecasts*sizeof(*forecasts)))==NULL) + die("realloc in add_forecast"); + + if(ID==NULL){ + memset(f->ID, '\0', 4); + } else { + strncpy(f->ID, ID, 3); + f->ID[3]='\0'; + } + f->station=station; + forecasts[num_forecasts-1]=f; + changed=1; +} + +void reset_forecast(struct forecast *f){ + f->last_update=time(NULL); + f->month=0; + f->day=-1; + f->year=SHRT_MIN; + f->wday=-1; + f->hour=-1; + f->low=999; + f->high=999; + f->temp=999; + f->dewpt=999; + f->rh=-1; + f->winddir=-1; + f->windspeed=-1; + f->heatindex=999; + f->windchill=999; + f->precipamt=-1; + f->snowamt=-1; + f->sky=-1; + f->vis=7; + f->obs=0; + f->pcp_total=0; + f->frz=0; + f->snow=0; + f->rain=0; + f->tstorm=0; + f->svtstorm=0; + f->moon=NAN; + f->time=-1; + changed=1; +} + +static int is_forecast_valid(const struct forecast *a){ + return (a->ID[0]!='\0' && + a->month>0 && a->month<=12 && + a->day>0 && a->day<=31 && + a->year!=SHRT_MIN); +} + +static int is_forecast_current(struct forecast *f, time_t now){ + time_t t; + + t=forecast_time(f); + t+=(f->hour<0)?86399:3599; + return t>now; +} + +static int compar(const void *aa, const void *bb){ + struct forecast *a=*(struct forecast **)aa; + struct forecast *b=*(struct forecast **)bb; + int i, j; + + /* First, any undefined forecast is greater than any defined forecast */ + i=is_forecast_valid(a); + j=is_forecast_valid(b); + if(!i && !j) return 0; /* all undef forecasts are equal */ + if(!i) return 1; + if(!j) return -1; + + /* Any whole-day forecast is greater than any partial forecast */ + if(a->hour<0 && b->hour>=0) return 1; + if(a->hour>=0 && b->hour<0) return -1; + + /* Ok, compare dates now */ + if(a->year>b->year) return 1; + if(a->yearyear) return -1; + if(a->month>b->month) return 1; + if(a->monthmonth) return -1; + if(a->day>b->day) return 1; + if(a->dayday) return -1; + if(a->hour>b->hour) return 1; + if(a->hourhour) return -1; + + /* Last resort, sort in alphabetical order by ID */ + return strcasecmp(a->ID, b->ID); +} + +static void sort_forecasts(void){ + if(forecasts==NULL) return; + qsort(forecasts, num_forecasts, sizeof(struct forecast *), compar); + changed=0; +} + +time_t forecast_time(struct forecast *f){ + struct tm tm; + + if(f->time!=-1) return f->time; + tm.tm_year=f->year; + tm.tm_mon=f->month-1; + tm.tm_mday=f->day; + tm.tm_hour=(f->hour<0)?0:f->hour; + tm.tm_min=tm.tm_sec=0; + return (f->time=mktime(&tm)); +} + +static char current_ID[4]={ '\0', '\0', '\0', '\0' }; +static int current_index=-1; +static struct forecast *current=NULL; +static time_t current_time=0; +static int current_hour=0; + +static void set_current(int i){ + current_index=i; + if(i<0 || i>num_forecasts){ + current=NULL; + memset(current_ID, 0, 4); + current_time=0; + current_hour=0; + } else { + current=forecasts[i]; + memcpy(current_ID, current->ID, 4); + current_time=forecast_time(current); + current_hour=current->hour; + } +} + +static void locate_current(void){ + int i; + time_t now, target; + int target_hour; + long curdiff=0; + long tmpdiff; + char target_ID[4]; + + now=time(NULL); + if(!changed && current!=NULL && is_forecast_current(current, now)) return; + + sort_forecasts(); + target=current_time; + target_hour=current_hour; + memcpy(target_ID, current_ID, 4); + set_current(-1); + + for(i=0; ihour>=0) || + (target_hour>=0 && forecasts[i]->hour<0)) + tmpdiff+=31556926; + if(memcmp(forecasts[i]->ID, target_ID, 4)) tmpdiff++; + if(current==NULL || tmpdiffnum_forecasts) current_index=0; + for(i=mod(current_index+dir, num_forecasts); ; i=mod(i+dir, num_forecasts)){ + if(is_forecast_valid(forecasts[i]) && is_forecast_current(forecasts[i], now)){ + set_current(i); + return; + } + if(i==current_index){ + set_current(-1); + return; + } + } +} diff --git a/dockapps/wmweather+/forecast.h b/dockapps/wmweather+/forecast.h new file mode 100644 index 0000000..7c1e6c4 --- /dev/null +++ b/dockapps/wmweather+/forecast.h @@ -0,0 +1,47 @@ +#ifndef FORECAST_H +#define FORECAST_H + +/* functions to manage the 'current forecast' */ +struct forecast *current_forecast_get(void); +void current_forecast_next(int dir); + +struct forecast { + char ID[4]; /* Forecast type ("AVN", "MRF", etc) */ + char *station; /* station name */ + time_t last_update; /* last updated time */ + signed char month; /* 0, 1 - 12 */ + signed char day; /* -1, 1 - 31 */ + short year; /* -1, number */ + signed char wday; /* -1, 0-6 */ + signed char hour; /* -1, 0 - 23 (local) */ + short low; /* 999, -210 - 390 (degrees F) */ + short high; /* 999, -210 - 390 (degrees F) */ + short temp; /* 999, -210 - 390 (degrees F) */ + short dewpt; /* 999, -210 - 390 (degrees F) */ + signed char rh; /* -1, 0 - 100 (%) */ + short winddir; /* -1, 0 - 16 (direction) */ + short windspeed; /* -1, 0 - MAX */ + short heatindex; /* 999, -99 - 199 (degrees F) */ + short windchill; /* 999, -99 - 199 (degrees F) */ + short precipamt; /* -1, 0 - 7 (amount code) */ + short snowamt; /* -1, 0 - 8 (amount code) */ + signed char sky; /* -1, 0-4 (condition) */ + signed char vis; /* 7, 1-7 (status code) */ + signed char obs; /* 0, 0-3 (type) */ + signed char pcp_total; /* 0, 0-100 (percent chance) */ + signed char frz; /* 0, 0-100 (percent chance) */ + signed char snow; /* 0, 0-100 (percent chance) */ + signed char rain; /* 0, 0-100 (percent chance) */ + signed char tstorm; /* 0, 0-100 (percent chance) */ + signed char svtstorm; /* 0, 0-100 (percent chance) */ + double moon; /* NAN, -1 - 1 (percent and wax/wane) */ + time_t time; /* -1, time_t value */ +}; + +void add_forecast(struct forecast *f, char *ID, char *station); +time_t forecast_time(struct forecast *f); +time_t parse_time_string(char *s); +time_t find_next_time(char *file, char *pat, int minutes); +void reset_forecast(struct forecast *f); + +#endif diff --git a/dockapps/wmweather+/getLine.c b/dockapps/wmweather+/getLine.c new file mode 100644 index 0000000..378b4f4 --- /dev/null +++ b/dockapps/wmweather+/getLine.c @@ -0,0 +1,67 @@ +#include "config.h" + +/* Copyright (C) 2000 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include + +/* inspired by read_line from Eric S. Raymond's fetchmail program, by + * way of Aaron Sethman's odsclient. */ +int getLine(char **s, FILE *fd){ + int len=8196; + int toread=len; + int l=0; + char *ptr, *p, *q; + + *s=NULL; + if(feof(fd)) return -1; + + q=ptr=malloc(len); + if(ptr==NULL) return -1; + *q=0; + p=q=ptr; + while(fgets(p, toread, fd)!=NULL){ + l=strlen(ptr); + q=strchr(p, '\n'); + if(q!=NULL){ l=q-ptr+1; break; } + len*=2; + toread=len-l; + p=realloc(ptr, len); + if(p==NULL){ + free(ptr); + return -1; + } + ptr=p; + q=p=ptr+l; + } + while(q>ptr && (*q=='\0' || isspace(*q))){ + *q='\0'; + l--; + q--; + } + for(p=ptr; isspace(*p); p++, l--); + if((*s=malloc(l+1))==NULL){ + free(ptr); + return -1; + } + memcpy(*s, p, l+1); + free(ptr); + return l; +} diff --git a/dockapps/wmweather+/getLine.h b/dockapps/wmweather+/getLine.h new file mode 100644 index 0000000..a8f5505 --- /dev/null +++ b/dockapps/wmweather+/getLine.h @@ -0,0 +1,4 @@ +#include + +/* Gets a single line of input, stripping leading and trailing whitespace */ +int getLine(char **s, FILE *fd); diff --git a/dockapps/wmweather+/install-sh b/dockapps/wmweather+/install-sh new file mode 100755 index 0000000..20d8b2e --- /dev/null +++ b/dockapps/wmweather+/install-sh @@ -0,0 +1,529 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2018-03-11.20; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + # Note that $RANDOM variable is not portable (e.g. dash); Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap 'ret=$?; rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null; exit $ret' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writeable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p' feature. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/dockapps/wmweather+/m4/Makefile.am b/dockapps/wmweather+/m4/Makefile.am new file mode 100644 index 0000000..f871dd0 --- /dev/null +++ b/dockapps/wmweather+/m4/Makefile.am @@ -0,0 +1,2 @@ +SUBDIRS = +EXTRA_DIST = libpcre.m4 libwraster.m4 snprintf.m4 vsnprintf.m4 xpm.m4 diff --git a/dockapps/wmweather+/m4/Makefile.in b/dockapps/wmweather+/m4/Makefile.in new file mode 100644 index 0000000..c37f668 --- /dev/null +++ b/dockapps/wmweather+/m4/Makefile.in @@ -0,0 +1,597 @@ +# Makefile.in generated by automake 1.16.2 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2020 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = m4 +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libpcre.m4 \ + $(top_srcdir)/m4/libwraster.m4 $(top_srcdir)/m4/snprintf.m4 \ + $(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/xpm.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir distdir-am +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBCURL = @LIBCURL@ +LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LINK_XPM = @LINK_XPM@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POW_LIB = @POW_LIB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WMGENERAL_GUI = @WMGENERAL_GUI@ +XLIBS = @XLIBS@ +XMKMF = @XMKMF@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +_libcurl_config = @_libcurl_config@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = +EXTRA_DIST = libpcre.m4 libwraster.m4 snprintf.m4 vsnprintf.m4 xpm.m4 +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu m4/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu m4/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic cscopelist-am ctags ctags-am \ + distclean distclean-generic distclean-tags distdir dvi dvi-am \ + html html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ + pdf-am ps ps-am tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/dockapps/wmweather+/m4/libpcre.m4 b/dockapps/wmweather+/m4/libpcre.m4 new file mode 100644 index 0000000..94faefe --- /dev/null +++ b/dockapps/wmweather+/m4/libpcre.m4 @@ -0,0 +1,57 @@ +dnl @synopsis CHECK_LIBPCRE([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl +dnl This macro searches for an installed libpcre library. If nothing +dnl was specified when calling configure, it searches first in /usr/local +dnl and then in /usr. If the --with-libpcre=DIR is specified, it will try +dnl to find it in DIR/include/pcre.h and DIR/lib/libpcre.a. If --without-libpcre +dnl is specified, the library is not searched at all. +dnl +dnl It defines the symbol HAVE_LIBPCRE if the library is found. You should +dnl use autoheader to include a definition for this symbol in a config.h +dnl file. +dnl +dnl Sources files should then use something like +dnl +dnl #ifdef HAVE_LIBPCRE +dnl #include +dnl #endif /* HAVE_LIBPCRE */ +dnl +dnl @version 1.0 +dnl based on CHECK_ZLIB by Loic Dachary +dnl + +AC_DEFUN([CHECK_LIBPCRE], +# +# Handle user hints +# + [AC_MSG_CHECKING(if libpcre is wanted) + AC_ARG_WITH(libpcre, + [ --with-libpcre=DIR root directory path of libpcre installation [defaults to + /usr/local or /usr if not found in /usr/local] + --without-libpcre to disable libpcre usage completely], + [if test "$withval" != no ; then + LIBPCRE_HOME="$withval" + AC_MSG_RESULT([yes: libraries ${LIBPCRE_HOME}/lib includes ${LIBPCRE_HOME}/include]) + else + AC_MSG_RESULT(no) + fi], + [LIBPCRE_HOME=/usr/local + if test ! -f "${LIBPCRE_HOME}/include/pcre.h" + then + LIBPCRE_HOME=/usr + fi + AC_MSG_RESULT([yes: libraries ${LIBPCRE_HOME}/lib includes ${LIBPCRE_HOME}/include]) + ]) + +# +# Locate libpcre, if wanted +# + if test -n "${LIBPCRE_HOME}" + then + LDFLAGS="$LDFLAGS -L${LIBPCRE_HOME}/lib" + CPPFLAGS="$CPPFLAGS -I${LIBPCRE_HOME}/include" + AC_CHECK_LIB(pcre, pcre_compile, $1, $2) + else + $2 + fi + ]) diff --git a/dockapps/wmweather+/m4/libwraster.m4 b/dockapps/wmweather+/m4/libwraster.m4 new file mode 100644 index 0000000..cdf7277 --- /dev/null +++ b/dockapps/wmweather+/m4/libwraster.m4 @@ -0,0 +1,61 @@ +dnl @synopsis CHECK_LIBWRASTER([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +dnl +dnl This macro searches for an installed libwraster library. If nothing +dnl was specified when calling configure, it searches first in /usr/local +dnl and then in /usr. If the --with-libwraster=DIR is specified, it will try +dnl to find it in DIR/include/wraster.h and DIR/lib/libwraster.a. If --without-libwraster +dnl is specified, the library is not searched at all. +dnl +dnl It defines the symbol HAVE_LIBWRASTER if the library is found. You should +dnl use autoheader to include a definition for this symbol in a config.h +dnl file. +dnl +dnl Sources files should then use something like +dnl +dnl #ifdef HAVE_LIBWRASTER +dnl #include +dnl #endif /* HAVE_LIBWRASTER */ +dnl +dnl @version 1.0 +dnl based on CHECK_ZLIB by Loic Dachary +dnl + +AC_DEFUN([CHECK_LIBWRASTER], +# +# Handle user hints +# + [AC_MSG_CHECKING(if libwraster is wanted) + AC_ARG_WITH(libwraster, + [ --with-libwraster=DIR root directory path of libwraster installation [defaults to + /usr/local or /usr if not found in /usr/local] + --without-libwraster to disable libwraster usage completely], + [if test "$withval" != no ; then + LIBWRASTER_HOME="$withval" + AC_MSG_RESULT([yes: libraries ${LIBWRASTER_HOME}/lib includes ${LIBWRASTER_HOME}/include]) + else + AC_MSG_RESULT(no) + fi], + [LIBWRASTER_HOME=/usr/local + if test ! -f "${LIBWRASTER_HOME}/include/wraster.h" + then + LIBWRASTER_HOME=/usr + if test ! -f "${LIBWRASTER_HOME}/include/wraster.h" + then + LIBWRASTER_HOME=/usr/X11R6 + fi + fi + AC_MSG_RESULT([yes: libraries ${LIBWRASTER_HOME}/lib includes ${LIBWRASTER_HOME}/include]) + ]) + +# +# Locate libwraster, if wanted +# + if test -n "${LIBWRASTER_HOME}" + then + LDFLAGS="$LDFLAGS -L${LIBWRASTER_HOME}/lib" + CPPFLAGS="$CPPFLAGS -I${LIBWRASTER_HOME}/include" + AC_CHECK_LIB(wraster, RCreateContext, $1, $2) + else + $2 + fi + ]) diff --git a/dockapps/wmweather+/m4/snprintf.m4 b/dockapps/wmweather+/m4/snprintf.m4 new file mode 100644 index 0000000..03567bc --- /dev/null +++ b/dockapps/wmweather+/m4/snprintf.m4 @@ -0,0 +1,120 @@ +# FUNC_SNPRINTF_EXISTS +# -------------------- +# Checks if snprintf exists. x_cv_func_snprintf_exists is set. +AC_DEFUN([FUNC_SNPRINTF_EXISTS], +[AC_CHECK_FUNC(snprintf, [x_cv_func_snprintf_exists=yes], [x_cv_func_snprintf_exists=no])])# FUNC_SNPRINTF_EXISTS + +# FUNC_SNPRINTF_SIZE +# ------------------ +# Checks if snprintf honors its size argument. SNPRINTF_IS_SPRINTF is defined +# if not. x_cv_func_snprintf_size is set to yes or no. +# +# Note that this depends on FUNC_SNPRINTF_EXISTS, so if that fails this will +# also fail (and define SNPRINTF_IS_SPRINTF). +AC_DEFUN([FUNC_SNPRINTF_SIZE], +[AC_REQUIRE([FUNC_SNPRINTF_EXISTS]) +if test $x_cv_func_snprintf_exists != yes; then x_cv_func_snprintf_size=no; else +AC_CACHE_CHECK([if snprintf honors the size argument], x_cv_func_snprintf_size, +[AC_RUN_IFELSE( +[AC_LANG_PROGRAM( +[[#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int snprintf(char *str, size_t size, const char *format, ...); +#endif +]], +[[char foo[]="ABC"; snprintf(foo, 2, "%d", 12); +exit((foo[0]=='1' && foo[1]=='\0' && foo[2]=='C')?0:1);]])], +[x_cv_func_snprintf_size=yes], +[x_cv_func_snprintf_size=no], +[x_cv_func_snprintf_size=no])]) +fi +test $x_cv_func_snprintf_size != yes && AC_DEFINE(SNPRINTF_IS_SPRINTF, 1, [Define if snprintf ignores the size argument]) +])# FUNC_SNPRINTF_SIZE + +# FUNC_SNPRINTF_RETVAL +# ------------------ +# Checks if snprintf returns the number of bytes that would have been written, +# as specified by C99. SNPRINTF_BOGUS_RETVAL is defined if not. +# x_cv_func_snprintf_retval is set to yes or no. +# +# Note that this depends on FUNC_SNPRINTF_SIZE, so if that fails this will fail +# too and SNPRINTF_BOGUS_RETVAL will be set. +AC_DEFUN([FUNC_SNPRINTF_RETVAL], +[AC_REQUIRE([FUNC_SNPRINTF_SIZE]) +if test $x_cv_func_snprintf_size != yes; then x_cv_func_snprintf_retval=no; else +AC_CACHE_CHECK([if snprintf return value is sane], x_cv_func_snprintf_retval, +[AC_RUN_IFELSE( +[AC_LANG_PROGRAM( +[[#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int snprintf(char *str, size_t size, const char *format, ...); +#endif +]], +[[char foo[10]; exit((snprintf(foo, 1, "%d", 9876)==4)?0:1);]])], +[x_cv_func_snprintf_retval=yes], +[x_cv_func_snprintf_retval=no], +[x_cv_func_snprintf_retval=no])]) +fi +test $x_cv_func_snprintf_retval != yes && AC_DEFINE(SNPRINTF_BOGUS_RETVAL, 1, [Define if snprintf's return value isn't as specified by C99]) +])# FUNC_SNPRINTF_RETVAL + +# FUNC_SNPRINTF_NULL_OK +# --------------------- +# Checks whether snprintf acceps a NULL string if size is zero. Sets +# x_cv_func_snprintf_null_ok. If so, define SNPRINTF_NULL_OK. +# +# Note that this depends on FUNC_SNPRINTF_SIZE, so if that fails this will fail +# too and SNPRINTF_BOGUS_RETVAL will be set. +AC_DEFUN([FUNC_SNPRINTF_NULL_OK], +[AC_REQUIRE([FUNC_SNPRINTF_SIZE]) +if test $x_cv_func_snprintf_size != yes; then x_cv_func_snprintf_null_ok=no; else +AC_CACHE_CHECK([if snprintf(NULL, 0, ...) works], x_cv_func_snprintf_null_ok, +[AC_RUN_IFELSE( +[AC_LANG_PROGRAM( +[[#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int snprintf(char *str, size_t size, const char *format, ...); +#endif +]], +[int r=snprintf(NULL, 0, "%d", 100); exit((r==3 || r==-1)?0:1);])], +[x_cv_func_snprintf_null_ok=yes], +[x_cv_func_snprintf_null_ok=no], +[x_cv_func_snprintf_null_ok=no])]) +fi +test $x_cv_func_snprintf_null_ok = yes && AC_DEFINE(SNPRINTF_NULL_OK, 1, [Define if snprintf(NULL, 0, ...) works properly]) +])# FUNC_SNPRINTF_NULL_OK + +# FUNC_SNPRINTF([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------- +# Checks various aspects of snprintf. In particular: +# * Does it exist? +# * Is the size honored? +# * Is the return value correct? +# * Is NULL with length 0 ok? +# If all the above pass, HAVE_WORKING_SNPRINTF is defined and +# x_cv_func_snprintf_working is set to yes. Otherwise, it's set to no. +AC_DEFUN([FUNC_SNPRINTF], +[AC_REQUIRE([FUNC_SNPRINTF_RETVAL]) +AC_REQUIRE([FUNC_SNPRINTF_NULL_OK]) +if test $x_cv_func_snprintf_retval = yes -a $x_cv_func_snprintf_null_ok = yes; then + AC_DEFINE(HAVE_WORKING_SNPRINTF, 1, [Define if snprintf works properly]) + x_cv_func_snprintf_working=yes + $1 +else + x_cv_func_snprintf_working=no + $2 +fi +])# FUNC_SNPRINTF + +# FUNC_SNPRINTF_LIBOBJ +# -------------------- +# If FUNC_SNPRINTF fails, does AC_LIBOBJ +AC_DEFUN([FUNC_SNPRINTF_LIBOBJ], +[FUNC_SNPRINTF(, [AC_LIBOBJ([snprintf]) +AC_DEFINE([snprintf], [rpl_snprintf], [Define to rpl_snprintf if the replacement function should be used.])])]) +])#FUNC_SNPRINTF_LIBOBJ + + diff --git a/dockapps/wmweather+/m4/vsnprintf.m4 b/dockapps/wmweather+/m4/vsnprintf.m4 new file mode 100644 index 0000000..a5de274 --- /dev/null +++ b/dockapps/wmweather+/m4/vsnprintf.m4 @@ -0,0 +1,149 @@ +# FUNC_VSNPRINTF_EXISTS +# -------------------- +# Checks if vsnprintf exists. x_cv_func_vsnprintf_exists is set. +AC_DEFUN([FUNC_VSNPRINTF_EXISTS], +[AC_REQUIRE([AC_FUNC_VPRINTF]) +if test $ac_cv_func_vprintf != yes; then x_cv_func_vsnprintf_exists=no; else +AC_CHECK_FUNC(vsnprintf, [x_cv_func_vsnprintf_exists=yes], [x_cv_func_vsnprintf_exists=no]) +fi +])# FUNC_VSNPRINTF_EXISTS + +# FUNC_VSNPRINTF_SIZE +# ------------------ +# Checks if vsnprintf honors its size argument. VSNPRINTF_IS_VSPRINTF is defined +# if not. x_cv_func_vsnprintf_size is set to yes or no. +# +# Note that this depends on FUNC_VSNPRINTF_EXISTS, so if that fails this will +# also fail (and define VSNPRINTF_IS_VSPRINTF). +AC_DEFUN([FUNC_VSNPRINTF_SIZE], +[AC_REQUIRE([FUNC_VSNPRINTF_EXISTS]) +if test $x_cv_func_vsnprintf_exists != yes; then x_cv_func_vsnprintf_size=no; else +AC_CACHE_CHECK([if vsnprintf honors the size argument], x_cv_func_vsnprintf_size, +[AC_RUN_IFELSE( +[AC_LANG_PROGRAM( +[[#include +#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int vsnprintf(char *str, size_t size, const char *format, va_list ap); +#endif +int doit(char *str, size_t size, const char *format, ...){ + va_list ap; + int r; + va_start(ap, format); + r=vsnprintf(str, size, format, ap); + va_end(ap); + return r; +} +]], +[[char foo[]="ABC"; doit(foo, 2, "%d", 12); +exit((foo[0]=='1' && foo[1]=='\0' && foo[2]=='C')?0:1);]])], +[x_cv_func_vsnprintf_size=yes], +[x_cv_func_vsnprintf_size=no], +[x_cv_func_vsnprintf_size=no])]) +fi +test $x_cv_func_vsnprintf_size != yes && AC_DEFINE(VSNPRINTF_IS_VSPRINTF, 1, [Define if vsnprintf ignores the size argument]) +])# FUNC_VSNPRINTF_SIZE + +# FUNC_VSNPRINTF_RETVAL +# ------------------ +# Checks if vsnprintf returns the number of bytes that would have been written, +# as specified by C99. VSNPRINTF_BOGUS_RETVAL is defined if not. +# x_cv_func_vsnprintf_retval is set to yes or no. +# +# Note that this depends on FUNC_VSNPRINTF_SIZE, so if that fails this will fail +# too and VSNPRINTF_BOGUS_RETVAL will be set. +AC_DEFUN([FUNC_VSNPRINTF_RETVAL], +[AC_REQUIRE([FUNC_VSNPRINTF_SIZE]) +if test $x_cv_func_vsnprintf_size != yes; then x_cv_func_vsnprintf_retval=no; else +AC_CACHE_CHECK([if vsnprintf return value is sane], x_cv_func_vsnprintf_retval, +[AC_RUN_IFELSE( +[AC_LANG_PROGRAM( +[[#include +#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int vsnprintf(char *str, size_t size, const char *format, va_list ap); +#endif +int doit(char *str, size_t size, const char *format, ...){ + va_list ap; + int r; + va_start(ap, format); + r=vsnprintf(str, size, format, ap); + va_end(ap); + return r; +} +]], +[[char foo[10]; exit((doit(foo, 1, "%d", 9876)==4)?0:1);]])], +[x_cv_func_vsnprintf_retval=yes], +[x_cv_func_vsnprintf_retval=no], +[x_cv_func_vsnprintf_retval=no])]) +fi +test $x_cv_func_vsnprintf_retval != yes && AC_DEFINE(VSNPRINTF_BOGUS_RETVAL, 1, [Define if vsnprintf's return value isn't as specified by C99]) +])# FUNC_VSNPRINTF_RETVAL + +# FUNC_VSNPRINTF_NULL_OK +# --------------------- +# Checks whether vsnprintf acceps a NULL string if size is zero. Sets +# x_cv_func_vsnprintf_null_ok. If so, define VSNPRINTF_NULL_OK. +# +# Note that this depends on FUNC_VSNPRINTF_SIZE, so if that fails this will +# fail too and VSNPRINTF_NULL_OK will not be set. +AC_DEFUN([FUNC_VSNPRINTF_NULL_OK], +[AC_REQUIRE([FUNC_VSNPRINTF_SIZE]) +if test $x_cv_func_vsnprintf_size != yes; then x_cv_func_vsnprintf_null_ok=no; else +AC_CACHE_CHECK([if vsnprintf(NULL, 0, ...) works], x_cv_func_vsnprintf_null_ok, +[AC_RUN_IFELSE( +[AC_LANG_PROGRAM( +[[#include +#if STDC_HEADERS || HAVE_STDIO_H +# include +#else +int vsnprintf(char *str, size_t size, const char *format, va_list ap); +#endif +int doit(char *str, size_t size, const char *format, ...){ + va_list ap; + int r; + va_start(ap, format); + r=vsnprintf(str, size, format, ap); + va_end(ap); + return r; +} +]], +[int r=doit(NULL, 0, "%d", 100); exit((r==3 || r==-1)?0:1);])], +[x_cv_func_vsnprintf_null_ok=yes], +[x_cv_func_vsnprintf_null_ok=no], +[x_cv_func_vsnprintf_null_ok=no])]) +fi +test $x_cv_func_vsnprintf_null_ok = yes && AC_DEFINE(VSNPRINTF_NULL_OK, 1, [Define if vsnprintf(NULL, 0, ...) works properly]) +])# FUNC_VSNPRINTF_NULL_OK + +# FUNC_VSNPRINTF([ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------- +# Checks various aspects of vsnprintf. In particular: +# * Does it exist? +# * Is the size honored? +# * Is the return value correct? +# * Is NULL with length 0 ok? +# If all the above pass, HAVE_WORKING_VSNPRINTF is defined and +# x_cv_func_vsnprintf_working is set to yes. Otherwise, it's set to no. +AC_DEFUN([FUNC_VSNPRINTF], +[AC_REQUIRE([FUNC_VSNPRINTF_RETVAL]) +AC_REQUIRE([FUNC_VSNPRINTF_NULL_OK]) +if test $x_cv_func_vsnprintf_retval = yes -a $x_cv_func_vsnprintf_null_ok = yes; then + AC_DEFINE(HAVE_WORKING_VSNPRINTF, 1, [Define if vsnprintf works properly]) + x_cv_func_snprintf_working=yes + $1 +else + x_cv_func_snprintf_working=no + $2 +fi +])# FUNC_VSNPRINTF + +# FUNC_VSNPRINTF_LIBOBJ +# -------------------- +# If FUNC_VSNPRINTF fails, does AC_LIBOBJ. +AC_DEFUN([FUNC_VSNPRINTF_LIBOBJ], +[FUNC_VSNPRINTF(, [AC_LIBOBJ([vsnprintf]) +AC_DEFINE([vsnprintf], [rpl_vsnprintf], [Define to rpl_vsnprintf if the replacement function should be used.])])]) +])#FUNC_VSNPRINTF_LIBOBJ diff --git a/dockapps/wmweather+/m4/xpm.m4 b/dockapps/wmweather+/m4/xpm.m4 new file mode 100644 index 0000000..4e065a6 --- /dev/null +++ b/dockapps/wmweather+/m4/xpm.m4 @@ -0,0 +1,190 @@ +dnl AC_FIND_XPM +dnl --------------- +dnl +dnl Find Xpm libraries and headers. +dnl Put Xpm include directory in xpm_includes, +dnl put Xpm library directory in xpm_libraries, +dnl and add appropriate flags to X_CFLAGS and X_LIBS. +dnl +dnl +AC_DEFUN([AC_FIND_XPM], +[ +AC_REQUIRE([AC_PATH_XTRA]) +xpm_includes= +xpm_libraries= +AC_ARG_WITH(xpm, +[ --without-xpm do not use the Xpm library]) +dnl Treat --without-xpm like +dnl --without-xpm-includes --without-xpm-libraries. +if test "$with_xpm" = "no" +then +xpm_includes=no +xpm_libraries=no +fi +AC_ARG_WITH(xpm-includes, +[ --with-xpm-includes=DIR Xpm include files are in DIR], +xpm_includes="$withval") +AC_ARG_WITH(xpm-libraries, +[ --with-xpm-libraries=DIR + Xpm libraries are in DIR], +xpm_libraries="$withval") +AC_MSG_CHECKING(for Xpm) +# +# +# Search the include files. Note that XPM can come in (as +# in X11R6) or in if installed locally. +# +if test "$xpm_includes" = ""; then +AC_CACHE_VAL(ice_cv_xpm_includes, +[ +ice_xpm_save_LIBS="$LIBS" +ice_xpm_save_CFLAGS="$CFLAGS" +ice_xpm_save_CPPFLAGS="$CPPFLAGS" +ice_xpm_save_LDFLAGS="$LDFLAGS" +# +LIBS="$X_PRE_LIBS -lXpm -lXt -lX11 $X_EXTRA_LIBS $LIBS" +CFLAGS="$X_CFLAGS $CFLAGS" +CPPFLAGS="$X_CFLAGS $CPPFLAGS" +LDFLAGS="$X_LIBS $LDFLAGS" +# +AC_TRY_COMPILE([ +#include +],[int a;], +[ +# X11/xpm.h is in the standard search path. +ice_cv_xpm_includes= +], +[ +# X11/xpm.h is not in the standard search path. +# Locate it and put its directory in `xpm_includes' +# +# /usr/include/Motif* are used on HP-UX (Motif). +# /usr/include/X11* are used on HP-UX (X and Xaw). +# /usr/dt is used on Solaris (Motif). +# /usr/openwin is used on Solaris (X and Xaw). +# Other directories are just guesses. +for dir in "$x_includes" "${prefix}/include" /usr/include /usr/local/include \ + /usr/include/Motif2.0 /usr/include/Motif1.2 /usr/include/Motif1.1 \ + /usr/include/X11R6 /usr/include/X11R5 /usr/include/X11R4 \ + /usr/dt/include /usr/openwin/include \ + /usr/dt/*/include /opt/*/include /usr/include/Motif* \ + /usr/*/include/X11R6 /usr/*/include/X11R5 /usr/*/include/X11R4 \ + "${prefix}"/*/include /usr/*/include /usr/local/*/include \ + "${prefix}"/include/* /usr/include/* /usr/local/include/*; do +if test -f "$dir/X11/xpm.h" || test -f "$dir/xpm.h"; then +ice_cv_xpm_includes="$dir" +break +fi +done +if test "$ice_cv_xpm_includes" = "/usr/include"; then +ice_cv_xpm_includes= +fi +]) +# +LIBS="$ice_xpm_save_LIBS" +CFLAGS="$ice_xpm_save_CFLAGS" +CPPFLAGS="$ice_xpm_save_CPPFLAGS" +LDFLAGS="$ice_xpm_save_LDFLAGS" +]) +xpm_includes="$ice_cv_xpm_includes" +fi +# +# +# Now for the libraries. +# +if test "$xpm_libraries" = ""; then +AC_CACHE_VAL(ice_cv_xpm_libraries, +[ +ice_xpm_save_LIBS="$LIBS" +ice_xpm_save_CFLAGS="$CFLAGS" +ice_xpm_save_CPPFLAGS="$CPPFLAGS" +ice_xpm_save_LDFLAGS="$LDFLAGS" +# +LIBS="$X_PRE_LIBS -lXpm -lXt -lX11 $X_EXTRA_LIBS $LIBS" +CFLAGS="$X_CFLAGS $CFLAGS" +CPPFLAGS="$X_CFLAGS $CPPFLAGS" +LDFLAGS="$X_LIBS $LDFLAGS" +# +# +# We use XtToolkitInitialize() here since it takes no arguments +# and thus also works with a C++ compiler. +AC_TRY_LINK([ +#include +#include +],[XtToolkitInitialize();], +[ +# libxpm.a is in the standard search path. +ice_cv_xpm_libraries= +], +[ +# libXpm.a is not in the standard search path. +# Locate it and put its directory in `xpm_libraries' +# +# +# /usr/lib/Motif* are used on HP-UX (Motif). +# /usr/lib/X11* are used on HP-UX (X and Xpm). +# /usr/dt is used on Solaris (Motif). +# /usr/openwin is used on Solaris (X and Xpm). +# Other directories are just guesses. +for dir in "$x_libraries" "${prefix}/lib" /usr/lib /usr/local/lib \ + /usr/lib/Motif2.0 /usr/lib/Motif1.2 /usr/lib/Motif1.1 \ + /usr/lib/X11R6 /usr/lib/X11R5 /usr/lib/X11R4 /usr/lib/X11 \ + /usr/dt/lib /usr/openwin/lib \ + /usr/dt/*/lib /opt/*/lib /usr/lib/Motif* \ + /usr/*/lib/X11R6 /usr/*/lib/X11R5 /usr/*/lib/X11R4 /usr/*/lib/X11 \ + "${prefix}"/*/lib /usr/*/lib /usr/local/*/lib \ + "${prefix}"/lib/* /usr/lib/* /usr/local/lib/*; do +if test -d "$dir" && test "`ls $dir/libXpm.* 2> /dev/null`" != ""; then +ice_cv_xpm_libraries="$dir" +break +fi +done +]) +# +LIBS="$ice_xpm_save_LIBS" +CFLAGS="$ice_xpm_save_CFLAGS" +CPPFLAGS="$ice_xpm_save_CPPFLAGS" +LDFLAGS="$ice_xpm_save_LDFLAGS" +]) +# +xpm_libraries="$ice_cv_xpm_libraries" +fi +# +# Add Xpm definitions to X flags +# +if test "$xpm_includes" != "" && test "$xpm_includes" != "$x_includes" && test "$xpm_includes" != "no" +then +X_CFLAGS="-I$xpm_includes $X_CFLAGS" +fi +if test "$xpm_libraries" != "" && test "$xpm_libraries" != "$x_libraries" && test "$xpm_libraries" != "no" +then +case "$X_LIBS" in + *-R\ *) X_LIBS="-L$xpm_libraries -R $xpm_libraries $X_LIBS";; + *-R*) X_LIBS="-L$xpm_libraries -R$xpm_libraries $X_LIBS";; + *) X_LIBS="-L$xpm_libraries $X_LIBS";; +esac +fi +# +# +xpm_libraries_result="$xpm_libraries" +xpm_includes_result="$xpm_includes" + +if test "$xpm_libraries_result" != "no" && test "$xpm_includes_result" != "no" +then AC_DEFINE(HAVE_XPM, 1, "Define if you have libxpm") + LINK_XPM="-lXpm" +else LINK_XPM="" +fi + +AC_SUBST(LINK_XPM) + +test "$xpm_libraries_result" = "" && + xpm_libraries_result="in default path" +test "$xpm_includes_result" = "" && + xpm_includes_result="in default path" +test "$xpm_libraries_result" = "no" && + xpm_libraries_result="(none)" +test "$xpm_includes_result" = "no" && + xpm_includes_result="(none)" +AC_MSG_RESULT( + [libraries $xpm_libraries_result, headers $xpm_includes_result]) +])dnl diff --git a/dockapps/wmweather+/metar.c b/dockapps/wmweather+/metar.c new file mode 100644 index 0000000..d37577f --- /dev/null +++ b/dockapps/wmweather+/metar.c @@ -0,0 +1,436 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#if TM_IN_SYS_TIME +# if TIME_WITH_SYS_TIME +# include +# include +# else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +# endif +#else +#include +#endif +#include +#include +#include +#include +#include + +#include + +#include "wmweather+.h" +#include "metar.h" +#include "warnings.h" +#include "download.h" +#include "convert.h" +#include "die.h" +#include "sunzenith.h" +#include "moon.h" +#include "subst.h" + +/* Important variables */ +static time_t metar_time=0; + +static char *metar_newfile=NULL; +static char *metar_file=NULL; +static char *metar_req[2]={ NULL, NULL }; + +struct current_weather current; + +/* Regular Expressions */ +static pcre *station_time; +static pcre *wind; +static pcre *weather; +static pcre *vis[4]; +static pcre *temp; +static pcre *pressure; +static int ovecsize; + +/* prototypes */ +static int parse_metar(char *file); + +/* functions */ + +static void reset_current(struct current_weather *c){ + c->last_update=time(NULL); + c->month=0; + c->date=-1; + c->time=-1; + c->temp=999; + c->rh=-1; + c->winddir=-1; + c->windspeed=-1; + c->pressure=-1; + c->heatindex=999; + c->windchill=999; + c->sky=-1; + c->vis=7; + c->obs=0; + c->frz=0; + c->snow=0; + c->rain=0; + c->tstorm=0; + c->moon=NAN; +} + +#define compile(var, re) \ + var=pcre_compile(re, 0, (const char **)&e, &i, NULL); \ + if(var==NULL) die("init_metar PCRE error: %s at %i", e, i); \ + pcre_fullinfo(var, NULL, PCRE_INFO_CAPTURECOUNT, &i); \ + if(i>ovecsize) ovecsize=i; + +void init_metar(void){ + int i; + char *e; + struct subst_val subs[]={ + { 's', STRING, &metar_station }, + { 0, 0, 0 } + }; + + snprintf(bigbuf, BIGBUF_LEN, "%s.metar.txt", metar_station); + metar_file=get_pid_filename(bigbuf); + snprintf(bigbuf, BIGBUF_LEN, "%s.new-metar.txt", metar_station); + metar_newfile=get_pid_filename(bigbuf); + + if((metar_req[0]=subst(metar_uri, subs))==NULL) die("init_metar"); + if(metar_post!=NULL && (metar_req[1]=subst(metar_post, subs))==NULL) die("init_metar"); + + metar_time=0; + + ovecsize=0; + + strncpy(bigbuf, metar_station, BIGBUF_LEN-25); + bigbuf[BIGBUF_LEN-25]='\0'; + strcat(bigbuf, " ((?:\\d\\d)?)(\\d\\d\\d\\d)Z( .* )"); + compile(station_time, bigbuf); + compile(wind, " (VRB|\\d\\d\\d)(\\d\\d\\d?)(?:G\\d\\d\\d?)?(KT|MPS|KMH)((?: \\d\\d\\dV\\d\\d\\d)?) "); + compile(weather, " ((?:-|\\+|VC)?)((?:MI|PR|BC|DR|BL|SH|TS|FZ)?)((?:DZ|RA|SN|SG|IC|PE|PL|GR|GS|UP){0,3})((?:BR|FG|FU|VA|DU|SA|HZ|PY)?)((?:PO|SQ|FC|SS|DS)?)\\b"); + compile(vis[0], " (\\d+)SM "); + compile(vis[1], " (\\d+)/(\\d+)SM "); + compile(vis[2], " (\\d+) (\\d+)/(\\d+)SM "); + compile(vis[3], " (\\d{4})[NS]?[EW]? "); + compile(temp, " (M?\\d\\d\\d?)/((?:M?\\d\\d\\d?)?) "); + compile(pressure, " ([AQ])(\\d\\d\\d\\d) "); + + ovecsize=(ovecsize+1)*3; + + /* Remove stale file */ + unlink(metar_file); + unlink(metar_newfile); + reset_current(¤t); + current.last_update = 0; // This was not a real "update", just an init +} +#undef compile + +static void metar_callback(char *filename, void *v){ + struct stat statbuf; + + if(stat(metar_newfile, &statbuf)>=0){ + if(S_ISREG(statbuf.st_mode) && statbuf.st_size!=0 + && parse_metar(metar_newfile)){ + rename(metar_newfile, metar_file); + } else { + unlink(metar_newfile); + if(!parse_metar(metar_file)) reset_current(¤t); + } + } + + update_warnings(v!=NULL); +} + +void metar_cleanup(void){ + unlink(metar_newfile); + unlink(metar_file); +} + +void update_metar(int force){ + time_t t; + + t=time(NULL)/60; + if(!force && metar_time>t) return; + + metar_time=t+15; + download_file(metar_newfile, metar_req[0], metar_req[1], force?DOWNLOAD_KILL_OTHER_REQUESTS:0, metar_callback, force?"":NULL); +} + + +#define get_substr(n, c) \ + if(pcre_get_substring(s, ovector, ovalue, n, (const char **)&c)<0){ pcre_free_substring(s); return 0; } + +static int parse_metar(char *file){ + FILE *fp; + char *s, *c; + int ovector[ovecsize]; + int ovalue; + int len; + float f; + int i, j; + + reset_current(¤t); + if((fp=fopen(file, "r"))==NULL) return 0; + len=fread(bigbuf, sizeof(char), BIGBUF_LEN-2, fp); + fclose(fp); + if(len<1) return 0; + for(i=0; i0){ + get_substr(4, c); + if(c[0]!='\0'){ + current.winddir=0; + } else { + pcre_free_substring(c); + get_substr(1, c); + if(c[0]=='V') current.winddir=0; + else current.winddir=((int)((atoi(c)+11.25)/22.5))%16+1; + } + pcre_free_substring(c); + get_substr(2, c); + current.windspeed=atoi(c); + pcre_free_substring(c); + get_substr(3, c); + if(c[0]=='M'){ /* MPS */ + current.windspeed=mps2knots(current.windspeed); + } else if(c[0]=='K' && c[1]=='M'){ /* KMH */ + current.windspeed=kph2knots(current.windspeed); + } + } + + /* vis */ + f=99; + c=strstr(s, " M1/4SM "); + if(c!=NULL){ + f=0; + goto wind_done; + } + ovalue=pcre_exec(vis[2], NULL, s, len, 0, 0, ovector, ovecsize); + if(ovalue>0){ + get_substr(2, c); + i=atoi(c); + pcre_free_substring(c); + get_substr(3, c); + j=atoi(c); + pcre_free_substring(c); + get_substr(1, c); + f=atoi(c)+(float)i/j; + pcre_free_substring(c); + goto wind_done; + } + ovalue=pcre_exec(vis[1], NULL, s, len, 0, 0, ovector, ovecsize); + if(ovalue>0){ + get_substr(2, c); + i=atoi(c); + pcre_free_substring(c); + get_substr(1, c); + f=(float)atoi(c)/i; + pcre_free_substring(c); + goto wind_done; + } + ovalue=pcre_exec(vis[0], NULL, s, len, 0, 0, ovector, ovecsize); + if(ovalue>0){ + get_substr(1, c); + f=atoi(c); + pcre_free_substring(c); + goto wind_done; + } + c=strstr(s, " CAVOK "); + if(c!=NULL){ + f=99; + current.sky=0; + goto wind_done; + } + ovalue=pcre_exec(vis[3], NULL, s, len, 0, 0, ovector, ovecsize); + if(ovalue>0){ + get_substr(1, c); + f=m2mi(atoi(c)); + pcre_free_substring(c); + goto wind_done; + } +wind_done: + if(f<=6) current.vis=6; + if(f<=5) current.vis=5; + if(f<3) current.vis=4; + if(f<1) current.vis=3; + if(f<=.5) current.vis=2; + if(f<=.25) current.vis=1; + + /* temp, rh */ + ovalue=pcre_exec(temp, NULL, s, len, 0, 0, ovector, ovecsize); + if(ovalue>0){ + get_substr(1, c); + if(c[0]=='M') c[0]='-'; + current.temp=atoi(c); + pcre_free_substring(c); + get_substr(2, c); + if(c[0]!='\0'){ + if(c[0]=='M') c[0]='-'; + current.rh=rh_C(current.temp, atoi(c)); + } + pcre_free_substring(c); + } + + /* pressure */ + ovalue=pcre_exec(pressure, NULL, s, len, 0, 0, ovector, ovecsize); + if(ovalue>0){ + get_substr(2, c); + i=atoi(c); + pcre_free_substring(c); + get_substr(1, c); + if(c[0]=='Q'){ + current.pressure=hPa2inHg(i); + } else { + current.pressure=i/100.0; + } + pcre_free_substring(c); + } + + /* sky */ + if(strstr(s, " SKC")!=NULL || strstr(s, " CLR")!=NULL) current.sky=0; + if(strstr(s, " FEW")!=NULL) current.sky=1; + if(strstr(s, " SCT")!=NULL) current.sky=2; + if(strstr(s, " BKN")!=NULL) current.sky=3; + if(strstr(s, " OVC")!=NULL || strstr(s, " VV")!=NULL) current.sky=4; + + /* obs, frz, snow, rain, tstorm */ + /* There can be multiple weather chunks, so we while loop */ + j=0; + while((ovalue=pcre_exec(weather, NULL, s, len, j, 0, ovector, ovecsize))>0){{ + char *in, *de, *pp, *ob, *ot; + + j=ovector[0]+1; + get_substr(0, c); + i=(c[1]=='\0'); + pcre_free_substring(c); + if(i) continue; + + + get_substr(1, in); + get_substr(2, de); + get_substr(3, pp); + get_substr(4, ob); + get_substr(5, ot); + +#define IN(haystack, needle) ((needle[0]=='\0')?0:strstr(haystack, needle)) + if(current.obs<1 && strcmp(de, "FZ") && IN("BR|FG", ob)) + current.obs=1; + if(current.obs<2 && IN("FU|VA|DU|SA|HZ|PY", ob)) + current.obs=2; + if(current.obs<3 && IN("PO|SS|DS", ot)) + current.obs=3; + if(current.obs<3 && IN("DR|BL", de) + && (strstr(pp, "SN") || IN("DU|SA|PY", ob))) + current.obs=3; + if(!strcmp(ot, "FC")){ + current.sky=5; + current.obs=99; + current.vis=7; + } +#undef IN + + i=66; + if(in[0]=='-' || in[0]=='V') i=33; + if(in[0]=='+') i=99; + if(!strcmp(de, "SH")) i=33; + if(current.frztm_mon+1; + if(tm->tm_mdaytm_year--; } + y=year=tm->tm_year; + mon=current.month; + day=current.date; + time2=current.time; + current.time=utc2local((int)current.time, ¤t.month, ¤t.date, &y, NULL); + + if(latitude!=999 && calcSolarZenith(latitude, longitude, year, mon, day, hm2min(time2))>90) + current.moon=calc_moon(current.month, current.date, y, current.time); + } + return 1; +} + + +#undef get_substr diff --git a/dockapps/wmweather+/metar.h b/dockapps/wmweather+/metar.h new file mode 100644 index 0000000..6e360c6 --- /dev/null +++ b/dockapps/wmweather+/metar.h @@ -0,0 +1,27 @@ +struct current_weather { + time_t last_update; + int month; /* 0, 1 - 12 */ + int date; /* -1, 1 - 31 (GMT) */ + short time; /* -1, 0000 - 2359 */ + short temp; /* 999, -210 - 390 (degrees C) */ + signed char rh; /* -1, 0 - 100 (%) */ + short winddir; /* -1, 0 - 16 (direction) */ + short windspeed; /* -1, 0 - MAX (knots) */ + float pressure; /* -1, 0 - MAX (inHg) */ + short heatindex; /* 999, -99 - 199 (degrees F) */ + short windchill; /* 999, -99 - 199 (degrees F) */ + signed char sky; /* -1, 0-4 (condition) */ + signed char vis; /* 7, 1-7 (status code) */ + signed char obs; /* 0, 0-3 (type) */ + signed char frz; /* 0, 0, 33, 66, 99 (intensity) */ + signed char snow; /* 0, 0, 33, 66, 99 (intensity) */ + signed char rain; /* 0, 0, 33, 66, 99 (intensity) */ + signed char tstorm; /* 0, 0, 33, 66, 99 (intensity) */ + double moon; /* NAN, -1 - 1 (percent and wax/wane) */ +}; + +extern struct current_weather current; + +void init_metar(void); +void update_metar(int force); +void metar_cleanup(void); diff --git a/dockapps/wmweather+/missing b/dockapps/wmweather+/missing new file mode 100755 index 0000000..8d0eaad --- /dev/null +++ b/dockapps/wmweather+/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2018-03-07.03; # UTC + +# Copyright (C) 1996-2020 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/dockapps/wmweather+/moon.c b/dockapps/wmweather+/moon.c new file mode 100644 index 0000000..d3b5e8b --- /dev/null +++ b/dockapps/wmweather+/moon.c @@ -0,0 +1,179 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/* One-line algorithm from http://www.moonstick.com/moon_phase_emergency.htm + * It's a bit rough, but it works well enough */ + +#if TM_IN_SYS_TIME +# if TIME_WITH_SYS_TIME +# include +# include +# else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +# endif +#else +#include +#endif +#include + +#include +#include + +#include "convert.h" + +#include "wmgeneral/wmgeneral-x11.h" + +static double fpart(double t){ + return t-trunc(t); +} + +double calc_moon(int month, int day, int year, int hm){ + time_t t=time(NULL); + struct tm *tm; + double p; + + tm=gmtime(&t); + tm->tm_hour=hm/100; + tm->tm_min=hm%100; + tm->tm_sec=0; + tm->tm_mon=month-1; + tm->tm_mday=day; + tm->tm_year=year; + t=mkgmtime(tm); + + /* This next line is the algorithm. */ + p=fpart(((t/86400.0-11323.0)*850.0+5130.5769)/25101.0); + if(p>.5) return -.5+cos(2*PI*p)/2; + return .5-cos(2*PI*p)/2; +} + + +#define darkside 0.19921875 +#define lightside (1-0.19921875) +#define maxwidth 17 +static int widths[]={ 7, 11, 13, 15, 15, 17, 17, 17, 17, 17, 17, 17, 15, 15, 13, 11, 7, -1 }; +extern int screen; +extern XpmIcon wmgen; +extern GC NormalGC; + +/* Duplicates quite a bit of code from combineWithOpacity for speed */ +void copySunMoon(int x, int y, double percent){ + XImage *pix; + unsigned int w, h, bar; + int foo; + Window baz; + int rmask, gmask, bmask; + unsigned long spixel; + int xx, terminator, oflag; + int flag; + double frac; + + if(isnan(percent)){ + copyPixmapArea(164, 64, 26, 25, x, y); + return; + } + + XGetGeometry(display, wmgen.pixmap, &baz, &foo, &foo, &w, &h, &bar, &bar); + pix=XGetImage(display, wmgen.pixmap, 0, 0, w, h, AllPlanes, ZPixmap); + + if (pix->depth == DefaultDepth(display, screen)) {{ + Visual *visual=DefaultVisual(display, screen); + rmask = visual->red_mask; + gmask = visual->green_mask; + bmask = visual->blue_mask; + }} else { + rmask = pix->red_mask; + gmask = pix->green_mask; + bmask = pix->blue_mask; + } + + x+=4; y+=4; + flag=(percent<0); + if(flag) percent=-percent; + for(h=0; widths[h]>0; h++){ + xx=(maxwidth-widths[h])>>1; + if(flag){ + oflag=1; + terminator=widths[h]*percent; + } else { + oflag=0; + terminator=widths[h]-widths[h]*percent; + } + frac=lightside*fpart(widths[h]*percent)+darkside; + for(w=0; wwidth, pix->height); + + XDestroyImage(pix); +} + +#if 0 +void copySunMoon(int x, int y, double percent){ + int w, h; + int xx; + int frac; + int flag; + + if(isnan(percent)){ + copyPixmapArea(164, 64, 26, 25, x, y); + return; + } + + combineWithOpacity(164, 89, 26, 25, x, y, 51); + x+=4; y+=4; + flag=(percent<0); + if(flag) percent=-percent; + for(h=0; h<=8; h++){ + w=widths[h]*percent; + frac=(widths[h]*percent-w)*100; + if(flag) xx=(17-widths[h])/2; + else xx=(17+widths[h])/2-w; + copyPixmapArea(141+xx, 93+h, w, 1, x+xx, y+h); + copyPixmapArea(141+xx, 109-h, w, 1, x+xx, y+16-h); + if(flag){ + combineWithOpacity(141+xx+w, 93+h, 1, 1, x+xx+w, y+h, frac); + combineWithOpacity(141+xx+w, 109-h, 1, 1, x+xx+w, y+16-h, frac); + } else { + combineWithOpacity(141+xx-1, 93+h, 1, 1, x+xx-1, y+h, frac); + combineWithOpacity(141+xx-1, 109-h, 1, 1, x+xx-1, y+16-h, frac); + } + } +} +#endif diff --git a/dockapps/wmweather+/moon.h b/dockapps/wmweather+/moon.h new file mode 100644 index 0000000..5e40803 --- /dev/null +++ b/dockapps/wmweather+/moon.h @@ -0,0 +1,2 @@ +double calc_moon(int month, int day, int year, int hm); +void copySunMoon(int x, int y, double percent); diff --git a/dockapps/wmweather+/mrf.c b/dockapps/wmweather+/mrf.c new file mode 100644 index 0000000..c4049a5 --- /dev/null +++ b/dockapps/wmweather+/mrf.c @@ -0,0 +1,315 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "wmweather+.h" +#include "forecast.h" +#include "getLine.h" +#include "convert.h" +#include "download.h" +#include "diff.h" +#include "die.h" +#include "subst.h" + +/* Important variables */ +#define MRF_MAX 7 +static time_t mrf_time=0; +static char *mrf_file=NULL; +static char *mrf_newfile=NULL; +static char *mrf_req[2]={ NULL, NULL }; +static struct forecast forecasts[MRF_MAX]; + + +/********* init functions ************/ +static int parse_mrf(char *file); + +static void reset_mrf(void){ + int i; + + for(i=0; i=0){ + if(S_ISREG(statbuf.st_mode) && statbuf.st_size!=0 + && diff(mrf_newfile, mrf_file) && parse_mrf(mrf_newfile)){ + mrf_time=find_next_time(mrf_newfile, "MOS GUIDANCE", 1440); + rename(mrf_newfile, mrf_file); + } else { + unlink(mrf_newfile); + if(!parse_mrf(mrf_file)) reset_mrf(); + } + } +} + +void mrf_cleanup(void){ + if(mrf_file==NULL) return; + unlink(mrf_newfile); + unlink(mrf_file); +} + +void update_mrf(int force){ + time_t t; + + if(mrf_file==NULL) return; + + t=time(NULL)/60; + if(!force && mrf_time>t) return; + + mrf_time=find_next_time(mrf_file, "MOS GUIDANCE", 15); + download_file(mrf_newfile, mrf_req[0], mrf_req[1], 0, mrf_callback, NULL); +} + + +#define NEXT(s) free(s); \ + len=getLine(&s, fp); \ + if(strstr(s, "")!=NULL) len=0; + +#define DIE() return (free(s), fclose(fp), 0) +#define INT(c) (tmp[0]=*c, tmp[1]=*(c+1), tmp[2]=*(c+2), tmp[3]=0, atoi(tmp)) + +static int parse_mrf(char *file){ + FILE *fp; + char *s, *c; + int len; + int mon, day; + int i, j, m, x, y; + char tmp[4]={0, 0, 0, 0}; + + reset_mrf(); + if((fp=fopen(file, "r"))==NULL) return 0; + + /* Look for something like an MRF coded forecast */ + c=NULL; + while(!feof(fp)){ + len=getLine(&s, fp); + if((c=strstr(s, "MOS GUIDANCE"))!=NULL) break; + free(s); + } + if(c==NULL) return (fclose(fp), 0); + c=strchr(c, '/'); + if(c==NULL || !isdigit(*(c-1)) || !isdigit(*(c+1))) DIE(); + mon=atoi(c-2); + x=atoi(c+1); + if(mon<1 || mon>12 || x<1 || x>31) DIE(); + c=strchr(c+1, '/'); + if(c==NULL || !isdigit(*(c-1)) || !isdigit(*(c+1))) DIE(); + y=atoi(c+1)-1900; + + NEXT(s); + if(len<10) DIE(); + if(strncmp(s, "FHR", 3)) DIE(); + + NEXT(s); + if(len<10) DIE(); + for(i=0; i<7; i++){ + if(!strncmp(s, wdaynames[i], 3)) break; + } + if(i>=7) DIE(); + day=atoi(s+4); + if(x>25 && day<5) mon++; + if(x<5 && day>25) mon--; + for(m=0; m + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include "wmweather+.h" +#include "wmgeneral/wmgeneral-x11.h" +#include "wmgeneral/xpm_trans.h" +#include "download.h" +#include "radar.h" +#include "die.h" + +/* Important variables */ +static time_t radar_time=0; +static char *radar_file=NULL; +static char *radar_newfile=NULL; +static int cropx, cropy, cropw, croph; +static int crossx, crossy; +time_t radar_update_time; +Pixmap radar; +int do_radar_cross; + +extern XpmIcon wmgen; +extern GC NormalGC; +extern int screen; +extern int d_depth; + +/* prototypes */ +static int parse_radar(char *file); + + +/* functions */ + +static void reset_radar(Pixmap *r){ + XCopyArea(display, wmgen.pixmap, *r, NormalGC, 124, 18, 52, 40, 0, 0); + XCopyArea(display, wmgen.pixmap, *r, NormalGC, 108, 89, 15, 14, 18, 13); +} + + +static void parse_cross(void){ + char *p1, *p2; + + if(radar_cross==NULL) return; + crossx=strtol(radar_cross, &p1, 10); + if(crossx<0 || crossx>=52 || p1==NULL || p1==radar_cross || *p1!='x'){ + radar_cross=NULL; + return; + } + crossy=strtol(++p1, &p2, 10); + if(crossy<0 || crossy>=40 || (p2!=NULL && *p2!='\0')){ + radar_cross=NULL; + return; + } +} + +static void parse_crop(void){ + char *p1, *p2; + + if(radar_crop==NULL) return; + cropx=strtol(radar_crop, &p1, 10); + if(p1==NULL || p1==radar_crop || *p1!='x'){ + radar_crop=NULL; + return; + } + cropy=strtol(++p1, &p2, 10); + if(p2==NULL || p2==p1 || *p2!='+'){ + radar_crop=NULL; + return; + } + cropw=strtol(p2, &p1, 10); + if(cropw<1 || p1==NULL || *p1!='+'){ + radar_crop=NULL; + return; + } + croph=strtol(p1, &p2, 10); + if(croph<1 || (p2!=NULL && *p2!='\0')){ + radar_crop=NULL; + return; + } +} + + +void init_radar(void){ + char *e; + + radar=XCreatePixmap(display, wmgen.pixmap, 52, 40, d_depth); + reset_radar(&radar); + + if(radar_uri==NULL) return; + + e=strrchr(radar_uri, '/'); + if(e==NULL) e=radar_uri; + else e++; + snprintf(bigbuf, BIGBUF_LEN-21, "%s.", e); + for(e=bigbuf; *e!='\0'; e++){ + if(!isalnum(*e) && *e!='.' && *e!='-' && *e!='+' && *e!='%' + && *e!='?' && *e!='=' && *e!='&') *e='_'; + } + strcpy(e, "radar-image"); + radar_file=get_pid_filename(bigbuf); + strcpy(e, "new-radar-image"); + radar_newfile=get_pid_filename(bigbuf); + + radar_update_time=radar_time==0; + + parse_crop(); + parse_cross(); + do_radar_cross=0; + + /* Delete stale files, if any */ + unlink(radar_file); + unlink(radar_newfile); +} + +static void radar_callback(char *filename, void *v){ + struct stat statbuf; + + if(stat(radar_newfile, &statbuf)>=0){ + if(S_ISREG(statbuf.st_mode) && statbuf.st_size!=0 + && parse_radar(radar_newfile)){ + rename(radar_newfile, radar_file); + } else { + unlink(radar_newfile); + if(!parse_radar(radar_file)) reset_radar(&radar); + } + } +} + +void radar_cleanup(void){ + if(radar_file==NULL) return; + unlink(radar_newfile); + unlink(radar_file); +} + +void update_radar(int force){ + time_t t; + + if(radar_file==NULL) return; + + t=time(NULL)/60; + if(!force && radar_time>t) return; + + radar_time=t+30; + download_file(radar_newfile, radar_uri, radar_post, force?DOWNLOAD_KILL_OTHER_REQUESTS:0, radar_callback, NULL); +} + +static RContext *rc=NULL; + +static int parse_radar(char *file){ + RImage *r, *n; + float w, h; + RColor col={ 0, 0, 0, 255}; + int x, y, ww, hh; + + errno=0; + radar_update_time=time(NULL); + reset_radar(&radar); + if(rc==NULL){ + rc=RCreateContext(display, screen, NULL); + if(rc==NULL){ + warn("parse_radar context creation: %s", RMessageForError(RErrorCode)); + return 0; + } + } + + r=RLoadImage(rc, file, 0); + if(!r) return 0; + + if(radar_crop!=NULL){ + x=cropx; y=cropy; + ww=cropw; hh=croph; + if(x<0) x+=r->width; + if(y<0) y+=r->height; + if(x<0){ ww+=x; x=0; } + if(y<0){ hh+=y; y=0; } + + if(x>=r->width || y>=r->width || ww<=0 || hh<=0){ + RReleaseImage(r); + warn("parse_radar radar_crop exceeds image dimensions"); + return 0; + } + + n=RGetSubImage(r, x, y, ww, hh); + RReleaseImage(r); + r=n; + if(!r){ + warn("parse_radar crop: %s", RMessageForError(RErrorCode)); + return 0; + } + } + + if(r->width>52 || r->height>40 || (r->width!=52 && r->height!=40)){ + w=r->width/52; + h=r->height/40; + if(w>h) h=w; + else w=h; + + n=RSmoothScaleImage(r, r->width/w, r->height/h); + RReleaseImage(r); + r=n; + if(!r){ + warn("parse_radar scale: %s", RMessageForError(RErrorCode)); + return 0; + } + } + + if(r->width!=52 || r->height!=40){ + n=RMakeCenteredImage(r, 52, 40, &col); + RReleaseImage(r); + r=n; + if(!r){ + warn("parse_radar center: %s", RMessageForError(RErrorCode)); + return 0; + } + } + + if(!RConvertImage(rc, r, &radar)){ + RReleaseImage(r); + warn("parse_radar convert: %s", RMessageForError(RErrorCode)); + return 0; + } + RReleaseImage(r); + return 1; +} + +void put_radar(int x, int y, int font){ + int i; + + XCopyArea(display, radar, wmgen.pixmap, NormalGC, 0, 0, 52, 40, x, y); + if(font==0) i=0; + else i=1; + XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, 124, 60+i, 54, 1, x-1, y-1); + XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, 124, 60+i, 54, 1, x-1, y+40); + XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, 162+i, 64, 1, 40, x-1, y); + XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, 162+i, 64, 1, 40, x+52, y); + if(radar_cross && do_radar_cross){ + combineWithOpacity(124, 60+i, 52, 1, x, y+crossy, 128); + combineWithOpacity(162+i, 64, 1, 40, x+crossx, y, 128); + } +} diff --git a/dockapps/wmweather+/radar.h b/dockapps/wmweather+/radar.h new file mode 100644 index 0000000..d826975 --- /dev/null +++ b/dockapps/wmweather+/radar.h @@ -0,0 +1,10 @@ +#include + +extern time_t radar_update_time; +extern Pixmap radar; +extern int do_radar_cross; + +void init_radar(void); +void update_radar(int force); +void put_radar(int x, int y, int font); +void radar_cleanup(void); diff --git a/dockapps/wmweather+/subst.c b/dockapps/wmweather+/subst.c new file mode 100644 index 0000000..dd73851 --- /dev/null +++ b/dockapps/wmweather+/subst.c @@ -0,0 +1,188 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include +#include + +#include "die.h" +#include "subst.h" + +#define GROW(var, len){{ \ + void *c; \ + len<<=1; \ + if(len==0) len=1; \ + if((var=realloc(c=var, len))==NULL){ \ + out=c; \ + warn("realloc error"); \ + goto fail; \ + } \ +}} + +#define COPY(c) { \ + if(k>=formatlen) GROW(format, formatlen); \ + format[k++]=c; \ +} + +char *subst(const char *s, struct subst_val *substitutes){ + int i, j, k, n, m; + char *out=NULL; + size_t outlen=0; + char *format=NULL; + size_t formatlen=0; + int flags; + ssize_t str_start; + + for(i=j=0; s[i]!='\0'; i++){ + if(s[i]!='%'){ + if(j>=outlen) GROW(out, outlen); + out[j++]=s[i]; + continue; + } + if(s[i+1]=='%'){ + if(j>=outlen) GROW(out, outlen); + out[j++]=s[i++]; + continue; + } + + n=i; + k=0; + COPY('%'); + + /* skip flags */ + flags=0; + while(strchr("#0- +'!", s[++n])){ + if(s[n]=='!'){ + flags|=1; + } else { + COPY(s[n]); + } + } + + /* min width? */ + if(isdigit(s[n]) && s[n]!='0'){ + COPY(s[n]); + while(isdigit(s[++n])){ COPY(s[n]); } + } + + /* precision? */ + if(s[n]=='.'){ + COPY('.'); + while(isdigit(s[++n])){ COPY(s[n]); } + } + + str_start=0; + if(s[n]=='>'){ + if(s[n+1]=='-'){ + flags|=2; + n++; + } + while(isdigit(s[++n])){ + str_start=str_start*10+s[n]-'0'; + } + if(flags&2) str_start=-str_start; + } + + for(m=0; s[n]!=substitutes[m].id && substitutes[m].id!='\0'; m++); + if(substitutes[m].id=='\0'){ + warn("Unknown substitition character '%c' (at %d)\n", s[n], i); + goto fail; + } + + switch(substitutes[m].type){ + case HEX: + case FLOAT_E: + case FLOAT_F: + case FLOAT_G: + case FLOAT_A: + if(flags&1){ + COPY(toupper(substitutes[m].type)); + break; + } + /* fall through*/ + + default: + COPY(substitutes[m].type); + break; + } + COPY('\0'); + +#define PRINT(var) { while((k=j+snprintf(out+j, outlen-j, format, var))>=outlen) GROW(out, outlen); j=k; } + switch(substitutes[m].type){ + case INT: + PRINT(*(signed int *)substitutes[m].val); + break; + + case UINT: + case OCTAL: + case HEX: + PRINT(*(unsigned int *)substitutes[m].val); + break; + + case FLOAT_E: + case FLOAT_F: + case FLOAT_G: + case FLOAT_A: + PRINT(*(double *)substitutes[m].val); + break; + + case CHAR: + PRINT(*(char *)substitutes[m].val); + if(flags&1) out[j-1]=toupper(out[j-1]); + break; + + case STRING: + { + char *s=*(char **)substitutes[m].val; + if(str_start<0){ + str_start+=strlen(s); + if(str_start<0) str_start=0; + } else if(str_start>strlen(s)){ + s=""; + str_start=0; + } + s+=str_start; + i=j; + PRINT(s); + if(flags&1){ + for(; i=outlen) GROW(out, outlen); + out[j]='\0'; + return out; + +fail: + free(format); + free(out); + return NULL; +} diff --git a/dockapps/wmweather+/subst.h b/dockapps/wmweather+/subst.h new file mode 100644 index 0000000..db77d4f --- /dev/null +++ b/dockapps/wmweather+/subst.h @@ -0,0 +1,23 @@ +#ifndef SUBST_H +#define SUBST_H + +struct subst_val { + char id; /* if id=='X', %X will be substituted */ + enum { + INT ='i', /* val => signed int */ + UINT ='u', /* val => unsigned int */ + OCTAL ='o', /* val => unsigned int */ + HEX ='x', /* val => unsigned int */ + FLOAT_E ='e', /* val => double */ + FLOAT_F ='f', /* val => double */ + FLOAT_G ='g', /* val => double */ + FLOAT_A ='a', /* val => double */ + CHAR ='c', /* val => char */ + STRING ='s' /* val => char * */ + } type; + void *val; +}; + +char *subst(const char *s, struct subst_val *substitutes); + +#endif diff --git a/dockapps/wmweather+/sunzenith.c b/dockapps/wmweather+/sunzenith.c new file mode 100644 index 0000000..83ff3bb --- /dev/null +++ b/dockapps/wmweather+/sunzenith.c @@ -0,0 +1,138 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +/* Algorithms from http://www.srrb.noaa.gov/highlights/sunrise/azel.html */ + +#include +#include +#include +#include +#include + +#include "convert.h" + +/* Purpose: calculate the Geometric Mean Longitude of the Sun (degrees) */ +double calcGeomMeanLongSun(double t) { + double L0 = 280.46646 + t * (36000.76983 + 0.0003032 * t); + while(L0 > 360.0) { + L0 -= 360.0; + } + while(L0 < 0.0) { + L0 += 360.0; + } + return L0; +} + + +/* Purpose: calculate the Geometric Mean Anomaly of the Sun (degrees) */ +double calcGeomMeanAnomalySun(double t) { + return 357.52911 + t * (35999.05029 - 0.0001537 * t); +} + + +/* Purpose: calculate the eccentricity of earth's orbit */ +double calcEccentricityEarthOrbit(double t) { + return 0.016708634 - t * (0.000042037 + 0.0000001267 * t); +} + + +/* Purpose: calculate the equation of center for the sun (degrees) */ +double calcSunEqOfCenter(double t) { + double m = deg2rad(calcGeomMeanAnomalySun(t)); + + return sin(m) * (1.914602 - t * (0.004817 + 0.000014 * t)) + sin(m+m) * (0.019993 - 0.000101 * t) + sin(m+m+m) * 0.000289; +} + + +/* Purpose: calculate the true longitude of the sun (degrees) */ +double calcSunTrueLong(double t) { + return calcGeomMeanLongSun(t) + calcSunEqOfCenter(t); +} + + +/* Purpose: calculate the apparent longitude of the sun (degrees) */ +double calcSunApparentLong(double t) { + return calcSunTrueLong(t) - 0.00569 - 0.00478 * sin(deg2rad(125.04-1934.136*t)); +} + + +/* Purpose: calculate the mean obliquity of the ecliptic (degrees) */ +double calcMeanObliquityOfEcliptic(double t) { + return 23.0 + (26.0 + ((21.448 - t*(46.8150 + t*(0.00059 - t*(0.001813))))/60.0))/60.0; +} + + +/* Purpose: calculate the corrected obliquity of the ecliptic (degrees) */ +double calcObliquityCorrection(double t) { + return calcMeanObliquityOfEcliptic(t) + 0.00256*cos(deg2rad(125.04-1934.136*t)); +} + + +/* Purpose: calculate the declination of the sun (degrees) */ +double calcSunDeclination(double t) { + return rad2deg(asin(sin(deg2rad(calcObliquityCorrection(t))) * + sin(deg2rad(calcSunApparentLong(t))))); +} + + +/* Purpose: calculate the difference between true solar time and mean + * solar time (minutes) + */ +double calcEquationOfTime(double t) { + double l0 = deg2rad(calcGeomMeanLongSun(t)); + double e = calcEccentricityEarthOrbit(t); + double m = deg2rad(calcGeomMeanAnomalySun(t)); + double y = tan(deg2rad(calcObliquityCorrection(t))/2.0); + double sinm = sin(m); + + y *= y; + + return rad2deg(y*sin(2.0*l0) - 2.0*e*sinm + 4.0*e*y*sinm*cos(2.0*l0) + - 0.5*y*y*sin(4.0*l0) - 1.25*e*e*sin(2.0*m))*4.0; +} + + +double calcSolarZenith(double latitude, double longitude, int year, int month, int day, int timeUTC){ + double T, trueSolarTime, hourAngle, solarDec, csz, zenith, exoatmElevation, te, refractionCorrection; + + T=jd2jcent(mdy2jd(year, month, day) + timeUTC/1440.0); + trueSolarTime = timeUTC + calcEquationOfTime(T) - 4.0 * longitude; + hourAngle = trueSolarTime / 4.0 - 180.0; + solarDec = calcSunDeclination(T); + csz = sin(deg2rad(latitude)) * sin(deg2rad(solarDec)) + + cos(deg2rad(latitude)) * cos(deg2rad(solarDec)) * + cos(deg2rad(hourAngle)); + zenith=rad2deg(acos(csz)); + exoatmElevation = 90.0 - zenith; + if (exoatmElevation > 85.0) { + refractionCorrection = 0.0; + } else { + te = tan(deg2rad(exoatmElevation)); + if (exoatmElevation > 5.0) { + refractionCorrection = 58.1/te - 0.07/(te*te*te) + + 0.000086/(te*te*te*te*te); + } else if (exoatmElevation > -0.575) { + refractionCorrection = 1735.0 + exoatmElevation*(-518.2 + exoatmElevation*(103.4 + exoatmElevation*(-12.79 + exoatmElevation*0.711))); + } else { + refractionCorrection = -20.774 / te; + } + refractionCorrection = refractionCorrection / 3600.0; + } + return zenith - refractionCorrection; +} diff --git a/dockapps/wmweather+/sunzenith.h b/dockapps/wmweather+/sunzenith.h new file mode 100644 index 0000000..d5c7494 --- /dev/null +++ b/dockapps/wmweather+/sunzenith.h @@ -0,0 +1 @@ +double calcSolarZenith(double latitude, double longitude, int year, int month, int day, int timeUTC); diff --git a/dockapps/wmweather+/warnings.c b/dockapps/wmweather+/warnings.c new file mode 100644 index 0000000..1c54ddd --- /dev/null +++ b/dockapps/wmweather+/warnings.c @@ -0,0 +1,313 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#if TM_IN_SYS_TIME +# if TIME_WITH_SYS_TIME +# include +# include +# else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +# endif +#else +#include +#endif +#include +#include +#include +#include + +#include + +#include "wmweather+.h" +#include "download.h" +#include "getLine.h" +#include "diff.h" +#include "die.h" +#include "subst.h" + +/* Important variables */ +static char *warning_filename1=NULL; +static char *warning_endptr1=NULL; + +static char *filenames[]={ + "tornado", "flash_flood>warning", "flash_flood>watch", + "flash_flood>statement", "flood>warning", "flood>coastal", + "flood>statement", "severe_weather_stmt", "special_weather_stmt", + "thunderstorm", "special_marine", "urgent_weather_message", "non_precip", + "fire_weather", "lake_shore", "tsunami", "tsunami_seismic_msg", NULL +}; +static char **reqs[sizeof(filenames)/sizeof(*filenames)-1][2]; + +unsigned long current_warnings, any_warnings; +static unsigned long *zone_current_warnings; + +/* Regular Expressions */ +static pcre *expires; +static int ovecsize; + +/* prototypes */ +static int check_warning(char *file); + + +/* functions */ + +#define compile(var, re) \ + var=pcre_compile(re, 0, (const char **)&e, &i, NULL); \ + if(var==NULL) die("init_warnings PCRE error: %s at %i", e, i); \ + pcre_fullinfo(var, NULL, PCRE_INFO_CAPTURECOUNT, &i); \ + if(i>ovecsize) ovecsize=i; + +void init_warnings(void){ + int i, j, z=0; + char *e; + struct subst_val subs[]={ + { 'z', STRING, NULL }, + { 'f', STRING, &bigbuf }, + { 0, 0, 0 } + }; + + /* Count zones, and find length of longest */ + for(i=0; warning_zones[i]!=NULL; i++){ + j=strlen(warning_zones[i]); + if(j>z) z=j; + } + + /* Allocate char ptrs for each filename for each zone */ + for(j=0; filenames[j]!=NULL; j++){ + reqs[j][0]=malloc(sizeof(char *)*i); + reqs[j][1]=malloc(sizeof(char *)*i); + if(reqs[j][0]==NULL || reqs[j][1]==NULL) die("init_warnings malloc"); + } + zone_current_warnings=calloc(i, sizeof(*zone_current_warnings)); + if(zone_current_warnings==NULL) die("init_warnings malloc"); + + /* Allocate filename base */ + e=get_pid_filename(""); + i=strlen(e); + warning_filename1=malloc(i+z+32); + if(warning_filename1==NULL) + die("init_warnings malloc"); + + strcpy(warning_filename1, e); + free(e); + warning_endptr1=warning_filename1+i; + + /* Setup misc vars */ + current_warnings=0; + any_warnings=0; + ovecsize=0; + compile(expires, "Expires:(\\d+)(\\d\\d)(\\d\\d)(\\d\\d)(\\d\\d);"); + ovecsize=(ovecsize+1)*3; + + /* Remove stale files, and allocate URIs */ + for(z=0; warning_zones[z]!=NULL; z++){ + subs[0].val=warning_zones+z; + for(i=0; filenames[i]!=NULL; i++){ + sprintf(warning_endptr1, "%s.%s.txt", warning_zones[z], filenames[i]); + unlink(warning_filename1); + sprintf(warning_endptr1, "%s.new-%s.txt", warning_zones[z], filenames[i]); + unlink(warning_filename1); + strncpy(bigbuf, filenames[i], BIGBUF_LEN); + bigbuf[BIGBUF_LEN-1]='\0'; + for(j=0; bigbuf[j]; j++){ + if(bigbuf[j]=='>') bigbuf[j]='/'; + } + if((reqs[i][0][z]=subst(warning_uri, subs))==NULL) die("init_warning"); + reqs[i][1][z]=NULL; + if(warning_post!=NULL && (reqs[i][1][z]=subst(warning_post, subs))==NULL) die("init_warning"); + } + } +} +#undef compile + +struct callback_data { + int zone; + int warning; +}; + +static void warning_callback(char *filename, void *v){ + struct stat statbuf; + struct callback_data *d=(struct callback_data *)v; + + sprintf(warning_endptr1, "%s.%s.txt", warning_zones[d->zone], filenames[d->warning]); + if(stat(filename, &statbuf)>=0){ + if(S_ISREG(statbuf.st_mode) && statbuf.st_size!=0 + && check_warning(filename) + && diff(filename, warning_filename1)){ + current_warnings|=1<warning; + any_warnings|=1<warning; + zone_current_warnings[d->zone]|=1<warning; + rename(filename, warning_filename1); + } else { + unlink(filename); + } + } +} + +void warnings_cleanup(void){ + int i, z; + + if(warning_filename1==NULL) return; + for(z=0; warning_zones[z]!=NULL; z++){ + for(i=0; filenames[i]!=NULL; i++){ + sprintf(warning_endptr1, "%s.%s.txt", warning_zones[z], filenames[i]); + unlink(warning_filename1); + sprintf(warning_endptr1, "%s.new-%s.txt", warning_zones[z], filenames[i]); + unlink(warning_filename1); + } + } +} + +void update_warnings(int force){ +// time_t t; + struct stat statbuf; + int i, z; + struct callback_data *d; + unsigned long cur_warnings = 0; + + if(warning_filename1==NULL) return; +// t=time(NULL)/60; +// if(!force && warning_time>t) return; + +// warning_time=t+15; + + for(z=0; warning_zones[z]!=NULL; z++){ + for(i=0; filenames[i]!=NULL; i++){ + /* expire old wanrings */ + sprintf(warning_endptr1, "%s.%s.txt", warning_zones[z], filenames[i]); + if(stat(warning_filename1, &statbuf)>=0){ + if(!S_ISREG(statbuf.st_mode) || statbuf.st_size==0 + || !check_warning(warning_filename1)){ + unlink(warning_filename1); + zone_current_warnings[z]&=~(1<zone=z; + d->warning=i; + download_file(warning_filename1, reqs[i][0][z], reqs[i][1][z], DOWNLOAD_NO_404, warning_callback, d); + } + } + current_warnings&=cur_warnings; + any_warnings&=cur_warnings; +} + + +#define get_substr(n, c) \ + if(pcre_get_substring(s, ovector, ovalue, n, (const char **)&c)<0){ free(s); return 0; } + +static int check_warning(char *file){ + FILE *fp; + char *s, *c; + int len; + int i; + time_t t; + struct tm *tm; + int ovector[ovecsize]; + int ovalue; + + if((fp=fopen(file, "r"))==NULL) return 0; + ovalue=-1; + while((len=getLine(&s, fp))>0){ + ovalue=pcre_exec(expires, NULL, s, len, 0, 0, ovector, ovecsize); + if(ovalue>0) break; + free(s); + } + fclose(fp); + if(ovalue<=0) return 0; + + t=time(NULL); + tm=gmtime(&t); + get_substr(1, c); i=atoi(c)-1900; pcre_free_substring(c); + if(tm->tm_yeartm_year>i){ free(s); return 0; } + get_substr(2, c); i=atoi(c)-1; pcre_free_substring(c); + if(tm->tm_montm_mon>i){ free(s); return 0; } + get_substr(3, c); i=atoi(c); pcre_free_substring(c); + if(tm->tm_mdaytm_mday>i){ free(s); return 0; } + get_substr(4, c); i=atoi(c); pcre_free_substring(c); + if(tm->tm_hourtm_hour>i){ free(s); return 0; } + get_substr(5, c); i=atoi(c); pcre_free_substring(c); + if(tm->tm_min<=i){ free(s); return 1; } + free(s); return 0; +} + +void output_warnings(int all){ + FILE *fp, *fp2; + int i, z, len; + pid_t pid; + int pipefd[2]; + + if(any_warnings==0) return; + if(!all && current_warnings==0) return; + + if(pipe(pipefd)) die("output_warnings pipe creation"); + + /* Fork to display the file */ + pid=fork(); + if(pid==-1){ + warn("output_warnings fork"); + return; + } + /* CHILD: Redirects stdin/stderr/stdout and execs the viewer */ + if(pid==0){ + close(pipefd[1]); + dup2(pipefd[0], STDIN_FILENO); + dup2(devnull, STDOUT_FILENO); + execl("/bin/sh", "/bin/sh", "-c", viewer, NULL); + die("output_warnings exec"); + } + + /* PARENT writes warnings to the pipe and returns */ + close(pipefd[0]); + fp2=fdopen(pipefd[1], "w"); + for(z=0; warning_zones[z]!=NULL; z++){ + if(!all && !zone_current_warnings[z]) continue; + for(i=0; filenames[i]!=NULL; i++){ + if(!all && !(zone_current_warnings[z]&(1<&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = wmgeneral +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libpcre.m4 \ + $(top_srcdir)/m4/libwraster.m4 $(top_srcdir)/m4/snprintf.m4 \ + $(top_srcdir)/m4/vsnprintf.m4 $(top_srcdir)/m4/xpm.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LIBRARIES = $(noinst_LIBRARIES) +AR = ar +ARFLAGS = cru +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = +libwmgeneral_gtk_a_AR = $(AR) $(ARFLAGS) +libwmgeneral_gtk_a_LIBADD = +am_libwmgeneral_gtk_a_OBJECTS = wmgeneral-gtk.$(OBJEXT) +libwmgeneral_gtk_a_OBJECTS = $(am_libwmgeneral_gtk_a_OBJECTS) +libwmgeneral_x11_a_AR = $(AR) $(ARFLAGS) +libwmgeneral_x11_a_LIBADD = +am_libwmgeneral_x11_a_OBJECTS = wmgeneral-x11.$(OBJEXT) \ + xpm_trans.$(OBJEXT) +libwmgeneral_x11_a_OBJECTS = $(am_libwmgeneral_x11_a_OBJECTS) +libwmgeneral_a_AR = $(AR) $(ARFLAGS) +libwmgeneral_a_LIBADD = +am_libwmgeneral_a_OBJECTS = wmgeneral.$(OBJEXT) \ + mouse_regions.$(OBJEXT) rcfile.$(OBJEXT) +libwmgeneral_a_OBJECTS = $(am_libwmgeneral_a_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__maybe_remake_depfiles = depfiles +am__depfiles_remade = ./$(DEPDIR)/mouse_regions.Po \ + ./$(DEPDIR)/rcfile.Po ./$(DEPDIR)/wmgeneral-gtk.Po \ + ./$(DEPDIR)/wmgeneral-x11.Po ./$(DEPDIR)/wmgeneral.Po \ + ./$(DEPDIR)/xpm_trans.Po +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libwmgeneral_gtk_a_SOURCES) $(libwmgeneral_x11_a_SOURCES) \ + $(libwmgeneral_a_SOURCES) +DIST_SOURCES = $(libwmgeneral_gtk_a_SOURCES) \ + $(libwmgeneral_x11_a_SOURCES) $(libwmgeneral_a_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBCURL = @LIBCURL@ +LIBCURL_CPPFLAGS = @LIBCURL_CPPFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LINK_XPM = @LINK_XPM@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +POW_LIB = @POW_LIB@ +RANLIB = @RANLIB@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +WMGENERAL_GUI = @WMGENERAL_GUI@ +XLIBS = @XLIBS@ +XMKMF = @XMKMF@ +X_CFLAGS = @X_CFLAGS@ +X_EXTRA_LIBS = @X_EXTRA_LIBS@ +X_LIBS = @X_LIBS@ +X_PRE_LIBS = @X_PRE_LIBS@ +_libcurl_config = @_libcurl_config@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_LIBRARIES = libwmgeneral-gtk.a libwmgeneral-x11.a +noinst_LIBRARIES = libwmgeneral.a @WMGENERAL_GUI@ +libwmgeneral_a_SOURCES = wmgeneral.c \ + mouse_regions.c mouse_regions.h rcfile.c rcfile.h + +libwmgeneral_gtk_a_SOURCES = wmgeneral-gtk.c wmgeneral-gtk.h +libwmgeneral_x11_a_SOURCES = wmgeneral-x11.c wmgeneral-x11.h \ + xpm_trans.c xpm_trans.h + +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu wmgeneral/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --gnu wmgeneral/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLIBRARIES: + -test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES) + +libwmgeneral-gtk.a: $(libwmgeneral_gtk_a_OBJECTS) $(libwmgeneral_gtk_a_DEPENDENCIES) $(EXTRA_libwmgeneral_gtk_a_DEPENDENCIES) + $(AM_V_at)-rm -f libwmgeneral-gtk.a + $(AM_V_AR)$(libwmgeneral_gtk_a_AR) libwmgeneral-gtk.a $(libwmgeneral_gtk_a_OBJECTS) $(libwmgeneral_gtk_a_LIBADD) + $(AM_V_at)$(RANLIB) libwmgeneral-gtk.a + +libwmgeneral-x11.a: $(libwmgeneral_x11_a_OBJECTS) $(libwmgeneral_x11_a_DEPENDENCIES) $(EXTRA_libwmgeneral_x11_a_DEPENDENCIES) + $(AM_V_at)-rm -f libwmgeneral-x11.a + $(AM_V_AR)$(libwmgeneral_x11_a_AR) libwmgeneral-x11.a $(libwmgeneral_x11_a_OBJECTS) $(libwmgeneral_x11_a_LIBADD) + $(AM_V_at)$(RANLIB) libwmgeneral-x11.a + +libwmgeneral.a: $(libwmgeneral_a_OBJECTS) $(libwmgeneral_a_DEPENDENCIES) $(EXTRA_libwmgeneral_a_DEPENDENCIES) + $(AM_V_at)-rm -f libwmgeneral.a + $(AM_V_AR)$(libwmgeneral_a_AR) libwmgeneral.a $(libwmgeneral_a_OBJECTS) $(libwmgeneral_a_LIBADD) + $(AM_V_at)$(RANLIB) libwmgeneral.a + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mouse_regions.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rcfile.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmgeneral-gtk.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmgeneral-x11.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wmgeneral.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xpm_trans.Po@am__quote@ # am--include-marker + +$(am__depfiles_remade): + @$(MKDIR_P) $(@D) + @echo '# dummy' >$@-t && $(am__mv) $@-t $@ + +am--depfiles: $(am__depfiles_remade) + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-noinstLIBRARIES mostlyclean-am + +distclean: distclean-am + -rm -f ./$(DEPDIR)/mouse_regions.Po + -rm -f ./$(DEPDIR)/rcfile.Po + -rm -f ./$(DEPDIR)/wmgeneral-gtk.Po + -rm -f ./$(DEPDIR)/wmgeneral-x11.Po + -rm -f ./$(DEPDIR)/wmgeneral.Po + -rm -f ./$(DEPDIR)/xpm_trans.Po + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f ./$(DEPDIR)/mouse_regions.Po + -rm -f ./$(DEPDIR)/rcfile.Po + -rm -f ./$(DEPDIR)/wmgeneral-gtk.Po + -rm -f ./$(DEPDIR)/wmgeneral-x11.Po + -rm -f ./$(DEPDIR)/wmgeneral.Po + -rm -f ./$(DEPDIR)/xpm_trans.Po + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ + clean-generic clean-noinstLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/dockapps/wmweather+/wmgeneral/mouse_regions.c b/dockapps/wmweather+/wmgeneral/mouse_regions.c new file mode 100644 index 0000000..2650945 --- /dev/null +++ b/dockapps/wmweather+/wmgeneral/mouse_regions.c @@ -0,0 +1,131 @@ +#include "../config.h" + +/* + Best viewed with vim5, using ts=4 + + wmgeneral was taken from wmppp. + + It has a lot of routines which most of the wm* programs use. + + ------------------------------------------------------------ + + Author: Martijn Pieterse (pieterse@xs4all.nl) + + --- + CHANGES: + --- + 11/08/2002 (Brad Jorsch, anomie@users.sourceforge.net) + * Moved all the mouse region related stuff to mouse_regions.[ch] + + 28/08/2001 (Brad Jorsch, anomie@users.sourceforge.net) + * Added EnableMouseRegion and DisableMouseRegion + * Got annoyed with the 81-character lines. Fixed it. If you don't like + it, find a different copy of wmgeneral.c ;) + * GraphicsExpose events are enabled here. + * GetXPM is exported. It optionally takes an XpmColorSymbol array. + * GetColor is exported. + + 30/09/2000 (Brad Jorsch, anomie@users.sourceforge.net) + * You know, wmgen.mask sounds like a much nicer place to store the + mask... why don't we do that? + + 21/09/1999 (Brad Jorsch, anomie@users.sourceforge.net) + * Changed openXwindow to use only the filename, sans path, + as the name and class properties of the app. + + 14/09/1998 (Dave Clark, clarkd@skyia.com) + * Updated createXBMfromXPM routine + * Now supports >256 colors + 11/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Removed a bug from parse_rcfile. You could + not use "start" in a command if a label was + also start. + * Changed the needed geometry string. + We don't use window size, and don't support + negative positions. + 03/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added parse_rcfile2 + 02/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added -geometry support (untested) + 28/08/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added createXBMfromXPM routine + * Saves a lot of work with changing xpm's. + 02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon + * debugged the parse_rc file. + 30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Ripped similar code from all the wm* programs, + and put them in a single file. + +*/ + +#include "mouse_regions.h" + + /*****************/ + /* Mouse Regions */ +/*****************/ + +typedef struct { + int enable; + int top; + int bottom; + int left; + int right; +} MOUSE_REGION; + +MOUSE_REGION mouse_region[MAX_MOUSE_REGION]; + +/******************************************************************************\ +|* AddMouseRegion *| +\******************************************************************************/ + +void AddMouseRegion(int index, int left, int top, int right, int bottom) { + + if (index < MAX_MOUSE_REGION) { + mouse_region[index].enable = 1; + mouse_region[index].top = top; + mouse_region[index].left = left; + mouse_region[index].bottom = bottom; + mouse_region[index].right = right; + } +} + +/******************************************************************************\ +|* CheckMouseRegion *| +\******************************************************************************/ + +int CheckMouseRegion(int x, int y) { + int i; + int found; + + found = 0; + + for (i=0; i= mouse_region[i].left && + y <= mouse_region[i].bottom && + y >= mouse_region[i].top) + found = 1; + } + if (!found) return -1; + return (i-1); +} + +/******************************************************************************\ +|* EnableMouseRegion *| +\******************************************************************************/ + +void EnableMouseRegion(int i) { + if(i256 colors + 11/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Removed a bug from parse_rcfile. You could + not use "start" in a command if a label was + also start. + * Changed the needed geometry string. + We don't use window size, and don't support + negative positions. + 03/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added parse_rcfile2 + 02/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added -geometry support (untested) + 28/08/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added createXBMfromXPM routine + * Saves a lot of work with changing xpm's. + 02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon + * debugged the parse_rc file. + 30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Ripped similar code from all the wm* programs, + and put them in a single file. + +*/ + +#include +#include +#include + +#include "rcfile.h" + +/******************************************************************************\ +|* parse_rcfile *| +\******************************************************************************/ + +void parse_rcfile(const char *filename, rckeys *keys) { + + char *p,*q; + char temp[128]; + char *tokens = " :\t\n"; + FILE *fp; + int i,key; + + fp = fopen(filename, "r"); + if (fp) { + while (fgets(temp, 128, fp)) { + key = 0; + q = strdup(temp); + q = strtok(q, tokens); + while (key >= 0 && keys[key].label) { + if ((!strcmp(q, keys[key].label))) { + p = strstr(temp, keys[key].label); + p += strlen(keys[key].label); + p += strspn(p, tokens); + if ((i = strcspn(p, "#\n"))) p[i] = 0; + free(*keys[key].var); + *keys[key].var = strdup(p); + key = -1; + } else key++; + } + free(q); + } + fclose(fp); + } +} + +/******************************************************************************\ +|* parse_rcfile2 *| +\******************************************************************************/ + +void parse_rcfile2(const char *filename, rckeys2 *keys) { + + char *p; + char temp[128]; + char *tokens = " :\t\n"; + FILE *fp; + int i,key; + char *family = NULL; + + fp = fopen(filename, "r"); + if (fp) { + while (fgets(temp, 128, fp)) { + key = 0; + while (key >= 0 && keys[key].label) { + if ((p = strstr(temp, keys[key].label))) { + p += strlen(keys[key].label); + p += strspn(p, tokens); + if ((i = strcspn(p, "#\n"))) p[i] = 0; + free(*keys[key].var); + *keys[key].var = strdup(p); + key = -1; + } else key++; + } + } + fclose(fp); + } + free(family); +} diff --git a/dockapps/wmweather+/wmgeneral/rcfile.h b/dockapps/wmweather+/wmgeneral/rcfile.h new file mode 100644 index 0000000..59d98f6 --- /dev/null +++ b/dockapps/wmweather+/wmgeneral/rcfile.h @@ -0,0 +1,29 @@ +#ifndef RCFILE_H_INCLUDED +#define RCFILE_H_INCLUDED + + /************/ + /* Typedefs */ +/************/ + +typedef struct _rckeys rckeys; + +struct _rckeys { + const char *label; + char **var; +}; + +typedef struct _rckeys2 rckeys2; + +struct _rckeys2 { + const char *family; + const char *label; + char **var; +}; + + /***********************/ + /* Function Prototypes */ +/***********************/ + +void parse_rcfile(const char *, rckeys *); + +#endif diff --git a/dockapps/wmweather+/wmgeneral/wmgeneral-gtk.c b/dockapps/wmweather+/wmgeneral/wmgeneral-gtk.c new file mode 100644 index 0000000..7fb1be3 --- /dev/null +++ b/dockapps/wmweather+/wmgeneral/wmgeneral-gtk.c @@ -0,0 +1,192 @@ +#include "../config.h" + +/* + Best viewed with vim5, using ts=4 + + wmgeneral was taken from wmppp. + + It has a lot of routines which most of the wm* programs use. + + ------------------------------------------------------------ + + Author: Brad Jorsch, anomie@users.sourceforge.net + + --- + CHANGES: + --- + 15/08/2002 (Brad Jorsch, anomie@users.sourceforge.net) + * Pulled createXBMfromXPM into its own file, because it's the same in + both -gtk and -x11. + + 11/08/2002 (Brad Jorsch, anomie@users.sourceforge.net) + * This is based on wmgeneral-x11.c (formerly wmgeneral.c), it + implements a subset of the interface using Gtk+ 2.0 + +*/ + +#include + +#include +#include + +#include "wmgeneral-gtk.h" + + /******************/ + /* Gtk+ Variables */ +/******************/ + +static GtkWidget *dockwin, *iconwin; +static GdkPixmap *pixmap, *mask; +static GdkGC *pixmap_gc, *mask_gc; +static void (*click_func)(GdkEventButton *ev); + +/******************************************************************************\ +|* RedrawWindow *| +\******************************************************************************/ + +void RedrawWindow(void) { + gdk_draw_drawable(dockwin->window, pixmap_gc, pixmap, 0, 0, 0, 0, 64, 64); + gdk_draw_drawable(iconwin->window, pixmap_gc, pixmap, 0, 0, 0, 0, 64, 64); +} + +static gint redraw_dock(gpointer d){ + RedrawWindow(); + return 0; +} + +/******************************************************************************\ +|* RedrawWindowXY *| +\******************************************************************************/ + +void RedrawWindowXY(int x, int y) { + gdk_draw_drawable(dockwin->window, pixmap_gc, pixmap, x, y, 0, 0, 64, 64); + gdk_draw_drawable(iconwin->window, pixmap_gc, pixmap, x, y, 0, 0, 64, 64); +} + +/******************************************************************************\ +|* copyXPMArea *| +\******************************************************************************/ + +void copyPixmapArea(int sx, int sy, int w, int h, int dx, int dy){ + gdk_draw_drawable(pixmap, pixmap_gc, pixmap, sx, sy, dx, dy, w, h); +} + +/******************************************************************************\ +|* copyXBMArea *| +\******************************************************************************/ + +void copyMaskArea(int sx, int sy, int w, int h, int dx, int dy){ + gdk_draw_drawable(mask, mask_gc, mask, sx, sy, dx, dy, w, h); +} + + +/******************************************************************************\ +|* setMaskXY *| +\******************************************************************************/ + +void setMaskXY(int x, int y) { + gtk_widget_shape_combine_mask(dockwin, mask, x, y); + gtk_widget_shape_combine_mask(iconwin, mask, x, y); +} + +/******************************************************************************\ +|* setClickCallback *| +\******************************************************************************/ +void setClickCallback(void (*func)(GdkEventButton *ev)){ + click_func=func; +} + +/******************************************************************************\ +|* openXwindow *| +\******************************************************************************/ + +static GdkWindow *get_gdk_leader(GdkWindow *win){ + GdkAtom atom, type; + gint len; + guchar *data; + GdkWindow *leader=NULL; + + atom=gdk_atom_intern("WM_CLIENT_LEADER", TRUE); + type=gdk_atom_intern("WINDOW", TRUE); + if(atom==GDK_NONE || type==GDK_NONE) return NULL; + if(!gdk_property_get(win, atom, type, 0, 4, FALSE, NULL, NULL, &len, &data)) return NULL; if(len==4) leader=gdk_window_foreign_new(*(GdkNativeWindow *)data); + g_free(data); + return leader; +} + +static GdkFilterReturn button_filter(XEvent *x, GdkEvent *ev, gpointer data){ + /* Bleh, Gdk insists on trying to translate buttons 4-7 into Scroll events. + * Which would be ok, except for the part where it just _throws_ _away_ the + * releases! Damnit... So, we cheat and change any buttons >3 into + * button+4, and change it back in the click handler. */ + if((x->type==ButtonPress || x->type==ButtonRelease) && x->xbutton.button>3){ + x->xbutton.button+=4; + } + return GDK_FILTER_CONTINUE; +} + +static void dock_click(GtkWidget *w, GdkEventButton *ev, gpointer d){ + if(ev->button>7) ev->button-=4; + if(click_func!=NULL) click_func(ev); +} + +#define die(args...) { fprintf(stderr, args); exit(1); } + +void openDockWindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits, int pixmask_width, int pixmask_height){ + GdkColormap *cmap; + GdkColor white, black; + GdkWindow *leader; + XWMHints hints; + + click_func=NULL; + if((dockwin=gtk_window_new(GTK_WINDOW_TOPLEVEL))==NULL) die("Couldn't create window"); + if((iconwin=gtk_window_new(GTK_WINDOW_TOPLEVEL))==NULL) die("Couldn't create window"); + gtk_widget_set_size_request(dockwin, 64, 64); + gtk_widget_set_size_request(iconwin, 64, 64); + gtk_widget_set_app_paintable(dockwin, TRUE); + gtk_widget_set_app_paintable(iconwin, TRUE); + gtk_widget_add_events(dockwin, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_SCROLL_MASK); + gtk_widget_add_events(iconwin, GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | GDK_EXPOSURE_MASK | GDK_SCROLL_MASK); + g_signal_connect(G_OBJECT(dockwin), "expose-event", G_CALLBACK(redraw_dock), NULL); + g_signal_connect(G_OBJECT(iconwin), "expose-event", G_CALLBACK(redraw_dock), NULL); + g_signal_connect(G_OBJECT(dockwin), "button-press-event", G_CALLBACK(dock_click), NULL); + g_signal_connect(G_OBJECT(iconwin), "button-press-event", G_CALLBACK(dock_click), NULL); + g_signal_connect(G_OBJECT(dockwin), "button-release-event", G_CALLBACK(dock_click), NULL); + g_signal_connect(G_OBJECT(iconwin), "button-release-event", G_CALLBACK(dock_click), NULL); + g_signal_connect(G_OBJECT(dockwin), "destroy", G_CALLBACK(exit), NULL); + g_signal_connect(G_OBJECT(iconwin), "destroy", G_CALLBACK(exit), NULL); + gtk_widget_realize(dockwin); + gtk_widget_realize(iconwin); + gdk_window_add_filter(dockwin->window, (GdkFilterFunc)button_filter, NULL); + gdk_window_add_filter(iconwin->window, (GdkFilterFunc)button_filter, NULL); + if((leader=get_gdk_leader(dockwin->window))==NULL) die("Couldn't obtain Gdk leader window"); + gdk_window_set_icon(leader, iconwin->window, NULL, NULL); + gdk_window_reparent(iconwin->window, leader, 0, 0); + gdk_window_unref(leader); + + hints.initial_state = WithdrawnState; + hints.flags = StateHint; + XSetWMHints(GDK_DISPLAY(), GDK_WINDOW_XWINDOW(dockwin->window), &hints); + + cmap=gdk_colormap_get_system(); + white.red=65535; + white.green=65535; + white.blue=65535; + black.red=0; + black.green=0; + black.blue=0; + gdk_color_alloc(cmap, &white); + gdk_color_alloc(cmap, &black); + mask=gdk_pixmap_create_from_data(NULL, pixmask_bits, pixmask_width, pixmask_height, 1, &white, &black); + pixmap=gdk_pixmap_colormap_create_from_xpm_d(NULL, cmap, NULL, NULL, pixmap_bytes); + + pixmap_gc=gdk_gc_new(iconwin->window); + mask_gc=gdk_gc_new(mask); + + setMaskXY(0, 0); + RedrawWindow(); + + gtk_widget_show(iconwin); + gtk_widget_show(dockwin); + gdk_window_withdraw(dockwin->window); +} diff --git a/dockapps/wmweather+/wmgeneral/wmgeneral-gtk.h b/dockapps/wmweather+/wmgeneral/wmgeneral-gtk.h new file mode 100644 index 0000000..99c0ea8 --- /dev/null +++ b/dockapps/wmweather+/wmgeneral/wmgeneral-gtk.h @@ -0,0 +1,20 @@ +#ifndef WMGENERAL_GTK_H_INCLUDED +#define WMGENERAL_GTK_H_INCLUDED + +#include + + /***********************/ + /* Function Prototypes */ +/***********************/ + +void openDockWindow(int argc, char *argv[], char **, char *, int, int); +void RedrawWindow(void); +void RedrawWindowXY(int x, int y); +void setClickCallback(void (*func)(GdkEventButton *ev)); + +void createXBMfromXPM(char *, char **, int, int); +void copyPixmapArea(int, int, int, int, int, int); +void copyMaskArea(int, int, int, int, int, int); +void setMaskXY(int, int); + +#endif diff --git a/dockapps/wmweather+/wmgeneral/wmgeneral-x11.c b/dockapps/wmweather+/wmgeneral/wmgeneral-x11.c new file mode 100644 index 0000000..67106e5 --- /dev/null +++ b/dockapps/wmweather+/wmgeneral/wmgeneral-x11.c @@ -0,0 +1,344 @@ +#include "../config.h" + +/* + Best viewed with vim5, using ts=4 + + wmgeneral was taken from wmppp. + + It has a lot of routines which most of the wm* programs use. + + ------------------------------------------------------------ + + Author: Martijn Pieterse (pieterse@xs4all.nl) + + --- + CHANGES: + --- + 15/08/2002 (Brad Jorsch, anomie@users.sourceforge.net) + * Pulled createXBMfromXPM into its own file, because it's the same in + both -gtk and -x11. + + 11/08/2002 (Brad Jorsch, anomie@users.sourceforge.net) + * Removed the rc-file and mouse region stuff to their own files. + * Renamed this file to "wmgeneral-x11.c" + * Renamed a few of the functions + + 28/08/2001 (Brad Jorsch, anomie@users.sourceforge.net) + * Added EnableMouseRegion and DisableMouseRegion + * Got annoyed with the 81-character lines. Fixed it. If you don't like + it, find a different copy of wmgeneral.c ;) + * GraphicsExpose events are enabled here. + * GetXPM is exported. It optionally takes an XpmColorSymbol array. + * GetColor is exported. + + 30/09/2000 (Brad Jorsch, anomie@users.sourceforge.net) + * You know, wmgen.mask sounds like a much nicer place to store the + mask... why don't we do that? + + 21/09/1999 (Brad Jorsch, anomie@users.sourceforge.net) + * Changed openXwindow to use only the filename, sans path, + as the name and class properties of the app. + + 14/09/1998 (Dave Clark, clarkd@skyia.com) + * Updated createXBMfromXPM routine + * Now supports >256 colors + 11/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Removed a bug from parse_rcfile. You could + not use "start" in a command if a label was + also start. + * Changed the needed geometry string. + We don't use window size, and don't support + negative positions. + 03/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added parse_rcfile2 + 02/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added -geometry support (untested) + 28/08/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added createXBMfromXPM routine + * Saves a lot of work with changing xpm's. + 02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon + * debugged the parse_rc file. + 30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Ripped similar code from all the wm* programs, + and put them in a single file. + +*/ + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "wmgeneral-x11.h" + + /*****************/ + /* X11 Variables */ +/*****************/ + +Window Root; +int screen; +int x_fd; +int d_depth; +XSizeHints mysizehints; +XWMHints mywmhints; +Pixel back_pix, fore_pix; +char *Geometry = ""; +Window iconwin, win; +GC NormalGC; +GC RedrawGC; +XpmIcon wmgen; +Display *display; + + /***********************/ + /* Function Prototypes */ +/***********************/ + +void RedrawWindow(void); + +/******************************************************************************\ +|* GetXPM *| +\******************************************************************************/ + +void GetXPM(XpmIcon *wmgen, char *pixmap_bytes[]) { + + XWindowAttributes attributes; + int err; + + /* For the colormap */ + XGetWindowAttributes(display, Root, &attributes); + + wmgen->attributes.valuemask |= (XpmReturnPixels | XpmReturnExtensions); + err = XpmCreatePixmapFromData(display, Root, pixmap_bytes, &(wmgen->pixmap), + &(wmgen->mask), &(wmgen->attributes)); + + if (err != XpmSuccess) { + fprintf(stderr, "Not enough free colorcells.\n"); + exit(1); + } +} + +/******************************************************************************\ +|* GetColor *| +\******************************************************************************/ + +Pixel GetColor(char *name) { + + XColor color; + XWindowAttributes attributes; + + XGetWindowAttributes(display, Root, &attributes); + + color.pixel = 0; + if (!XParseColor(display, attributes.colormap, name, &color)) { + fprintf(stderr, "wm.app: can't parse %s.\n", name); + } else if (!XAllocColor(display, attributes.colormap, &color)) { + fprintf(stderr, "wm.app: can't allocate %s.\n", name); + } + return color.pixel; +} + +/******************************************************************************\ +|* flush_expose *| +\******************************************************************************/ + +static int flush_expose(Window w) { + + XEvent dummy; + int i=0; + + while (XCheckTypedWindowEvent(display, w, Expose, &dummy)) + i++; + + return i; +} + +/******************************************************************************\ +|* RedrawWindow *| +\******************************************************************************/ + +void RedrawWindow(void) { + + flush_expose(iconwin); + XCopyArea(display, wmgen.pixmap, iconwin, RedrawGC, + 0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0); + flush_expose(win); + XCopyArea(display, wmgen.pixmap, win, RedrawGC, + 0,0, wmgen.attributes.width, wmgen.attributes.height, 0,0); +} + +/******************************************************************************\ +|* RedrawWindowXY *| +\******************************************************************************/ + +void RedrawWindowXY(int x, int y) { + + flush_expose(iconwin); + XCopyArea(display, wmgen.pixmap, iconwin, RedrawGC, + x,y, wmgen.attributes.width, wmgen.attributes.height, 0,0); + flush_expose(win); + XCopyArea(display, wmgen.pixmap, win, RedrawGC, + x,y, wmgen.attributes.width, wmgen.attributes.height, 0,0); +} + +/******************************************************************************\ +|* copyXPMArea *| +\******************************************************************************/ + +void copyPixmapArea(int x, int y, int sx, int sy, int dx, int dy) { + + XCopyArea(display, wmgen.pixmap, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); + +} + +/******************************************************************************\ +|* copyXBMArea *| +\******************************************************************************/ + +void copyMaskArea(int x, int y, int sx, int sy, int dx, int dy) { + + XCopyArea(display, wmgen.mask, wmgen.pixmap, NormalGC, x, y, sx, sy, dx, dy); +} + + +/******************************************************************************\ +|* setMaskXY *| +\******************************************************************************/ + +void setMaskXY(int x, int y) { + + XShapeCombineMask(display, win, ShapeBounding, x, y, wmgen.mask, ShapeSet); + XShapeCombineMask(display, iconwin, ShapeBounding, x, y, wmgen.mask, ShapeSet); +} + +/******************************************************************************\ +|* openXwindow *| +\******************************************************************************/ +void openDockWindow(int argc, char *argv[], char *pixmap_bytes[], char *pixmask_bits, int pixmask_width, int pixmask_height) { + + unsigned int borderwidth = 1; + XClassHint classHint; + char *display_name = NULL; + char *wname; + XTextProperty name; + + XGCValues gcv; + unsigned long gcm; + + char *geometry = NULL; + + int dummy=0; + int i, wx, wy; + + wname=strrchr(argv[0], '/'); + if(wname==NULL) wname=argv[0]; + else wname++; + + for (i=1; argv[i]; i++) { + if (!strcmp(argv[i], "-display")) { + display_name = argv[i+1]; + i++; + } + if (!strcmp(argv[i], "-geometry")) { + geometry = argv[i+1]; + i++; + } + } + + if (!(display = XOpenDisplay(display_name))) { + fprintf(stderr, "%s: can't open display %s\n", + wname, XDisplayName(display_name)); + exit(1); + } + screen = DefaultScreen(display); + Root = RootWindow(display, screen); + d_depth = DefaultDepth(display, screen); + x_fd = XConnectionNumber(display); + + /* Convert XPM to XImage */ + GetXPM(&wmgen, pixmap_bytes); + + /* Create a window to hold the stuff */ + mysizehints.flags = USSize | USPosition; + mysizehints.x = 0; + mysizehints.y = 0; + + back_pix = GetColor("white"); + fore_pix = GetColor("black"); + + XWMGeometry(display, screen, Geometry, NULL, borderwidth, &mysizehints, + &mysizehints.x, &mysizehints.y,&mysizehints.width,&mysizehints.height, &dummy); + + mysizehints.width = 64; + mysizehints.height = 64; + + win = XCreateSimpleWindow(display, Root, mysizehints.x, mysizehints.y, + mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix); + + iconwin = XCreateSimpleWindow(display, win, mysizehints.x, mysizehints.y, + mysizehints.width, mysizehints.height, borderwidth, fore_pix, back_pix); + + /* Activate hints */ + XSetWMNormalHints(display, win, &mysizehints); + classHint.res_name = wname; + classHint.res_class = "DockApp"; + XSetClassHint(display, win, &classHint); + + XSelectInput(display, win, ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask); + XSelectInput(display, iconwin, ButtonPressMask | ExposureMask | ButtonReleaseMask | PointerMotionMask | StructureNotifyMask); + + if (XStringListToTextProperty(&wname, 1, &name) == 0) { + fprintf(stderr, "%s: can't allocate window name\n", wname); + exit(1); + } + + XSetWMName(display, win, &name); + + /* Create GC for drawing */ + + gcm = GCForeground | GCBackground | GCGraphicsExposures; + gcv.foreground = fore_pix; + gcv.background = back_pix; + gcv.graphics_exposures = True; + NormalGC = XCreateGC(display, Root, gcm, &gcv); + gcv.graphics_exposures = False; + RedrawGC = XCreateGC(display, Root, gcm, &gcv); + + /* ONLYSHAPE ON */ + + if(pixmask_bits!=NULL){ + XFreePixmap(display, wmgen.mask); + wmgen.mask = XCreateBitmapFromData(display, win, pixmask_bits, pixmask_width, pixmask_height); + } + + XShapeCombineMask(display, win, ShapeBounding, 0, 0, wmgen.mask, ShapeSet); + XShapeCombineMask(display, iconwin, ShapeBounding, 0, 0, wmgen.mask, ShapeSet); + + /* ONLYSHAPE OFF */ + + mywmhints.initial_state = WithdrawnState; + mywmhints.icon_window = iconwin; + mywmhints.icon_x = mysizehints.x; + mywmhints.icon_y = mysizehints.y; + mywmhints.window_group = win; + mywmhints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint; + + XSetWMHints(display, win, &mywmhints); + + XSetCommand(display, win, argv, argc); + XMapWindow(display, win); + + if (geometry) { + if (sscanf(geometry, "+%d+%d", &wx, &wy) != 2) { + fprintf(stderr, "Bad geometry string.\n"); + exit(1); + } + XMoveWindow(display, win, wx, wy); + } +} diff --git a/dockapps/wmweather+/wmgeneral/wmgeneral-x11.h b/dockapps/wmweather+/wmgeneral/wmgeneral-x11.h new file mode 100644 index 0000000..65ae365 --- /dev/null +++ b/dockapps/wmweather+/wmgeneral/wmgeneral-x11.h @@ -0,0 +1,37 @@ +#ifndef WMGENERAL_X11_H_INCLUDED +#define WMGENERAL_X11_H_INCLUDED + +#include + + /************/ + /* Typedefs */ +/************/ + +typedef struct { + Pixmap pixmap; + Pixmap mask; + XpmAttributes attributes; +} XpmIcon; + + /*******************/ + /* Global variable */ +/*******************/ + +extern Display *display; + + /***********************/ + /* Function Prototypes */ +/***********************/ + +void openDockWindow(int argc, char *argv[], char **, char *, int, int); +void RedrawWindow(void); +void RedrawWindowXY(int x, int y); + +Pixel GetColor(char *); +void GetXPM(XpmIcon *, char **); +void createXBMfromXPM(char *, char **, int, int); +void copyPixmapArea(int, int, int, int, int, int); +void copyMaskArea(int, int, int, int, int, int); +void setMaskXY(int, int); + +#endif diff --git a/dockapps/wmweather+/wmgeneral/wmgeneral.c b/dockapps/wmweather+/wmgeneral/wmgeneral.c new file mode 100644 index 0000000..808ae0d --- /dev/null +++ b/dockapps/wmweather+/wmgeneral/wmgeneral.c @@ -0,0 +1,124 @@ +#include "../config.h" + +/* + Best viewed with vim5, using ts=4 + + wmgeneral was taken from wmppp. + + It has a lot of routines which most of the wm* programs use. + + ------------------------------------------------------------ + + Author: Martijn Pieterse (pieterse@xs4all.nl) + + --- + CHANGES: + --- + 15/08/2002 (Brad Jorsch, anomie@users.sourceforge.net) + * Updated createXBMfromXPM to handle the case where the XBM is to be + wider than the XPM, or the XBM width is not a multiple of 8. + * Pulled createXBMfromXPM into its own file, because it's the same in + both -gtk and -x11. + + 11/08/2002 (Brad Jorsch, anomie@users.sourceforge.net) + * Removed the rc-file and mouse region stuff to their own files. + * Renamed this file to "wmgeneral-x11.c" + * Renamed a few of the functions + + 28/08/2001 (Brad Jorsch, anomie@users.sourceforge.net) + * Added EnableMouseRegion and DisableMouseRegion + * Got annoyed with the 81-character lines. Fixed it. If you don't like + it, find a different copy of wmgeneral.c ;) + * GraphicsExpose events are enabled here. + * GetXPM is exported. It optionally takes an XpmColorSymbol array. + * GetColor is exported. + + 30/09/2000 (Brad Jorsch, anomie@users.sourceforge.net) + * You know, wmgen.mask sounds like a much nicer place to store the + mask... why don't we do that? + + 21/09/1999 (Brad Jorsch, anomie@users.sourceforge.net) + * Changed openXwindow to use only the filename, sans path, + as the name and class properties of the app. + + 14/09/1998 (Dave Clark, clarkd@skyia.com) + * Updated createXBMfromXPM routine + * Now supports >256 colors + 11/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Removed a bug from parse_rcfile. You could + not use "start" in a command if a label was + also start. + * Changed the needed geometry string. + We don't use window size, and don't support + negative positions. + 03/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added parse_rcfile2 + 02/09/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added -geometry support (untested) + 28/08/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Added createXBMfromXPM routine + * Saves a lot of work with changing xpm's. + 02/05/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * changed the read_rc_file to parse_rcfile, as suggested by Marcelo E. Magallon + * debugged the parse_rc file. + 30/04/1998 (Martijn Pieterse, pieterse@xs4all.nl) + * Ripped similar code from all the wm* programs, + and put them in a single file. + +*/ + +#include + +/******************************************************************************\ +|* createXBMfromXPM *| +\******************************************************************************/ +void createXBMfromXPM(char *xbm, char **xpm, int sx, int sy) { + + int i,j,k; + int width, height, numcol, depth; + int zero=0; + unsigned char bwrite; + int bcount; + int curpixel; + + while(sx&7){ sx++; } + + sscanf(*xpm, "%d %d %d %d", &width, &height, &numcol, &depth); + width*=depth; + + for (k=0; k!=depth; k++) + { + zero <<=8; + zero |= xpm[1][k]; + } + + for (i=numcol+1; i < numcol+sy+1; i++) { + bcount = 0; + bwrite = 0; + for (j=0; j>= 1; + + if(j +#include + +#include "wmgeneral-x11.h" + +extern int screen; +extern XpmIcon wmgen; +extern GC NormalGC; + +static int get_shift(unsigned mask){ + int i=0; + + while(!mask&1){ + mask>>=1; + i++; + } + return i; +} + +void combineWithTrans(int sx, int sy, unsigned w, unsigned h, int dx, int dy){ + XImage *pix, *mask; + unsigned int ww, hh, bar; + int foo; + Window baz; + unsigned x, y; + + XGetGeometry(display, wmgen.pixmap, &baz, &foo, &foo, &ww, &hh, &bar, &bar); + pix=XGetImage(display, wmgen.pixmap, 0, 0, ww, hh, AllPlanes, ZPixmap); + XGetGeometry(display, wmgen.mask, &baz, &foo, &foo, &ww, &hh, &bar, &bar); + mask=XGetImage(display, wmgen.mask, 0, 0, ww, hh, AllPlanes, ZPixmap); + + for(y=0; ywidth, pix->height); + + XDestroyImage(pix); + XDestroyImage(mask); +} + +void combineWithOpacity(int sx, int sy, unsigned w, unsigned h, int dx, int dy, int o){ + XImage *pix, *mask; + unsigned int ww, hh, bar; + int foo; + Window baz; + int rmask, gmask, bmask; + int rshift, gshift, bshift; + unsigned long spixel, dpixel; + unsigned x, y; + int c_o; + + if(o==0) return; + if(o==256){ + combineWithTrans(sx, sy, w, h, dx, dy); + return; + } + + XGetGeometry(display, wmgen.pixmap, &baz, &foo, &foo, &ww, &hh, &bar, &bar); + pix=XGetImage(display, wmgen.pixmap, 0, 0, ww, hh, AllPlanes, ZPixmap); + XGetGeometry(display, wmgen.mask, &baz, &foo, &foo, &ww, &hh, &bar, &bar); + mask=XGetImage(display, wmgen.mask, 0, 0, ww, hh, AllPlanes, ZPixmap); + + if (pix->depth == DefaultDepth(display, screen)) {{ + Visual *visual=DefaultVisual(display, screen); + rmask = visual->red_mask; + gmask = visual->green_mask; + bmask = visual->blue_mask; + }} else { + rmask = pix->red_mask; + gmask = pix->green_mask; + bmask = pix->blue_mask; + } + + c_o=256-o; + rshift=get_shift(rmask); + gshift=get_shift(gmask); + bshift=get_shift(bmask); +/* NOTE: >>s then <>s)*o+((dpixel&m)>>s)*c_o)>>8)<width, pix->height); + + XDestroyImage(pix); + XDestroyImage(mask); +} diff --git a/dockapps/wmweather+/wmgeneral/xpm_trans.h b/dockapps/wmweather+/wmgeneral/xpm_trans.h new file mode 100644 index 0000000..1d44646 --- /dev/null +++ b/dockapps/wmweather+/wmgeneral/xpm_trans.h @@ -0,0 +1,7 @@ +/* Like copyXPMArea, but only copies non-masked pixels */ +void combineWithTrans(int sx, int sy, unsigned w, unsigned h, int dx, int dy); + +/* Like combineWithTrans, except it combines pixels by this formula: + * new = (src * o + dest * (256 - o)) / 256 + */ +void combineWithOpacity(int sx, int sy, unsigned w, unsigned h, int dx, int dy, int o); diff --git a/dockapps/wmweather+/wmweather+.1 b/dockapps/wmweather+/wmweather+.1 new file mode 100644 index 0000000..8853df1 --- /dev/null +++ b/dockapps/wmweather+/wmweather+.1 @@ -0,0 +1,418 @@ +.de Sh +.br +.if t .Sp +.ne 5 +.PP +\fB\\$1\fR +.PP +.. +.TH wmweather+ 1 "April 24, 2020" +.SH NAME +wmweather+ \- A dock app for displaying weather information +.P +.SH SYNOPSIS +.B wmweather+ +.RB [\| options \|] +.SH DESCRIPTION +\fBwmweather+\fP downloads current conditions, forecast data, and optionally a +radar image. It will also watch for various warnings and display them using an +external command. +.SH OPTIONS +Note that later options override earlier ones, and command line options +override configuration file options. All multi-character options may be +specified with one or two leading dashes. The configuration file is simply one +option (with value if necessary) per line, leading dashes optional. Empty lines +and lines beginning with the '#' character are ignored. +.SS General Options +.TP +.BI "-display " +Name of display to use. +.TP +.BI "-c " +Specify a configuration file instead of the default. This option is ignored in +the configuration file. +.TP +.BI "-display-mode " +Specify the starting display mode. Valid values are "cur"/"current", +"fcst"/"forecast", and "map"/"radar". +.TP +.BI "-location " +Specify a latitude and longitude, for example "41'59'00N 87'55'00W" or +"N41.9833333333333 W87.9166666666667". You may use either the decimal or DMS +notation, with either a prefixed sign or a prefixed or suffixed N/S/E/W. If +this option isn't given, the program will assume you live on the equator and +guess your longitude based on your system timezone offset. +.TP +.BR "-e\fR,\fP\ -email "
+Specify the anonymous FTP password. +.TP +.BR -v ", " -version +Display version number and exit. +.TP +.BI "-viewer " +External program for viewing weather warnings. This command must take the text +to display from standard input. It will be executed as '/bin/sh \-c +\fI\fP' with stdout redirected to /dev/null. If not specified, it will +default to "xless". +.TP +.BR -animate ", " -noanimate +Turn animation on or off. Animation may still be toggled with the middle mouse +button as described below. The default is on. +.SS Station Options +.TP +.BI "-s\fR,\fP\ -station " +Station ID for all stations. Equivalent to +.RI "'-metar-station " " -avn-station " +.RI " -eta-station " " -mrf-station " '. +.TP +.BI "-metar-station " +Station ID for METAR observations. See \fBCurrent Conditions\fP for more +information. A value must be provided. +.TP +.BI "-avn-station " +Station ID for AVN forecasts. See \fBForecasts\fP for more information. +.TP +.BI "-eta-station " +Station ID for ETA forecasts. See \fBForecasts\fP for more information. +.TP +.BI "-mrf-station " +Station ID for MRF forecasts. See \fBForecasts\fP for more information. +.TP +.BI "-warning-zone " +Zone ID for weather warnings. See \fBWarnings\fP for more information. This +option may be repeated for multiple zones. +.TP +.BI "-forget-warning-zones" +Cause wmweather+ to forget all warning zones found to this point. Useful for +user configuration files to override the warning zones specified in the +system-wide configuration. +.P +.BI "-metar-uri " +.br +.BI "-avn-uri " +.br +.BI "-eta-uri " +.br +.BI "-mrf-uri " +.br +.BI "-warning-uri " +.RS +URI to download the specified data from. See \fBURIs\fP for more information. +.RE +.P +.BI "-metar-post " +.br +.BI "-avn-post " +.br +.BI "-eta-post " +.br +.BI "-mrf-post " +.br +.BI "-warning-post " +.RS +Post data for downloading the specified data. See \fBURIs\fP for more +information. Note that the post option must follow the corresponding URI +option. Note that the post data will \fInot\fP be URL-encoded for you. +.RE +.TP +.B -noradar +Do not display a radar image. This is the default. +.P +.BI "-radar-uri " +.br +.BI "-radar-post " +.RS +Retrieve an image from the specified URI. See \fBRadar Map\fP for more +information. +.RE +.TP +.BI "-radar-crop " +How to crop the radar image. +.IR X x Y + W + H +format. See \fBRadar Map\fP for more information. +.TP +.BI "-radar-cross " +Where to draw radar crosshairs. +.IR X x Y +format. See \fBRadar Map\fP for more +information. +.SS Measurement Options +.TP +.BR -m ", " -metric +Same as '\-cm \-hPa \-kph \-tempc'. +.TP +.B -in +Display precipitation amounts in inches. This is the default. +.TP +.B -cm +Display precipitation amounts in centimeters. +.TP +.B -inHg +Display pressure in inches of mercury. This is the default. +.TP +.BR -hPa ", " -mbar +Display pressure in hectopascal (millibars) +.TP +.B -mmHg +Display pressure in millimeters of mercury. +.TP +.B -atm +Display pressure in atmospheres. +.TP +.B -mph +Display windspeed in miles/hour. This is the default. +.TP +.B -kph +Display windspeed in kilometers/hour. +.TP +.B -knots +Display windspeed in knots. +.TP +.B -mps +Display windspeed in meters/second. +.TP +.B -beaufort +Display windspeed on the Beaufort scale. +.TP +.B -tempf +Display temperature in degrees Fahrenheit. This is the default. +.TP +.B -tempc +Display temperature in degrees Celcius. +.SH DISPLAY +The dockapp has three display modes: Current Conditions, Forecasts, and Radar +Map. Modes are selected by the buttons across the top of the icon. Weather +Warning status is indicated by the font color. At any point +double-(left)clicking the main display will send SIGUSR1 to the process (see +\fBSIGNALS\fP). +.Sh "Current Conditions" +This mode displays the current conditions as given in the METAR report for the +selected station, as downloaded from +.UR http://tgftp.nws.noaa.gov/data/observations/metar/stations/ +http://tgftp.nws.noaa.gov/data/observations/metar/stations/ +.UE +.RI . +Downloads are attempted every 15 minutes. Find your station at +.UR http://www.nws.noaa.gov/tg/siteloc.shtml +http://www.nws.noaa.gov/tg/siteloc.shtml +.UE +.RI . +.P +The station ID is displayed at the top left of the display. The observation +date (local) is to the right, and the time (local and UTC) occupies the line +below. Under that, to the right is the temperature and relative humidity, the +wind direction and speed, the atmospheric pressure (indicated by "P"), the +heat index (indicated by "HI"), and the wind chill (indicated by "WC"). +.P +To the left is a graphical display of the current weather. The sky condition is +indicated as clear (sun), partly cloudy (sun with small clouds), mostly cloudy +(sun behind a large cloud), or overcast (large cloud). This image may be +covered by fog (foggy overlay), dust/sand/haze (brownish particles), or blowing +snow/dust/sand (blue wind-lines), with the level of transparency indicating the +degree of visibility. If a funnel cloud or tornado was reported, a tornado +graphic will be displayed instead of the sky condition. +.P +Beneath this graphic, icons will depict rain (raindrop), snow (snowflake), +freezing precipitation (hailstones), and thunderstorms (lightning bolt). If +animation is enabled, the icons will appear and vanish on a ten second cycle +to indicate precipitation intensity. Animation may be enabled or disabled by +middle-clicking the display. +.Sh Forecasts +This mode displays the current conditions as given in the AVN, ETA, and MRF +data for the selected stations, as downloaded from +.UR http://www.nws.noaa.gov/tdl/synop/products/bullform.mav.htm +http://www.nws.noaa.gov/tdl/synop/products/bullform.mav.htm +.UE +.RI , +.UR http://www.nws.noaa.gov/mdl/synop/products/bullform.met.htm +http://www.nws.noaa.gov/mdl/synop/products/bullform.met.htm +.UE +and +.UR http://www.nws.noaa.gov/tdl/synop/products/bullform.mex.htm +http://www.nws.noaa.gov/tdl/synop/products/bullform.mex.htm +.UE +.RI . +AVN and ETA reports are downloaded at startup, 0000Z, and 1200Z. MRF reports +are downloaded at startup and 0000Z. In the event of failure, downloads will be +retried every 15 minutes. See the URIs given to find your stations. +.P +The display is divided into two sections. A small window at the top indicates +the date and hour (local time) for which this forecast is valid. Left-clicking +this window or clicking the small arrow-button to the right will advance to +the next forecast; right-clicking or clicking the small arrow-button to the +left will move to the previous forecast. Middle-clicking will return to the +first forecast in the list. +.P +The larger display at the bottom shows the forecast for the selected date and +time. To the right from top to bottom are the station ID, the daily high and +low temperatures, the predicted temperature and relative humidity, and the +wind direction and speed. The final line may display the heat index (HI), the +wind chill (WC), the amount of snow to fall in that period (SN), the amount of +liquid-equivalent precipitation to fall in that period (P), or the forecast +type (e.g. "AVN" or "MRF"). +.P +To the left is a weather display similar to that for the Current Conditions. +The animation here indicates the percent chance of rain, snow, freezing +precipitation, thunderstorms, and severe thunderstorms (large lightning bolt). +Animation may be turned on or off with the middle button. When animation is +off, the mouse wheel may be used to adjust the cutoff chance for the display +(hold Shift to adjust faster). The cutoff will be displayed briefly when first +turning off animation, when first displaying forecasts, whenever button 6 +(typically, the 'side' button) is held down in the large display. Permanent +cutoff display may be toggled by double-middle-clicking the large display. +.Sh "Radar Map" +The radar image will be downloaded every 30 minutes from the URI specified. +Then, if \-radar\-crop was specified in the form +.IR X x Y + W + H , +a subimage of witdh \fIW\fP and height \fIH\fP will be taken, with the +upper-left pixel taken from +.RI ( X ", " Y ). +If \fIX\fP or \fIY\fP is negative, it will be measured from the right/bottom of +the image instead of the top/left. The image is then resized to fit within the +52x40 rectangle available. A border around the image indicates the current font +color. If \-radar\-cross was specified in the form +.IR X x Y , +crosshairs will then be +drawn over the pixel +.RI ( X ", " Y ) +when the middle button is held on the radar map. +.P +If \-noradar was specified or no radar data is available, an image to that +effect will be displayed instead. +.P +Some nice images are available from +.UR http://weather.noaa.gov/radar/mosaic/DS.p19r0/ar.us.conus.shtml +http://weather.noaa.gov/radar/mosaic/DS.p19r0/ar.us.conus.shtml +.UE +and +.UR http://www.weather.com/common/home/maps.html +http://www.weather.com/common/home/maps.html +.UE +.RI . +Be kind, since the display is so small pick the smallest version of the image +to download. +.Sh "Weather Warnings" +Various weather warnings, watches, and statements for the specified zone are +downloaded from +.UR http://tgftp.nws.noaa.gov/data/watches_warnings/ +http://tgftp.nws.noaa.gov/data/watches_warnings/ +.UE +.RI . +Downloads are attempted at the same time METAR observations are retrieved. Find +your zone at +.UR http://weather.noaa.gov/ +http://weather.noaa.gov/ +.UE +or +.UR http://weather.gov/ +http://weather.gov/ +.UE +.RI . +Note that some areas issue weather warnings by multiple geopolitical units +(e.g. "zones" and "counties"). The \-warning\-zone option may be specified +multiple times, so all appropriate files may be inspected. +.P +If any new warnings are downloaded, all text will be displayed in an +orange/red scheme instead of the normal blue/orange. The new warnings may then +be viewed by left-clicking the large display window in any mode. At any point, +all current warnings may be displayed by right-clicking the large display. +.SH "URIs" +The URIs from which the various observations, forecasts, and images are +downloaded can be easily customized by supplying values for the various +.I -*-uri +options. The following substitution variables are available: +.TP +.B %s +The station ID for the specified data type (note that warnings have no station +ID). +.TP +.B %z +The zone ID, for warnings. +.TP +.B %f +The warning type, for warnings (e.g. "tornado", "special_weather_stmt"). +.P +The substitutions can be manipulated with the standard +.BR printf (3) +modifiers for strings, in particular the +.BR # ", " 0 ", " - ", " +.BR "' '" ", " + ", and " ' +flags, the +.BR "field width" , +and the +.B precision +fields are accepted. Also, an additional flag +.B ! +is recognized to use the capitalized versions of various numeric flags (e.g. +\fBX\fP versus \fBx\fP) and to capitalize character or string values, and an +additional syntax +.BI ">" "" +after the precision is recognized to start at an offset into the string value +(negative values indicate offset from the end of the string). +.P +The current defaults are: +.TP +metar-uri +.nf +http://tgftp.nws.noaa.gov/data/observations/metar/stations/%s.TXT +.fi +.TP +avn-uri +.nf +http://www.nws.noaa.gov/cgi-bin/mos/getmav.pl?sta=%s +.fi +.TP +eta-uri +.nf +http://www.nws.noaa.gov/cgi-bin/mos/getmet.pl?sta=%s +.fi +.TP +mrf-uri +.nf +http://www.nws.noaa.gov/cgi-bin/mos/getmex.pl?sta=%s +.fi +.TP +warning-uri +.nf +http://tgftp.nws.noaa.gov/data/watches_warnings/%f/%.2z/%z.txt +.fi +.SH FILES +.TP +.I $HOME/.wmweather+/ +Directory used to store downloaded data files. These files may be deleted at +any time. +.TP +.I $HOME/.wmweather+/conf +User configuration. +.TP +.I /etc/wmweather+.conf +System configuration. +.TP +.I $HOME/.wmweather+/.dir-test +Created and deleted to test write access to \fI$HOME/.wmweather+/\fP +.SH SIGNALS +.TP +.I SIGUSR1 +Forces downloads for the current mode to be attempted immediately. +.TP +.I SIGUSR2 +Forces all downloads to be attempted immediately. +.SH BUGS +Before reporting a bug, please check the HINTS file (in particular, +proxy instructions are in that file). Also, please verify that you have +the latest version of wmweather+, and that your bug has not already been +reported. Bugs may be filed at +.UR http://sourceforge.net/tracker/?group_id=60336&atid=493854 +http://sourceforge.net/tracker/?group_id=60336&atid=493854 +.UE +.RI . +.SH AUTHORS +\fBwmweather+\fP was written by \fIBrad Jorsch +\fP, using the wmgeneral code by \fIMartijn +Pieterse \fP. +.P +Email regarding wmweather+ should be sent to +\fIanomie@users.sourceforge.net\fP. +.SH INSPIRATION +wmWeather was a good idea, but it didn't give me enough information. However, +no code from wmWeather was used in writing wmweather+. diff --git a/dockapps/wmweather+/wmweather+.c b/dockapps/wmweather+/wmweather+.c new file mode 100644 index 0000000..77a9d7a --- /dev/null +++ b/dockapps/wmweather+/wmweather+.c @@ -0,0 +1,824 @@ +#include "config.h" + +/* Copyright (C) 2002 Brad Jorsch + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#if TM_IN_SYS_TIME +# if TIME_WITH_SYS_TIME +# include +# include +# else +# if HAVE_SYS_TIME_H +# include +# else +# include +# endif +# endif +#else +#include +#endif + +#include +#include +#include + +#include "wmweather+.h" +#include "convert.h" +#include "download.h" +#include "dock.h" +#include "die.h" +#include "animation.h" + + +char *ProgName; +char *bigbuf; +int devnull; +char *monthnames[]={ "", "JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC" }; +char *monthnames2[]={ "", "", "", "", "", "", "JUNE", "JULY", "", "SEPT", "", "", "" }; +char *wdaynames[]={ "SUNDAY", "MONDAY", "TUESDAY", "WEDN'SDAY", "THURSDAY", "FRIDAY", "SATURDAY"}; +char *directions[]={"VRB", "N", "NNE", "NE", "ENE", "E", "ESE", "SE", "SSE", "S", "SSW", "SW", "WSW", "W", "WNW", "NW", "NNW"}; + +char *error; +char *unknown_option="Unknown option"; + +#define F(a) fprintf(stderr, a "\n"); + +/*************************************************** + * Configuration parameters + ***************************************************/ +char *email_address=NULL; +char *metar_station=NULL; +char *metar_uri=NULL; +char *metar_post=NULL; +char **warning_zones=NULL; +char *warning_uri=NULL; +char *warning_post=NULL; +char *avn_station=NULL; +char *avn_uri=NULL; +char *avn_post=NULL; +char *eta_station=NULL; +char *eta_uri=NULL; +char *eta_post=NULL; +char *mrf_station=NULL; +char *mrf_uri=NULL; +char *mrf_post=NULL; +char *radar_uri=NULL; +char *radar_post=NULL; +char *radar_crop=NULL; +char *radar_cross=NULL; +char *viewer=NULL; +int pressure_mode=0; +int windspeed_mode=0; +int temp_mode=0; +int length_mode=0; +double latitude=999, longitude=999; +int start_do_animation=1; +int starting_mode=0; + + +/********************************** + * Prototypes + **********************************/ +void usage(int i) __THROW __attribute__ ((__noreturn__)); +void printversion(void); +int readconf(char *file); +int parse_option(char *option, char *value); +char *get_filename(char *file); + +/********************************** + * Functions + **********************************/ + +void sigchld(int i){ + while(waitpid(-1, NULL, WNOHANG)>0); +} + +int parse_option(char *option, char *value){ + int i; + void *v; + + errno=0; + error=unknown_option; + if(option[0]=='-') option++; + if(option[0]=='-' && option[1]!='\0' && option[2]!='\0') option++; + if(option[0]=='\0') return 0; + if(value!=NULL && value[0]=='\0') value=NULL; + + switch (option[0]){ + case 'a': + if(!strncmp(option, "avn-", 4)){ + if(!strcmp(option+4, "station")){ + if(value==NULL){ + error="avn-station given with no station ID"; + return 0; + } + if(avn_station!=NULL) free(avn_station); + avn_station=strdup(value); + if(avn_station==NULL) die("avn-station strdup"); + return 2; + } else if(!strcmp(option+4, "uri")){ + if(value==NULL){ + error="avn-uri given with no URI"; + return 0; + } + if(avn_uri!=NULL) free(avn_uri); + avn_uri=strdup(value); + if(avn_uri==NULL) die("avn-uri strdup"); + if(avn_post!=NULL) free(avn_post); + avn_post=NULL; + return 2; + } else if(!strcmp(option+4, "post")){ + if(value==NULL){ + error="avn-post given with no data"; + return 0; + } + if(avn_uri==NULL){ + error="avn-post must come after avn-uri"; + return 0; + } + if(avn_post!=NULL) free(avn_post); + avn_post=strdup(value); + if(avn_post==NULL) die("avn-post strdup"); + return 2; + } + break; + } else if(!strcmp(option, "atm")){ + pressure_mode=3; + return 1; + } else if(!strcmp(option, "animate")){ + start_do_animation=1; + return 1; + } + break; + case 'b': + if(!strcmp(option, "beaufort")){ + windspeed_mode=4; + return 1; + } + break; + case 'c': + if(option[1]=='\0') return 2; /* -c handled earlier */ + else if(!strcmp(option, "cm")){ + length_mode=1; + return 1; + } + break; + case 'd': + if(!strcmp(option, "display-mode")){ + if(value==NULL){ + error="display-mode given with no mode specified"; + return 0; + } + if(!strcasecmp(value, "cur") || !strcasecmp(value, "current")){ + starting_mode=0; + return 2; + } else if(!strcasecmp(value, "fcst") || !strcasecmp(value, "forecast")){ + starting_mode=1; + return 2; + } else if(!strcasecmp(value, "map") || !strcasecmp(value, "radar")){ + starting_mode=2; + return 2; + } else { + error="display-mode given with unrecognized mode"; + return 0; + } + } else if(!strcmp(option, "display")){ + return 1; + } + break; + case 'e': + if(!strncmp(option, "eta-", 4)){ + if(!strcmp(option+4, "station")){ + if(value==NULL){ + error="eta-station given with no station ID"; + return 0; + } + if(eta_station!=NULL) free(eta_station); + eta_station=strdup(value); + if(eta_station==NULL) die("eta-station strdup"); + return 2; + } else if(!strcmp(option+4, "uri")){ + if(value==NULL){ + error="eta-uri given with no URI"; + return 0; + } + if(eta_uri!=NULL) free(eta_uri); + eta_uri=strdup(value); + if(eta_uri==NULL) die("eta-uri strdup"); + if(eta_post!=NULL) free(eta_post); + eta_post=NULL; + return 2; + } else if(!strcmp(option+4, "post")){ + if(value==NULL){ + error="eta-post given with no data"; + return 0; + } + if(eta_uri==NULL){ + error="eta-post must come after eta-uri"; + return 0; + } + if(eta_post!=NULL) free(eta_post); + eta_post=strdup(value); + if(eta_post==NULL) die("eta-post strdup"); + return 2; + } + break; + } else if(option[1]=='\0' || !strcmp(option, "email")){ + if(value==NULL){ + error="-e/email given with no address"; + return 0; + } + if(email_address!=NULL) free(email_address); + email_address=strdup(value); + if(email_address==NULL) die("email strdup"); + return 2; + } + break; + case 'f': + if(!strncmp(option, "forget-", 7)){ + if(!strcmp(option+7, "warning-zones")){ + if(warning_zones) free(warning_zones); + warning_zones=NULL; + return 1; + } + break; + } + break; + case 'h': + if(!strcmp(option, "hPa")){ + pressure_mode=1; + return 1; + } + break; + case 'i': + if(!strcmp(option, "inHg")){ + pressure_mode=0; + return 1; + } else if(!strcmp(option, "in")){ + length_mode=0; + return 1; + } + break; + case 'k': + if(!strcmp(option, "kph")){ + windspeed_mode=1; + return 1; + } else if(!strcmp(option, "knots")){ + windspeed_mode=2; + return 1; + } + break; + case 'l': + if(!strcmp(option, "location")){ + if(value==NULL){ + error="location given with no value"; + return 0; + } + if(!str2dd(value, &latitude, &longitude)){ + error="location should be of the form \"dd'mm'ssN dd'mm'ssW\" or \"dd.ddddN dd.dddddW\"\n Note that, if you're using '-location' on the command line, you will need\n to quote the value, e.g. '-location \"dd.ddddN dd.dddddW\"'"; + return 0; + } + if(latitude>90 || latitude<-90 || longitude>180 || longitude<-180){ + error="latitude or longitude out of range"; + return 0; + } + return 2; + } + break; + case 'm': + if(option[1]=='\0' || !strcmp(option, "metric")){ + pressure_mode=windspeed_mode=temp_mode=length_mode=1; + return 1; + } else if(!strncmp(option, "metar-", 6)){ + if(!strcmp(option+6, "station")){ + if(value==NULL){ + error="metar-station given with no station ID"; + return 0; + } + if(metar_station!=NULL) free(metar_station); + metar_station=strdup(value); + if(metar_station==NULL) die("metar-station strdup"); + return 2; + } else if(!strcmp(option+6, "uri")){ + if(value==NULL){ + error="metar-uri given with no URI"; + return 0; + } + if(metar_uri!=NULL) free(metar_uri); + metar_uri=strdup(value); + if(metar_uri==NULL) die("metar-uri strdup"); + if(metar_post!=NULL) free(metar_post); + metar_post=NULL; + return 2; + } else if(!strcmp(option+6, "post")){ + if(value==NULL){ + error="metar-post given with no data"; + return 0; + } + if(metar_uri==NULL){ + error="metar-post must come after metar-uri"; + return 0; + } + if(metar_post!=NULL) free(metar_post); + metar_post=strdup(value); + if(metar_post==NULL) die("metar-post strdup"); + return 2; + } + break; + } else if(!strncmp(option, "mrf-", 4)){ + if(!strcmp(option+4, "station")){ + if(value==NULL){ + error="mrf-station given with no station ID"; + return 0; + } + if(mrf_station!=NULL) free(mrf_station); + mrf_station=strdup(value); + if(mrf_station==NULL) die("mrf-station strdup"); + return 2; + } else if(!strcmp(option+4, "uri")){ + if(value==NULL){ + error="mrf-uri given with no URI"; + return 0; + } + if(mrf_uri!=NULL) free(mrf_uri); + mrf_uri=strdup(value); + if(mrf_uri==NULL) die("mrf-uri strdup"); + if(mrf_post!=NULL) free(mrf_post); + mrf_post=NULL; + return 2; + } else if(!strcmp(option+4, "post")){ + if(value==NULL){ + error="mrf-post given with no data"; + return 0; + } + if(mrf_uri==NULL){ + error="mrf-post must come after mrf-uri"; + return 0; + } + if(mrf_post!=NULL) free(mrf_post); + mrf_post=strdup(value); + if(mrf_post==NULL) die("mrf-post strdup"); + return 2; + } + break; + } else if(!strcmp(option, "mmHg")){ + pressure_mode=2; + return 1; + } else if(!strcmp(option, "mph")){ + windspeed_mode=0; + return 1; + } else if(!strcmp(option, "mps")){ + windspeed_mode=3; + return 1; + } else if(!strcmp(option, "mbar")){ + pressure_mode=1; + return 1; + } + break; + case 'n': + if(!strcmp(option, "noradar")){ + if(radar_uri!=NULL) free(radar_uri); + radar_uri=NULL; + return 1; + } else if(!strcmp(option, "noanimate")){ + start_do_animation=0; + return 1; + } + break; + case 'r': + if(!strcmp(option, "radar")){ + warn("'radar' is deprecated, please use 'radar-uri' instead"); + return parse_option("radar-uri", value); + } else if(!strncmp(option, "radar-", 6)){ + if(!strcmp(option+6, "uri")){ + if(value==NULL){ + error="radar-uri given with no URI"; + return 0; + } + if(radar_uri!=NULL) free(radar_uri); + radar_uri=strdup(value); + if(radar_uri==NULL) die("radar-uri strdup"); + if(radar_post!=NULL) free(radar_post); + radar_post=NULL; + return 2; + } else if(!strcmp(option+6, "post")){ + if(value==NULL){ + error="radar-post given with no data"; + return 0; + } + if(radar_uri==NULL){ + error="radar-post must come after radar-uri"; + return 0; + } + if(radar_post!=NULL) free(radar_post); + radar_post=strdup(value); + if(radar_post==NULL) die("radar-post strdup"); + return 2; + } else if(!strcmp(option+6, "crop")){ + if(value==NULL){ + error="radar-crop given with no value"; + return 0; + } + if(radar_crop!=NULL) free(radar_crop); + radar_crop=strdup(value); + if(radar_crop==NULL) die("radar-crop strdup"); + return 2; + } else if(!strcmp(option+6, "cross")){ + if(value==NULL){ + error="radar-cross given with no value"; + return 0; + } + if(radar_cross!=NULL) free(radar_cross); + radar_cross=strdup(value); + if(radar_cross==NULL) die("radar-cross strdup"); + return 2; + } + break; + } + break; + case 's': + if(option[1]=='\0' || !strcmp(option, "station")){ + if(value==NULL){ + error="-s/station given with no value"; + return 0; + } + if(parse_option("metar-station", value)==2 + && parse_option("avn-station", value)==2 + && parse_option("eta-station", value)==2 + && parse_option("mrf-station", value)==2) + return 2; + return 0; + } + break; + case 't': + if(!strcmp(option, "tempf")){ + temp_mode=0; + return 1; + } else if(!strcmp(option, "tempc")){ + temp_mode=1; + return 1; + } + break; + case 'v': + if(option[1]=='\0' || !strcmp(option, "version")){ + printversion(); + exit(0); + } else if(!strcmp(option, "viewer")){ + if(value==NULL){ + error="viewer given with no value"; + return 0; + } + if(viewer!=NULL) free(viewer); + viewer=strdup(value); + if(viewer==NULL) die("viewer strdup"); + return 2; + } + break; + case 'w': + if(!strncmp(option, "warning-", 8)){ + if(!strcmp(option+8, "zone")){ + if(value==NULL){ + error="warning-zone given with no zone ID"; + return 0; + } + if(warning_zones!=NULL){ + for(i=0; warning_zones[i]!=NULL; i++); + } else { + i=0; + } + v=realloc(warning_zones, sizeof(*warning_zones)*(i+2)); + if(v==NULL) die("warning-zone realloc"); + warning_zones=v; + warning_zones[i+1]=NULL; + warning_zones[i]=strdup(value); + if(warning_zones[i]==NULL) die("warning-zone strdup"); + return 2; + } else if(!strcmp(option+8, "uri")){ + if(value==NULL){ + error="warning-uri given with no URI"; + return 0; + } + if(warning_uri!=NULL) free(warning_uri); + warning_uri=strdup(value); + if(warning_uri==NULL) die("warning-uri strdup"); + if(warning_post!=NULL) free(warning_post); + warning_post=NULL; + return 2; + } else if(!strcmp(option+8, "post")){ + if(value==NULL){ + error="warning-post given with no data"; + return 0; + } + if(warning_uri==NULL){ + error="warning-post must come after warning-uri"; + return 0; + } + if(warning_post!=NULL) free(warning_post); + warning_post=strdup(value); + if(warning_post==NULL) die("warning-post strdup"); + return 2; + } + break; + } + break; + case 'z': + if(!strcmp(option, "zone")){ + warn("'zone' is deprecated, please use 'warning-zone' instead"); + return parse_option("warning-zone", value); + } + break; + default: + break; + } + return 0; +} + +int readconf(char *file){ + char *c, *d; + int i, l, flag=1; + FILE *fp; + + if(file==NULL){ + flag=0; + file=get_filename("conf"); + } + + if((fp=fopen(file, "r"))==NULL){ + if(!flag){ + free(file); + return 0; + } + return 1; + } + + l=0; + while(fgets(bigbuf, BIGBUF_LEN, fp)!=NULL){ + l++; + for(i=strlen(bigbuf)-1; i>=0; i--){ + if (!isspace(bigbuf[i])) break; + bigbuf[i]='\0'; + } + c=bigbuf+strspn(bigbuf, " \t"); + if(*c=='#' || *c=='\0') continue; + d=c+strcspn(c, " \t"); + if(*d=='\0') d=NULL; + else { + *d='\0'; + d++; + d+=strspn(d+1, " \t"); + if(*d=='\0') d=NULL; + } + if(!parse_option(c, d)){ + warn("%s[%d]: %s", file, l, error); + fclose(fp); + if(!flag) free(file); + return 2; + } + } + fclose(fp); + if(!flag) free(file); + return 0; +} + + +int check_dir(void){ + char *c; + struct stat statbuf; + int i; + + c=get_filename(""); + i=stat(c, &statbuf); + if(i<0){ + if(errno==ENOENT){ + if(mkdir(c, 0777)<0) die("Couldn't create directory %s", c); + errno=0; + warn("Created directory %s", c); + i=stat(c, &statbuf); + } + if(i<0) die("Couldn't stat %s", c); + } + if(!S_ISDIR(statbuf.st_mode)) die("%s is not a directory", c); + free(c); + c=get_filename(".dir-test"); + if(unlink(c)<0 && errno!=ENOENT) die("Couldn't delete %s", c); + if((i=stat(c, &statbuf))!=-1 || errno!=ENOENT){ + if(i!=-1) errno=EEXIST; + die("Couldn't verify nonexistence of %s", c); + } + if((i=creat(c, 0))<0) die("Couldn't create %s", c); + close(i); + if(stat(c, &statbuf)<0) die("Couldn't stat %s", c); + unlink(c); + free(c); + return 1; +} + +void sigint(int i){ + exit(0); +} + +int main(int argc, char **argv){ + int i, j; + char *c; + + ProgName = argv[0]; + if((c=strrchr(ProgName, '/'))!=NULL && *(c+1)!='\0'){ + ProgName=c+1; + } + + if((bigbuf=malloc(BIGBUF_LEN))==NULL) die("bigbuf malloc"); + check_dir(); + + devnull=open("/dev/null", O_RDWR); + if(devnull<0) die("opening /dev/null"); + /* Parse Command Line */ + + c=NULL; + for(i=1;i1) exit(1); + if((i=readconf(c))==1) warn("Couldn't open %s", c); + if(i) exit(1); + + for(i=1;i89.8){ + F("Latitude greater then 89.9N automatically truncated.\n"); + latitude=89.8; + } else if(latitude<-89.8){ + F("Latitude greater then 89.9S automatically truncated.\n"); + latitude=-89.8; + } + if(i) exit(1); + if(viewer==NULL) viewer="xless"; + if(metar_uri==NULL) metar_uri="http://tgftp.nws.noaa.gov/data/observations/metar/stations/%s.TXT"; + if(avn_uri==NULL) avn_uri="http://www.nws.noaa.gov/cgi-bin/mos/getmav.pl?sta=%s"; + if(eta_uri==NULL) eta_uri="http://www.nws.noaa.gov/cgi-bin/mos/getmet.pl?sta=%s"; + if(mrf_uri==NULL) mrf_uri="http://www.nws.noaa.gov/cgi-bin/mos/getmex.pl?sta=%s"; + if(warning_uri==NULL) warning_uri="http://tgftp.nws.noaa.gov/data/watches_warnings/%f/%.2z/%z.txt"; + + download_init(email_address); + init_dock(argc, argv); + while(1){ + update_dock(); + download_process(100000); + } +} + +void usage(int i) { + F("Option Value Description"); + F("------ ----- -----------"); + F("-c Specify a configuration file"); + F("-e
Alias for -email"); + F("-email
Specify anonymous FTP password"); + F("-location Specify latitude and longitude. See manpage."); + F("-v Alias for -version"); + F("-version Display version number"); + F("-viewer Program to display text from stdin"); + F("-[no]animate Turn animation on or off"); + F(""); + F("-s Alias for -station"); + F("-station Station ID (all stations)"); + F("-metar-station Station ID for METAR observations"); + F("-avn-station Station ID for AVN forecasts"); + F("-eta-station Station ID for ETA forecasts"); + F("-mrf-station Station ID for MRF forecasts"); + F("-warning-zone Zone ID for weather warnings"); + F("-*-uri URI for the weather data (see docs for details)"); + F("-*-post Post data for the weather data (see docs)"); + F(" '*' can be metar, avn, eta, mrf, warning"); + F("-noradar Do not display a radar image."); + F("-radar-uri URI for radar image"); + F("-radar-post Post data for radar image"); + F("-radar-crop How to crop the radar image. XxY+W+H format."); + F("-radar-cross Where to draw radar crosshairs. XxY format."); + F(""); + F("-m Alias for -metric"); + F("-metric Same as -cm -hPa -kph -tempc"); + F(""); + F("-in Display precipitation amounts in inches"); + F("-cm Display precipitation amounts in centimeters"); + F(""); + F("-inHg Display pressure in inHg"); + F("-hPa Display pressure in hPa (millibars)"); + F("-mbar Alias for -hPa"); + F("-mmHg Display pressure in mmHg"); + F("-atm Display pressure in atmospheres"); + F(""); + F("-mph Display windspeed in miles/hour"); + F("-kph Display windspeed in kilometers/hour"); + F("-knots Display windspeed in knots"); + F("-mps Display windspeed in meters/second"); + F("-beaufort Display windspeed on the Beaufort scale"); + F(""); + F("-tempf Display temperature in degrees Fahrenheit"); + F("-tempc Display temperature in degrees Celcius"); + + exit(i); +} + +void printversion(void) { + fprintf(stderr, "%s\n", VERSION); +} + +char *get_filename(char *file){ + char *f, *c; + + c=getenv("HOME"); + if((f=malloc(strlen(c)+strlen(file)+14))==NULL) die("get_filename"); + strcpy(f, c); + strcat(f, "/.wmweather+/"); + strcat(f, file); + return f; +} + +char *get_pid_filename(char *file){ + char *f, *c; + static unsigned short seq=0; + char buf[15]; + + snprintf(buf, sizeof(buf), "%08X.%04X-", getpid(), seq++); + c=getenv("HOME"); + if((f=malloc(strlen(c)+strlen(file)+14+14))==NULL) die("get_pid_filename"); + strcpy(f, c); + strcat(f, "/.wmweather+/"); + strcat(f, buf); + strcat(f, file); + return f; +} diff --git a/dockapps/wmweather+/wmweather+.h b/dockapps/wmweather+/wmweather+.h new file mode 100644 index 0000000..e4103d6 --- /dev/null +++ b/dockapps/wmweather+/wmweather+.h @@ -0,0 +1,41 @@ +#define BIGBUF_LEN 4096 + +char *get_filename(char *file); +char *get_pid_filename(char *file); + +extern char *ProgName; +extern int devnull; +extern char *bigbuf; +extern char *monthnames[]; +extern char *monthnames2[]; +extern char *wdaynames[]; +extern char *directions[]; + +extern char *email_address; +extern char *metar_station; +extern char *metar_uri; +extern char *metar_post; +extern char **warning_zones; +extern char *warning_uri; +extern char *warning_post; +extern char *avn_station; +extern char *avn_uri; +extern char *avn_post; +extern char *eta_station; +extern char *eta_uri; +extern char *eta_post; +extern char *mrf_station; +extern char *mrf_uri; +extern char *mrf_post; +extern char *radar_uri; +extern char *radar_post; +extern char *radar_crop; +extern char *radar_cross; +extern char *viewer; +extern int pressure_mode; +extern int windspeed_mode; +extern int temp_mode; +extern int length_mode; +extern double latitude, longitude; +extern int start_do_animation; +extern int starting_mode; diff --git a/dockapps/wmweather+/wmweather_master.xpm b/dockapps/wmweather+/wmweather_master.xpm new file mode 100644 index 0000000..90ee75f --- /dev/null +++ b/dockapps/wmweather+/wmweather_master.xpm @@ -0,0 +1,221 @@ +/* XPM */ +static char * wmweather_master_xpm[] = { +"190 129 89 1", +" c None", +". c #F6F2FE", +"+ c #82828A", +"@ c #AEAAAE", +"# c #020202", +"$ c #AAAAAA", +"% c #C6C6C6", +"& c #CACACA", +"* c #1EC2FE", +"= c #FE7E7E", +"- c #FEFEFE", +"; c #FEC202", +"> c #B2B2B2", +", c #B6B6B6", +"' c #767602", +") c #C2C202", +"! c #FEFA02", +"~ c #FEDA02", +"{ c #FEFE02", +"] c #828202", +"^ c #AEAEAF", +"/ c #DADADA", +"( c #E6E6E6", +"_ c #FAFAFA", +": c #F2F2F2", +"< c #6A5E22", +"[ c #D2D2D2", +"} c #EAEAEA", +"| c #CECECE", +"1 c #C2C2C2", +"2 c #9AFEFA", +"3 c #DEDEDE", +"4 c #E2E2E2", +"5 c #06021A", +"6 c #060216", +"7 c #22222A", +"8 c #767677", +"9 c #D6D6D6", +"0 c #828282", +"a c #090616", +"b c #45464B", +"c c #9E9E9F", +"d c #929293", +"e c #969696", +"f c #A2A2A2", +"g c #A6A6A6", +"h c #5D5E61", +"i c #0A0A16", +"j c #EEEEEE", +"k c #4E4E4E", +"l c #9A9A99", +"m c #6A6A6B", +"n c #626265", +"o c #7C7C7A", +"p c #F6F6F6", +"q c #36363A", +"r c #65666A", +"s c #565656", +"t c #6E6E6F", +"u c #89898A", +"v c #727273", +"w c #161622", +"x c #7F7E7E", +"y c #8E8E8D", +"z c #BABABA", +"A c #504F52", +"B c #4A4A4B", +"C c #5A5A5E", +"D c #505056", +"E c #BEBEBE", +"F c #1E1D21", +"G c #EAEAE6", +"H c #FA02FE", +"I c #323232", +"J c #028AFE", +"K c #0296FE", +"L c #029AFE", +"M c #027AFE", +"N c #0286FE", +"O c #0276FE", +"P c #0266E2", +"Q c #029EFE", +"R c #026EF5", +"S c #0292FE", +"T c #0282FE", +"U c #027EFE", +"V c #026AEE", +"W c #0262DE", +"X c #025ED2", +" .................+.................+.................+ ", +" .@@@@@@@@@@@@@@@@#.@@@@@@@@@@@@@@@@#.@@@@@@@@@@@@@@@@# ", +" .$$$##$#$#$##$$$$#.$###$$##$##$###$#.$$##$##$$#$$##$$# ", +" .@@#$$@#@#@#$#@@@#.@#$$@#$$@#$@$#$@#.@@#$#$#@#$#@#$#@# ", +" ######################################################## ######################################################## .$$#@$$#$#$##$$$$#.$##$$#@$$##@$#$$#.$$#$#$#$###$##$$# ", +" #.................+.................+.................+% #.................+.................+.................+% .@@#$@@#@#@#$#@@@#.@#$@@#$@@$#$@#@@#.@@#@#@#@#$#@#$@@# ", +" #.$$$$$$$$$$$$$$$$#.$$$$$$$$$$$$$$$$#.$$$$$$$$$$$$$$$$#& #.$$$$$$$$$$$$$$$$#.$$$$$$$$$$$$$$$$#.$$$$$$$$$$$$$$$$#& .$$@##$###$#$#$$$#.$#$$$@##@##$$#$$#.$$#$#$#$#$#$#$$$# ", +" #.@@@##@#@#@##@@@@#.@###@@##@##@###@#.@@##@##@@#@@##@@#% #.@@@##@#@#@##@@@@#.@###@@##@##@###@#.@@##@##@@#@@##@@#% .@@$$$@$$$@$@$@@@#.@$@@@$$$$$$@@$@@#.@@$@$@$@$@$@$@@@# ", +" #.$$#$$$#$#$#$#$$$#.$#$$$#$$$#$$$#$$#.$$#$#$#$#$#$#$#$#& #.$$#$$$#$#$#$#$$$#.$#$$$#$$$#$$$#$$#.$$#$#$#$#$#$#$#$#& +#################+#################+################# ", +" #.@@#@@@#@#@##$@@@#.@##@@#@@@##@@#@@#.@@#@#@#@###@##$@#% #.@@#@@@#@#@##$@@@#.@##@@#@@@##@@#@@#.@@#@#@#@###@##$@#% #################+#################+#################+ ", +" #.$$#$$$#$#$#@#$$$#.$#$$$#$$$$#$$#$$#.$$#$#$#$#$#$#@$$#& #.$$#$$$#$#$#@#$$$#.$#$$$#$$$$#$$#$$#.$$#$#$#$#$#$#@$$#& #$$$$$$$$$$$$$$$$.#$$$$$$$$$$$$$$$$.#$$$$$$$$$$$$$$$$. ", +" #.@@$##@###@#$#@@@#.@#@@@$##@##@@#@@#.@@#@#@#@#@#@#$@@#% #.@@$##@###@#$#@@@#.@#@@@$##@##@@#@@#.@@#@#@#@#@#@#$@@#% #@@@##@#@#@##@@@@.#@###@@##@##@###@.#@@##@##@@#@@##@@. ", +" #.$@$$$$$$$$@$$$$$#.$$$$@$$$$$$$$$$$#.$$$$$$$$$$$$@$$$#& #.$@$$$$$$$$@$$$$$#.$$$$@$$$$$$$$$$$#.$$$$$$$$$$$$@$$$#& #$$#$$$#$#$#$#$$$.#$#$$$#$$$#$$$#$$.#$$#$#$#$#$#$#$#@. ", +" #+#################+#################+#################% #+#################+#################+#################% #@@#@@@#@#@##$@@@.#@##@@#@@@##@@#@@.#@@#@#@#@###@##$$. ", +" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%& %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%& #$$#$$$#$#$#@#$$$.#$#$$$#$$$$#$$#$$.#$$#$#$#$#$#$#@@@. ", +" #@@$##@###@#$#@@@.#@#@@@$##@##@@#@@.#@@#@#@#@#@#@#$$$. ", +" ######################################################## ######## ###################################### ######## #$@$$$$$$$$@$$$$$.#$$$$@$$$$$$$$$$$.#$$$$$$$$$$$$@@@@. ", +" #######################################################% #.....+% #####################################% #.....+% +.................+.................+................. ", +" #######################################################& #.$$$$#& #####################################& #.$$$$#& ###################################################### ", +" #######################################################% #.@@#@#% #####################################% #.@#@@#% ###################################################### ", +" #######################################################& #.$##$#% #####################################% #.$##$#& ###################################################### ", +" #######################################################% #.@$#@#& #####################################& #.@#$@#% ###################################################### ", +" #######################################################& #.@$$$#% #####################################% #.$@$$#& ###################################################### ", +" #######################################################% #+#####& #####################################& #+#####% ###################################################### ", +" #######################################################& %%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%& ###################################################### ", +" #######################################################% ###################################################### ", +" #######################################################& ######################################################## ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" #######################################################% #######################################################% ###################################################### ", +" #######################################################& #######################################################& ###################################################### ", +" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ###################################################### ", +" ****************************************************** ", +" ====================================================== ", +" ", +" ", +" ########-################# #####################-#### *=############;#############", +" ######--->################ ########-->>>>>>>>>>-,#### *=############;#############", +" ####------>#####>--####### ########,,,,-------->>#### *=######;####;;;####;#######", +" ####>-----,>>->-,---###### ########>-->,,,,,,,,,##### *=######;;###;;;###;;#######", +" ##--,------,--------###### ########,,,>>>>>->--###### *=######;;;')!!!)';;;#######", +" >> ##---,------,--------##### ########>>>,,--,,,>>###### *=#######~!{{{{!{!!~########", +" ,,,,,, ,->>>>>> ,>,>>> >>> ##---,------,,--------#### ########,->--,>>>--####### *=##;;##]{{{{{{{{{{{];;;;###", +" ,>------, >-------,,------>>--->> > #------------>,,------#### ########>,,,----,,######## *=##;;;~{{{{{{{{{{{{!~;;####", +" ------------, ,,--------------------, ^>>>>>> #-------------------->-### ########>---,,,>>>######## *=###;;!{{{{{{{{{{{{{!;#####", +" >>,,,,,,,,,,> ,--,>,,,,,,--,,-,,,> >>,----> #---------------,,,----### ########-,>,>>----######## *=####~{{{{{{{{{{{{{{!'#####", +" ,> ,> > ,------> >> #,--,,-,------->>-,----### ########>,>---,,,######### *=####){{{{{{{{{{{{{{{)#####", +" >,>------,>-> ->----,>---------->,-,#### ########--,,,,>>########## *=##;;!{{{{{{{{{{{{{{{!;;###", +" ,>----------->> -,----,----------,>,>>#### ########,>>>>,->########## *=;;;;{{{{{{{{{{{{{{{{{;;;;#", +" ,>-------------> -------,,,,,---------->### ########>,,---,########### *=##;;!{{{{{{{{{{{{{{{!;;###", +" ,--------------> ----------------------->># ########>-,,,>############ *=####){{{{{{{{{{{{{{{)#####", +" ,,,,,, ,,,,,, >>>>>-,-----,,-,,--> ,,-------------------,>### ########-->>-,############ *=####'{{{{{{{{{{{{{{{~#####", +" ,>------, ,>------, ,-,-----,,---,>---->> #,,,---------,,,,--,>,#### ########,,,->############# *=####;{{{{{{{{{{{{{{{;#####", +" ------------, ------------, >------,,>>--,>------> #>>>,,----,,,>>>>,,>,>#### #########--,,############# *=###;;~{{{{{{{{{{{{{~;;;###", +" >>,,,,,,,,,,> >>,,,,,,,,,,> ,-,---------->,-------> #,,>>,,,,>>>,,,,>>,>,##### ########,,>>############## *=##;;##]{{{{{{{{{{{]##;;###", +" ,>,---------------,,,, ##>,,>>>>,,,>####,>####### ########>>,############### *=######;~{{{{{{{{{~########", +" >,,,,----------,>>>> ######,,>>################ #########>>############### *=######;;;'){{{)';;########", +" ,>>>>,,,,,,,,,,>,,,> ########################## ########################## *=######;;###;;;###;;#######", +" ,>>>>>>>>>>,>>>, ########################## ########################## *=######;####;;;####;#######", +" ,,,,,,,,,> ########################## ########################## *=############;#############", +" ########################## ########################## *=############;#############", +"&/(____------------:&%%%%> < < < <<<<< <<<< < < < ###-##-##-#####.....+.....+ *=##########################", +"[/}----------------:|1111% <<< <<<< << <<< < < < ###--#-#-#-####.$$$$#.$$$$# *=##########################", +"[/(_---------------:[%%%1% << << < <<< << << 22222222222 ###-#--#-#-####.@@#$#.@#@$# *=##########################", +"|/(_---------------}|%%%%% <<<<<< < < <<< < 22 2222 ###-##-#-#-####.$##@#.$##@# *=##########################", +"3_----------------------4% < <<< < < < <<< 222222222 222 ###-##-##-#####.$$#$#.$#$$# *=####566678$&9&^076655#####", +"-------------------------/ < << <<<< < 222 ###############.@@$@#.@$@@# *=####55abc$defedg1hi55#####", +"-------------------------j <<<< < << < < 222 222 ###############+#####+##### *=####55k8lmn8l^$e$,oi5#####", +"-------------------------p < < <<<< < << < << 222222 2222 2 ####################+#####+ *=####aqnmrsntucvod,1h6#####", +"-------------------------_ < << < << < << 222222 ################$$$$.#$$$$. *=####wnttrnmxyonn0%zz7#####", +"-------------------------p <<<<<< < < 22 22222 --###-##---##-##@@#@.#@#@@. *=####bAmnvvvtcvhhmy$tn#####", +"-------------------------p <<< < << < <<<< << 222222 22 22222222 22 -#-#-#-##-##-#-#$##$.#$##$. *=####mbsvuge8tnxskBfru#####", +"-------------------------( < << <<< < <<< < < 222222 -#-#---##-##---#@$#@.#@#$@. *=####cBCu0exncl$CDDocg#####", +"p-----------------------_[ < < << << << < < 22 22222 222 -#-#-#-##-##-#-#@$$$.#$@$$. *=####gBBhv08yl%EemdvCc#####", +"(:_---------------------_% <<<< <<< < < < 22 222 22 --##-#-##-##-#-+.....+..... *=####gCDs8vu^,|E&u^otg#####", +"/44j_-------------------_> <<< << < << < < < < << 222 22 22 *=####dd8vnm8d>EE&>0c0d#####", +"fffE:__-----------------pe < < < < < < < 222 22 2 2 ####nEcCxxrez,E,zyefn#####", +"fff^(__-----------------jt <<<< << << < <<< < << < 2222 222 ####FzE8x08g9[E%%z[zF#####", +"fff,4:-----------------pEB < < <<<< << < < << < ####ak1gf$[}G[1E,19s6#####", +"f$|jpp_---------------_3%^ << < <<< < < <<<< < < 22 222222222222 ####6at,^E9G4|1E|Era6#####", +"z4}:__pp__-----------_j&%^ < B< < < < <<< 222222222 2222 ####65ak^z%4[&1&,ka56#####", +"4}}:pp:jpj:_-----_____}%E^ < << < < < < < << 22 2222 ####5666Fmf99[gmF6555#####", +"[9/3}}}}}}[}pp}((_ppp:9E^f <<<<< < <<< < < < < 22222 H{{{{H ##########################", +"%1%%/(}}}}z1[9334pppp(1^ff << < z13[>fffff < <<< <<< < << < 22222 H{{{{H ##########################", +" H{{{H ", +" # H{{{H H{{{H ", +" #J# H{{{H H{{{H ", +" ### # #K# H{{{H H{{{H ", +" -- #-#-#-# ##L## H{{{H H{{{H ", +" -- -- -- -- #--###--# #KKJ# H{{{H H{{{H ", +"-- -- -- -- #--#-#-#--# #KLM# H{{{H H{{{H ", +"-- ###-----### #LKM# H{{{H H{{{H ", +" -- -- -- #--###-###--# #LLNOP# H{{{{{H H{{{{{H ", +" -- -- -- -- -#----#---- - QKNMR# H{{{H H{{{H ", +"- -- -- - -- KSTUORP H{{{H H{{{H ", +"- -- -- -----## JTTUOVP H{{HH H{{H{{H ", +" -- -- -- -- -- -- -#- -- JNTMRVW# H{{H H{{H H{{H ", +" -- -- -- -- #-- ##-- MMVWP## H{{H H{{H H{{H ", +" -- - - - WXX H{{H H{{H H{{H "};