first commit

This commit is contained in:
Marco Cawthorne 2022-06-09 08:56:44 -07:00
commit f4a4864688
Signed by: eukara
GPG Key ID: CE2032F0A2882A22
188 changed files with 63273 additions and 0 deletions

14
dockapps/cputnik/AUTHORS Normal file
View File

@ -0,0 +1,14 @@
Authors
--------
pasp <pasp@ll.pl>
sill <sill@ll.pl>
Borrowed code
--------------
cpu usage code based on WMMon 1.0b2 by
Martijn Pieterse (pieterse@xs4all.nl)
Antoine Nulle (warp@xs4all.nl)

339
dockapps/cputnik/COPYING Normal file
View File

@ -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.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
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.
<signature of Ty Coon>, 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.

View File

@ -0,0 +1,8 @@
all:
@cd src;\
make;\
mv cputnik ../cputnik
clean:
rm -rf src/*.o src/*~ src/cputnik cputnik

17
dockapps/cputnik/NEWS Normal file
View File

@ -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

12
dockapps/cputnik/README Normal file
View File

@ -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 :)

View File

@ -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 *~

View File

@ -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<num; j++) {
if (p[0] > pixels_per_byte)
pixels_per_byte += 100;
p++;
}
p = his;
for (k=0; k<num; k++) {
d = (1.0 * p[0] / pixels_per_byte) * size;
for (j=0; j<size; j++) {
if (j < d - 3)
dcl_copy_xpm_area(0, 71, 1, 1, k+x_left, y_bottom-j);
else if (j < d)
dcl_copy_xpm_area(1, 71, 1, 1, k+x_left, y_bottom-j);
else
dcl_copy_xpm_area(2, 71, 1, 1, k+x_left, y_bottom-j);
}
p++;
}
/* horizontal line */
for (j = pixels_per_byte-100; j > 0; j-=100) {
for (k=0; k<num; k++) {
d = (40.0 / pixels_per_byte) * j;
dcl_copy_xpm_area(3, 71, 1, 1, k+x_left, y_bottom-d);
}
}
}
/*----------------------------------------------------------------------*/
void update_stat_cpu(stat_dev *st)
{
long k, istat, idle;
get_cpu_statistics(st->name, &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<V_WIDTH+1; j++)
cpu_device.his[j] = 0;
cpu_device.hisaddcnt = 0;
dcl_strcpy(cpu_device.name, CPU_NAME, CPU_NAME_LEN);
timeout.tv_sec = 0;
timeout.tv_usec = 250000;
dcl_open_x_window(argc, argv, cputnik_master_xpm, cputnik_mask_bits, MASK_WIDTH, MASK_HEIGHT);
/* add mouse region */
dcl_add_mouse_region(0, 4, 4, 59, 59);
start_time = time(0);
next_time = start_time + update_period;
get_cpu_statistics(cpu_device.name, &k, &istat, &idle);
cpu_device.statlast = istat;
cpu_device.idlelast = idle;
if (show_memory) {
dcl_draw_string(6, 5, "cpu", FONT_NORMAL, 3);
dcl_draw_string(6, 12, "mem", FONT_NORMAL, 3);
dcl_copy_xpm_area(5, 57, 54, 1, 5, 18);
get_mem_statistics(&free_memory);
draw_memory_meter();
draw_stats(cpu_device.his, V_WIDTH, V_HEIGHT_MEM, 5, 55);
} else {
dcl_draw_string(6, 5, "cpu", FONT_LARGE, 3);
dcl_copy_xpm_area(5, 57, 54, 1, 5, 13);
draw_stats(cpu_device.his, V_WIDTH, V_HEIGHT, 5, 55);
}
while(1) {
current_time = time(0);
waitpid(0, NULL, WNOHANG);
update_stat_cpu(&cpu_device);
/* cpu meter */
dcl_copy_xpm_area(0, 64, 32, 7-(show_memory*2), 26, 5);
j = (cpu_device.rt_stat + cpu_device.rt_idle);
if (j != 0) j = (cpu_device.rt_stat * 100) / j;
j = j * (METER_WIDTH / 100.0);
if (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; j<V_WIDTH+1; j++)
cpu_device.his[j-1] = cpu_device.his[j];
if (show_memory) {
get_mem_statistics(&free_memory);
draw_memory_meter();
draw_stats(cpu_device.his, V_WIDTH, V_HEIGHT_MEM, 5, 55);
} else
draw_stats(cpu_device.his, V_WIDTH, V_HEIGHT, 5, 55);
cpu_device.his[V_WIDTH] = 0;
cpu_device.hisaddcnt = 0;
}
xfd = ConnectionNumber(display);
FD_ZERO(&inputs);
FD_SET(xfd, &inputs);
switch(select(FD_SETSIZE, &inputs, NULL, NULL, &timeout)) {
case 0:
timeout.tv_sec = 0;
timeout.tv_usec = 250000;
dcl_redraw_window();
break;
case -1:
break;
default:
break;
}
while(FD_ISSET(xfd, &inputs) && XPending(display)) {
XNextEvent(display, &Event);
switch (Event.type) {
case Expose:
dcl_redraw_window();
break;
case DestroyNotify:
XCloseDisplay(display);
exit(0);
break;
case ButtonPress:
but_stat = dcl_check_mouse_region(Event.xbutton.x, Event.xbutton.y);
break;
case ButtonRelease:
i = dcl_check_mouse_region(Event.xbutton.x, Event.xbutton.y);
if(!i && Event.xbutton.button == LMB && cmd_lmb)
dcl_execute_command(command_lmb, 0);
else if(!i && Event.xbutton.button == RMB && cmd_rmb)
dcl_execute_command(command_rmb, 0);
break;
}
}
}
}
/*----------------------------------------------------------------------*/
void cputnik_write_prefs(void)
{
if (dcl_prefs_openfile (dcl_getfilename_config (".clay", "cputnik.rc"), P_WRITE)) {
dcl_prefs_put_int ("update_period", update_period);
dcl_prefs_put_int ("show_memory", show_memory);
dcl_prefs_put_string ("command_lmb", command_lmb);
dcl_prefs_put_string ("command_rmb", command_rmb);
}
dcl_prefs_closefile ();
}
/*----------------------------------------------------------------------*/
void cputnik_read_prefs(void)
{
if (dcl_prefs_openfile (dcl_getfilename_config(".clay", "cputnik.rc"), P_READ)) {
update_period = dcl_prefs_get_int("update_period");
show_memory = dcl_prefs_get_int("show_memory") % 2;
dcl_strcpy(command_lmb, dcl_prefs_get_string("command_lmb"), BUFFER_SIZE);
dcl_strcpy(command_rmb, dcl_prefs_get_string("command_rmb"), BUFFER_SIZE);
cmd_lmb = cmd_rmb = 0;
if(strlen(command_lmb)) cmd_lmb = 1;
if(strlen(command_rmb)) cmd_rmb = 1;
dcl_prefs_closefile ();
} else {
update_period = 2;
show_memory = 1;
strcpy(command_lmb, "gnome-system-monitor");
strcpy(command_rmb, "xkill");
cputnik_write_prefs ();
}
}
/*----------------------------------------------------------------------*/
int main(int argc, char **argv)
{
cputnik_read_prefs();
cputnik_routine(argc, argv);
return 0;
}

View File

@ -0,0 +1,46 @@
/*
* 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 "docklib.h"
#include "master.h"
#include "mask.h"
#define BUFFER_SIZE 512
#define CPU_NAME "cpu0"
#define CPU_NAME_LEN 5
#define V_WIDTH 54
#define V_HEIGHT 41
#define V_HEIGHT_MEM 36
#define METER_WIDTH 32
typedef struct {
char name[CPU_NAME_LEN];
int his[V_WIDTH+1];
int hisaddcnt;
long rt_stat;
long statlast;
long rt_idle;
long idlelast;
} stat_dev;

View File

@ -0,0 +1,979 @@
/*
* DOCKLIB - a simple dockapp library
*
* Copyright (C) 2000-2005 some people...
*
* 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 "docklib.h"
/******************************************************************************
* variables
******************************************************************************/
XSizeHints mysizehints;
XWMHints mywmhints;
Window Root, iconwin, win;
Display *display;
GC NormalGC;
XpmIcon wmgen, fonts_wmgen, leds_wmgen;
Pixmap pixmask;
Pixel back_pix, fore_pix;
int screen, x_fd, d_depth;
MOUSE_REGION mouse_region[MAX_MOUSE_REGION];
FILE *prefs_filehandle;
char *Geometry = "";
char *fonts_xpm[], *leds_xpm[];
/******************************************************************************
*
* dcl_get_xpm
*
******************************************************************************/
void dcl_get_xpm (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, "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<MAX_MOUSE_REGION && !found; i++) {
if (mouse_region[i].enable &&
x <= mouse_region[i].right &&
x >= 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<len; j++) {
if((a=string[j]) == '\0') break;
dcl_draw_char(x+j*(font_width+1), y, a, font_type);
}
return true;
}
/******************************************************************************
*
* dcl_draw_led
*
******************************************************************************/
int dcl_draw_led(int x, int y, int color)
{
if(color > 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<pE<q1sF1t5vG5w9yyy9",
".+++.%b$b%-e=e-'h,h'{k~k{(n/n([q<q[2t1t26w5w68xyx8",
" .+. @%b%@&-e-&;'h';){k{)](n(]_[q[_}2t2}36w6378987"};
/*
* Created: Sat 26 Mar 2005 05:45:53 PM CET
* Last Modified: Sat 26 Mar 2005 10:53:38 PM CET
*/

View File

@ -0,0 +1,146 @@
/*
* DOCKLIB - a simple dockapp library
*
* Copyright (C) 2000-2005 some people...
*
* 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 <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <ctype.h>
#include <stdarg.h>
#include <string.h>
#include <unistd.h>
#include <limits.h>
#include <time.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
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
*/

View File

@ -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 };

View File

@ -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",
"................................................................",
"................................................................",
"................................................................",
"...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++@...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+########################################################$...",
"...+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#$...",
"...+########################################################$...",
"...+########################################################$...",
"...@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$...",
"................................................................",
"................................................................",
"................................................................",
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
"_:#<............................................................"};

9
dockapps/wmitime/BUGS Normal file
View File

@ -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.

53
dockapps/wmitime/CHANGES Normal file
View File

@ -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
<wmaker-dev@lists.windowmaker.org>.
* 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 <tweakr@tap.xs4all.nl>
* Added french support
(thanks to Pierre-Marie Allemand <Pierre-Marie.Allemand@capway.com> )
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.

339
dockapps/wmitime/COPYING Normal file
View File

@ -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.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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.
<signature of Ty Coon>, 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.

35
dockapps/wmitime/Makefile Normal file
View File

@ -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..."

53
dockapps/wmitime/README Normal file
View File

@ -0,0 +1,53 @@
wmitime
--------------------------------------------------------------
Author...: Dave Clark (clarkd@skynet.ca)
Maintainers : Window Maker Developers Team <wmaker-dev@lists.windowmaker.org>
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.

View File

@ -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 <sys/types.h>
#endif
#include <stdlib.h>
/* 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;
}
}

View File

@ -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

View File

@ -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 <stdlib.h>
#include <string.h>
#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<argc; i++) {
args[i] = argv[i];
}
args[argc] = NULL;
execvp(argv[0], args);
exit(10);
}
return pid;
}

View File

@ -0,0 +1,9 @@
#ifndef __MISC_H
#define __MISC_H
#include <unistd.h>
extern void parse_command(char *, char ***, int *);
extern pid_t execCommand(char *);
#endif /* __MISC_H */

View File

@ -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 <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <ctype.h>
#include <stdarg.h>
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
#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<MAX_MOUSE_REGION && !found; i++) {
if (mouse_region[i].enable &&
x <= mouse_region[i].right &&
x >= 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<sx*depth; j+=depth) {
bwrite >>= 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);
}
}

View File

@ -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

View File

@ -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.............................................................................................................................................................................................................................................",
"................................................................................................................................................................................................................................................",
"................................................................................................................................................................................................................................................"};

View File

@ -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 <http://www.swatch.com/>.
.SH "OPTIONS"
.TP
\fB\-12\fR
12\-hour mode
.TP
\fB\-display\fR <display name>
Specify X display
.TP
\fB\-geometry\fR +XPOS+YPOS
Initial window position.
.TP
\fB\-l\fR <locale>
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 <ocsi@debian.org>, for
the Debian GNU system (but may be used by others). Updated by Jari
Aalto <jari.aalto@cante.net>.

599
dockapps/wmitime/wmitime.c Normal file
View File

@ -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 <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <ctype.h>
#include <math.h>
#include <locale.h>
#include <langinfo.h>
#include <iconv.h>
#include <sys/wait.h>
#include <sys/stat.h>
#include <sys/param.h>
#include <sys/types.h>
#include <sys/ioctl.h>
#include <sys/socket.h>
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
#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<argc; i++) {
char *arg = argv[i];
if (*arg=='-') {
switch (arg[1]) {
case 'd' :
if (strcmp(arg+1, "display")) {
usage();
exit(1);
}
break;
case 'g' :
if (strcmp(arg+1, "geometry")) {
usage();
exit(1);
}
break;
case 'v' :
printversion();
exit(0);
break;
case '1' :
if (arg[2] == '2')
{
/* Twelve-hour mode */
TwelveHour = 1;
}
break;
case 'l' :
if (argc > (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; i<len; i++)
{
if (blitstr[i] == ':')
{
copyXPMArea(138, 23, 4, BCHAR_HEIGHT, xoff, yoff);
xoff+=4;
}
else if (isdigit(blitstr[i]))
{
j = blitstr[i] - '0';
srcx = 68;
srcy = 23;
while (j)
{
j--;
srcx += (BCHAR_WIDTH + 1);
}
copyXPMArea(srcx, srcy, BCHAR_WIDTH+1, BCHAR_HEIGHT, xoff, yoff);
xoff+=(BCHAR_WIDTH + 1);
}
else
{
copyXPMArea(66, 10, BCHAR_WIDTH+1, BCHAR_HEIGHT, xoff, yoff);
xoff+=(BCHAR_WIDTH + 1);
}
}
}
void DrawDate(void)
{
char OrigBlitStr[20], BlitStr[20];
char *inbuf, *outbuf;
size_t inbytesleft, outbytesleft;
iconv_t cd;
cd = iconv_open("ASCII//TRANSLIT", nl_langinfo(CODESET));
inbuf = OrigBlitStr;
outbuf = BlitStr;
inbytesleft = sizeof OrigBlitStr;
outbytesleft = sizeof BlitStr;
sprintf(OrigBlitStr, "%s", nl_langinfo(ABDAY_1 + clk->tm_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 <wmaker-dev@lists.windowmaker.org>\n");
fprintf(stderr, " original author: Dave Clark <clarkd@skynet.ca>\n\n");
fprintf(stderr, "usage:\n");
fprintf(stderr, " -12 12-hour mode\n");
fprintf(stderr, " -display <display name>\n");
fprintf(stderr, " -geometry +XPOS+YPOS initial window position\n");
fprintf(stderr, " -l <locale> 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);
}

View File

@ -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;

19
dockapps/wmmp/AUTHORS Normal file
View File

@ -0,0 +1,19 @@
Current maintainer Nicolas Herry <nicolasherry@gmail.com>
Hacked for MPD by Warren Dukes <shank@mercury.chem.pitt.edu>
Scroll Wheel patch by Ilia Mirkin
Following are credits from WMxmms:
Main Hacker:
Anthony Peacock <bratag44@hotmail.com>
Based largely on work on WMMemMon, WMCPULoad and WMMemLoad and wmcpuload and wmusic done by:
Hades <hadess@hadess.net>
Thomas Nemeth <tnemeth@free.fr>
Seiichi SATO <ssato@sh.rim.or.jp>
Mark Staggs <me@markstaggs.net>
And also on wmapm by :
Chris D. Faulhaber <jedgar@speck.ml.org>
Michael G. Henderson <mghenderson@lanl.gov>

View File

@ -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)

49
dockapps/wmmp/ChangeLog Normal file
View File

@ -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

34
dockapps/wmmp/INSTALL Normal file
View File

@ -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

340
dockapps/wmmp/LICENSE Normal file
View File

@ -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.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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.
<signature of Ty Coon>, 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.

12
dockapps/wmmp/README.md Normal file
View File

@ -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.

12
dockapps/wmmp/THANKS Normal file
View File

@ -0,0 +1,12 @@
WMmp author(s) would like to thank Anthony Peacock <bratag44@hotmail.com>
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 <ssato@sh.rim.or.jp>
For creating WMMemLoad for which this is based:
Mark Staggs <me@markstaggs.net>
For wmapm for which this is based:
Chris D. Faulhaber <jedgar@speck.ml.org>
Michael G. Henderson <mghenderson@lanl.gov>

79
dockapps/wmmp/doc/WMmp.1 Normal file
View File

@ -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 <n> 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<whatever>\fP and
.\" \fI<whatever>\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 <string>
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 <color>
back-light color (rgb:6E/C6/3B is default)
.TP
.B \-i, \-\-interval <number>
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 <bratag44@hotmail.com> It is based on code/design by
Thomas Nemeth <tnemeth@free.fr>. It is largely based on WMMemMon and WMCPULoad by Seiichi
SATO <ssato@sh.rim.or.jp>, WMMemLoad by Mark Staggs <me@markstaggs.net> and wmapm by Chris D.
Faulhaber <jedgar@speck.ml.org> Michael G. Henderson <mghenderson@lanl.gov>. In addition wmusic
by Hadess <hadess@hadess.net> and maintained by John <john+wmusic@jtan.com> was used as design
inspiration.

View File

@ -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+++@",
".+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&++@",
".+++& & & & &++@",
".+++& & && & && && & &&&&&& &++@",
".+++& && & &&&& & && && & &&&&&& &++@",
".+++& &&&& & &&&&&& & && && & &&&&&& &++@",
".+++& &&&&&& & &&&&&& & && && & &&&&&& &++@",
".+++& & &&&& & && && & &&&&&& &++@",
".+++& &&&&&& & && & && && & &&&&&& &++@",
".+++& & & & &++@",
".+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&++@",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ "};

View File

@ -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",
" ...................................................... ",
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++. ",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
".+++++++++++++++++++++++++++++++++++++++++++##$$$#$$$##++@",
".+++++++++++++++++++++++++++++++++++++++++++#$###$###$#++@",
".+++++++++++++++++++++++++++++++++++++++++++#$###$###$#++@",
".+++++++++++++++++++++++++++++++++++++++++++##$$$#$$$##++@",
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
".+++++++++++++++++++++++++++++++++++++++++++#$$##$$####++@",
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
".+++++++++++++++++++++++++++++++++++++++++++###$$##$$##++@",
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
".+++++%%%+++%%%+++++%%%+++%%%++++++++++++++++++++++++++++@",
".++++%+++%+%+++%+++%+++%+%+++%+++++++++++++++++++++++++++@",
".++++%+++%+%+++%+++%+++%+%+++%++++++&&+++++++%%+++%%+++++@",
".++++%+++%+%+++%+#+%+++%+%+++%++++++&&++++++%++%+%++%++++@",
".+++++%%%+++%%%+++++%%%+++%%%+++++++++++++++%++%+%++%++++@",
".++++%+++%+%+++%+#+%+++%+%+++%+++++++++++++++%%+++%%+++++@",
".++++%+++%+%+++%+++%+++%+%+++%++++&&++&&++++%++%+%++%++++@",
".++++%+++%+%+++%+++%+++%+%+++%++++&&++&&++++%++%+%++%++++@",
".+++++%%%+++%%%+++++%%%+++%%%++++++++++++++++%%+++%%+++++@",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
".++++*************************************************+++@",
".++++*************************************************%++@",
".+++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++@",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
".+++###################################################++@",
".+++#++++++++++++#+++++++++++#+++++++++++#++++++++++++#++@",
".+++#++#++#++#+++#++++#++#+++#+++#++#++++#+++#++#++#++#++@",
".+++#++#+##+##+++#+++##+##+++#+++##+##+++#+++##+##+#++#++@",
".+++#++#######+++#++######+++#+++######++#+++#######++#++@",
".+++#++#+##+##+++#+++##+##+++#+++##+##+++#+++##+##+#++#++@",
".+++#++#++#++#+++#++++#++#+++#+++#++#++++#+++#++#++#++#++@",
".+++#++++++++++++#+++++++++++#+++++++++++#++++++++++++#++@",
".+++#############%###########%###########%#############++@",
".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@",
".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@",
".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@",
".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@",
".+++#########%####################%#########%##########++@",
".+++#++++++++#++++++++++++++++++++#+++++++++#+++++++++#++@",
".+++#++++++++#++++++++++++++++++++#+++++++++#+++++++++#++@",
".+++#+++##+++#++++++++##++++++++++#++##+##++#++#####++#++@",
".+++#++####++#++++++++####++++++++#++##+##++#++#####++#++@",
".+++#+######+#++++++++######++++++#++##+##++#++#####++#++@",
".+++#++++++++#++++++++####++++++++#++##+##++#++#####++#++@",
".+++#+######+#++++++++##++++++++++#+++++++++#+++++++++#++@",
".+++#++++++++#++++++++++++++++++++#+++++++++#+++++++++#++@",
".+++###################################################++@",
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ "};

396
dockapps/wmmp/src/dockapp.c Normal file
View File

@ -0,0 +1,396 @@
/*
* Copyright (c) 1999 Alfredo K. Kojima
* Copyright (c) 2001, 2002 Seiichi SATO <ssato@sh.rim.or.jp>
* Copyright (c) 2017 Nicolas Herry <nicolasherry@gmail.com>
*
* 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 <ssato@sh.rim.or.jp>
*/
#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;
}

View File

@ -0,0 +1,61 @@
/*
* Copyright (c) 1999 Alfredo K. Kojima
* Copyright (c) 2001, 2002 Seiichi SATO <ssato@sh.rim.or.jp>
* Copyright (c) 2017 Nicolas Herry <nicolasherry@gmail.com>
*
* 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 <ssato@sh.rim.or.jp>
*/
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
#include <stdio.h>
# include <stdlib.h>
# include <stddef.h>
# include <string.h>
# include <sys/select.h>
# include <sys/time.h>
# include <time.h>
# include <unistd.h>
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);

File diff suppressed because it is too large Load Diff

View File

@ -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 <sys/param.h>
#include <sys/time.h>
#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

View File

@ -0,0 +1,137 @@
#include <stdio.h>
/*
*
* 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<MAX_MOUSE_REGION && !found; i++) {
if (mouse_region[i].enable==1 &&
x <= mouse_region[i].right &&
x >= 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<MAX_MOUSE_REGION && mouse_region[i].enable==2)
mouse_region[i].enable=1;
}
/******************************************************************************\
|* DisableMouseRegion *|
\******************************************************************************/
void DisableMouseRegion(int i) {
if(i<MAX_MOUSE_REGION && mouse_region[i].enable==1)
mouse_region[i].enable=2;
}

View File

@ -0,0 +1,19 @@
#ifndef MOUSE_REGIONS_H_INCLUDED
#define MOUSE_REGIONS_H_INCLUDED
/***********/
/* Defines */
/***********/
#define MAX_MOUSE_REGION (12)
/***********************/
/* Function Prototypes */
/***********************/
void AddMouseRegion(int index, int left, int top, int right, int bottom);
int CheckMouseRegion(int x, int y);
void EnableMouseRegion(int index);
void DisableMouseRegion(int index);
#endif

View File

@ -0,0 +1,231 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#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();
}

View File

@ -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

224
dockapps/wmmp/src/parts.xpm Normal file
View File

@ -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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % % % % % "};

802
dockapps/wmmp/src/wmmp.c Normal file
View File

@ -0,0 +1,802 @@
/*
* WMmp - Music Player Daemon client dockapp for Window Maker
* Copyright (c) 2017, 2018 Nicolas Herry <nicolasherry@gmail.com>
* Copyright (C) 2002 Thomas Nemeth <tnemeth@free.fr>
*
* Based on work by Seiichi SATO <ssato@sh.rim.or.jp>
* Copyright (C) 2001,2002 Seiichi SATO <ssato@sh.rim.or.jp>
* and on work by Mark Staggs <me@markstaggs.net>
* Copyright (C) 2002 Mark Staggs <me@markstaggs.net>
* 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 <signal.h>
#include <ctype.h>
#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 <sys/stat.h>
#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<max; i++)
{
{
int tmp = i+pos;
if(tmp < len)
c = toupper(title[tmp]);
else
c = toupper(title[(tmp - len)%6]);
}
if (isalpha(c))
dockapp_copyarea(parts,pixmap,(c - 'A')*6 ,72 + y, 6, 8,(i*6)+7,7);
else if (isdigit(c))
dockapp_copyarea(parts,pixmap,(c - '0')*6 ,81 + y, 6, 8,(i*6)+7,7);
else if (isspace(c))
dockapp_copyarea(parts,pixmap,60 ,81 + y, 6, 8,(i*6)+7,7);
else {
switch(c)
{
case '-':
dockapp_copyarea(parts,pixmap,66 ,81 + y, 6, 8,(i*6)+7,7);
break;
case '.':
dockapp_copyarea(parts,pixmap,72 ,81 + y, 6, 8,(i*6)+7,7);
break;
case 0x27:
dockapp_copyarea(parts,pixmap,79 ,81 + y, 6, 8,(i*6)+7,7);
break;
case '(':
dockapp_copyarea(parts,pixmap,84 ,81 + y, 6, 8,(i*6)+7,7);
break;
case ')':
dockapp_copyarea(parts,pixmap,90 ,81 + y, 6, 8,(i*6)+7,7);
break;
case '*':
dockapp_copyarea(parts,pixmap,96 ,81 + y, 6, 8,(i*6)+7,7);
break;
case '/':
dockapp_copyarea(parts,pixmap,103 ,81 + y, 6, 8,(i*6)+7,7);
break;
default:
dockapp_copyarea(parts,pixmap,60 ,81 + y, 6, 8,(i*6)+7,7);
break;
}
}
}
for (;i<6; i++)
{
dockapp_copyarea(parts,pixmap,60 ,81 + y, 6, 8,(i*6)+7,7);
}
if (len > 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 <string> display to use\n"
" -bl, --backlight turn on back-light\n"
" -lc, --light-color <string> back-light color(rgb:6E/C6/3B is default)\n"
" -i, --interval <number> 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
*/
}

7
dockapps/wmnd/AUTHORS Normal file
View File

@ -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 <arthur@korn.ch>
Copyright(c) 2001 by Timecop <timecop@japan.co.jp>
Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>

340
dockapps/wmnd/COPYING Normal file
View File

@ -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.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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.
<signature of Ty Coon>, 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.

1487
dockapps/wmnd/ChangeLog Normal file

File diff suppressed because it is too large Load Diff

312
dockapps/wmnd/ChangeLog.0 Normal file
View File

@ -0,0 +1,312 @@
2002-11-29 wave++ <wavexx@users.sf.net>
* AUTHORS: sync with Reed's version.
2002-10-23 wave++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* wmnd.1: Added some infos about signals and the new -S flag
(as Arthur is getting late).
* wmndrc: ispell-ed!
2002-07-25 wave++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* drivers.c: freebsd_sysctl now monitors 'lo' only when specified
2002-07-12 wave++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* wmnd.1: Arthur Korn sent new documentation
2002-07-01 wave++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* cfgdata.c: changed the default scrolling speed back to one second.
2002-06-15 wave++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* drivers.c: freebsd_sysctl driver now works again on all MIB interfaces.
2002-06-12 wave++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* display.c, configure.ac: Added new visual mode: mgraph
2002-06-10 wave++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* REAME: minor corrections
* NEWS, configure.ac: changed release to 0.4.1
2002-05-21 wave++ <wavexx@users.sf.net>
* drivers.c: fixed all occurences of the old enum
solaris_fpppd_connstatus inside the solaris_fpppd driver.
2002-05-17 wave++ <wavexx@users.sf.net>
* README: corrected some errors and written a little section about
rebuilding wmnd using the new configure script
2002-05-08 wave++ <wavexx@users.sf.net>
* integrated the autodock patch from Michael Shigorin
* wmnd files are now compliant to GNU packaging standards
2002-05-03 wave++ <wavexx@users.sf.net>
* now using autotools for automatic compilation and installation
* partial integration with 0.4.0 by Reed
2001-XX-XX wave++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* 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++ <wavexx@users.sf.net>
* 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 <getopt.h>: 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 <reed@wingeer.org>
* 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 <reed@wingeer.org>
* 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 <reed@wingeer.org>
* 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 <reed@wingeer.org>
* 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 <reed@wingeer.org>
* 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 <reed@wingeer.org>
* 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 <reed@wingeer.org>
* 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 <reed@wingeer.org>
* 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.

370
dockapps/wmnd/INSTALL Normal file
View File

@ -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 `<wchar.h>' 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.

862
dockapps/wmnd/Makefile Normal file
View File

@ -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:

View File

@ -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

862
dockapps/wmnd/Makefile.in Normal file
View File

@ -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:

205
dockapps/wmnd/NEWS Normal file
View File

@ -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

417
dockapps/wmnd/README Normal file
View File

@ -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:
<wavexx@users.sf.net>. 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.

56
dockapps/wmnd/THANKS Normal file
View File

@ -0,0 +1,56 @@
Reed Lai http://bv4qo.wingeer.org/:
* Project initiation.
Arthur Korn <arthur@korn.ch>:
* 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 <timecop@japan.co.jp> http://www.ne.jp/asahi/linux/timecop/:
* Source code optimization (Re-wrote the source code of WMND 0.2.0)
Yuri D'Elia (wave++) <wavexx@users.sf.net> 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 <sebaks@csit-sun.pub.ro>:
* A different Solaris port of WMND 0.2.0.
Paulo E. Abreu <qtabreu@ci.uc.pt>:
* 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...

11
dockapps/wmnd/TODO Normal file
View File

@ -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.

983
dockapps/wmnd/aclocal.m4 vendored Normal file
View File

@ -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 <conftest.tar])
grep GrepMe conftest.dir/file >/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

1530
dockapps/wmnd/config.guess vendored Executable file

File diff suppressed because it is too large Load Diff

172
dockapps/wmnd/config.h Normal file
View File

@ -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 <inttypes.h> 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 <memory.h> header file. */
#define HAVE_MEMORY_H 1
/* Define to 1 if you have the <net/ppp_defs.h> header file. */
#define HAVE_NET_PPP_DEFS_H 1
/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1
/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1
/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1
/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1
/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1
/* Define to 1 if you have the <sys/time.h> header file. */
#define HAVE_SYS_TIME_H 1
/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1
/* Define to 1 if you have the <unistd.h> 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 <sys/time.h> and <time.h>. */
#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 <sys/types.h> does not define. */
/* #undef pid_t */
/* Define to `unsigned int' if <sys/types.h> does not define. */
/* #undef size_t */

171
dockapps/wmnd/config.h.in Normal file
View File

@ -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 <inttypes.h> 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 <memory.h> header file. */
#undef HAVE_MEMORY_H
/* Define to 1 if you have the <net/ppp_defs.h> header file. */
#undef HAVE_NET_PPP_DEFS_H
/* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H
/* Define to 1 if you have the <stdlib.h> header file. */
#undef HAVE_STDLIB_H
/* Define to 1 if you have the <strings.h> header file. */
#undef HAVE_STRINGS_H
/* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H
/* Define to 1 if you have the <sys/stat.h> header file. */
#undef HAVE_SYS_STAT_H
/* Define to 1 if you have the <sys/time.h> header file. */
#undef HAVE_SYS_TIME_H
/* Define to 1 if you have the <sys/types.h> header file. */
#undef HAVE_SYS_TYPES_H
/* Define to 1 if you have the <unistd.h> 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 <sys/time.h> and <time.h>. */
#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 <sys/types.h> does not define. */
#undef pid_t
/* Define to `unsigned int' if <sys/types.h> does not define. */
#undef size_t

1465
dockapps/wmnd/config.log Normal file

File diff suppressed because it is too large Load Diff

1228
dockapps/wmnd/config.status Executable file

File diff suppressed because it is too large Load Diff

1782
dockapps/wmnd/config.sub vendored Executable file

File diff suppressed because it is too large Load Diff

7571
dockapps/wmnd/configure vendored Executable file

File diff suppressed because it is too large Load Diff

236
dockapps/wmnd/configure.ac Normal file
View File

@ -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 <net/if_mib.h>
#include <sys/sysctl.h>
])], [
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 <sys/types.h>
#include <sys/sockio.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <ifaddrs.h>
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}
])

708
dockapps/wmnd/depcomp Executable file
View File

@ -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 <http://www.gnu.org/licenses/>.
# 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 <oliva@dcc.unicamp.br>.
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 <bug-automake@gnu.org>.
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:

225
dockapps/wmnd/doc/wmnd.1 Normal file
View File

@ -0,0 +1,225 @@
.\" Hey, EMACS: -*- nroff -*-
.\"
.\" Copyright(c) 2001 by Arthur Korn <arthur@korn.ch>
.\" Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
.\"
.\" 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 <n> 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++ <wavexx@users.sf.net>. 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 <arthur@korn.ch>.
The original \fBWMND\fR authour is Reed Lai, but it is currently
maintained by Yuri D'Elia <wavexx@users.sf.net>.

View File

@ -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

527
dockapps/wmnd/install-sh Executable file
View File

@ -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:

331
dockapps/wmnd/missing Executable file
View File

@ -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 <pinard@iro.umontreal.ca>, 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 <http://www.gnu.org/licenses/>.
# 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 <bug-automake@gnu.org>."
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:

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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:

523
dockapps/wmnd/src/Makefile Normal file
View File

@ -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:

View File

@ -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

View File

@ -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:

View File

@ -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.

51
dockapps/wmnd/src/bits.h Normal file
View File

@ -0,0 +1,51 @@
/*
* bits: platform indipendent version operating on chars
* Copyright(c) 2001 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* 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

View File

@ -0,0 +1,60 @@
/*
* cfgdata: WMND configuration data
* Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* 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}
};

View File

@ -0,0 +1,34 @@
/*
* cfgdata: WMND configuration data
* Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* 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

546
dockapps/wmnd/src/display.c Normal file
View File

@ -0,0 +1,546 @@
/*
* display: commod graphic functions
* Copyright(c) 1997 by Alfredo K. Kojima
* Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY.
*/
/* local headers */
#include "display.h"
#include "wmnd.h"
/* system headers */
#include <math.h>
#include <X11/Xlib.h>
/*
* 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, }
};

View File

@ -0,0 +1,38 @@
/*
* display: commod graphic functions
* Copyright(c) 1997 by Alfredo K. Kojima
* Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* 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

1316
dockapps/wmnd/src/drivers.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,58 @@
/*
* drivers: drivers definitions
* Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* 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

109
dockapps/wmnd/src/list.h Normal file
View File

@ -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 <sys/types.h>
#include <stdlib.h>
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

View File

@ -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. .......................................................... ",
".>..>.#..>.>..#.#..>.#..>.#..>.>..>.#..>.>..>.#..>.........>....!>. .......................................................... ",
"..>>...##!.!>>!.!>>!..##!.!>>!.!>>!..##!.!>>!.!>>!......>.>...<.... .......................................................... ",
"................................................................... .......................................................... ",
" ",
"................................................................................................................................... ......................... ",
".#>>#.!>>...>>!.!>>..!>>!.!>>!.!>>!.!##!..##!..##!.!##!.!##..>##>.!>>..!>>!.!>>!.!>>!.!>>!.!>>!.!>>!.!##!.!##!.!##!.!##!.!##!.!>>!. ._:::_.!>>>!..._.....!... ",
".>..>.>..>.>..#.>..>.>..#.>..#.>..#.>..>.#..>.#..>.>.>..>..#.>>>>.>..>.>..>.>..>.>..>.>..>.>..#.#.>#.>..>.>..>.>..>.>..>.>..>.#..>. ..:(:...><>....:.....>... ",
".!>>!.!>>..!##..!##!.!>>..!>>..!#!!.!>>!..##!..##!.!>...!##..!##!.!##!.!##!.!>>!.!>#!.!>>..!>>!..#!..!##!.!##!.!##!..>>..!>>!..#>.. .._(_...!<!..._(_...!<!.. ",
".>..>.>..>.>..#.>..>.>..#.>..#.>..>.>..>.#..>.#..>.>.>..>..#.>..>.>..>.>..>.>..#.>.>>.>..>.#..>.#.>#.>..>.>..>.>..>.>..>.#..>.#>.#. ...:.....>....:(:...><>.. ",
".!##!.!>>...>>!.!>>..!>>!.!##..!>>!.!##!..##!.!>>!.!##!.!>>!.!##!.!##!.!>>!.!##..!>>>.!##!.!>>!..#!..!>>>..>>..!##!.!##!.!>>!.!>>!. ..._.....!..._:::_.!>>>!. ",
"...................................................................................>............................................... ......................... "};

View File

@ -0,0 +1,63 @@
/*
* messages: generalized information reporting - implementation
* Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY.
*/
/* local headers */
#include <messages.h>
/* 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");
}
}

View File

@ -0,0 +1,75 @@
/*
* messages: generalized information reporting
* Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY.
*/
#ifndef MESSAGES_H
#define MESSAGES_H
/* local headers */
#include "config.h"
/* system headers */
#include <stdio.h>
#include <stdarg.h>
/*
* 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

218
dockapps/wmnd/src/misc.c Normal file
View File

@ -0,0 +1,218 @@
/*
* misc: miscellaneus dockapp routines - implementation
* Copyright(c) 1997 by Alfredo K. Kojima
* Copyright(c) 2004 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY.
*/
#include "config.h"
#include "misc.h"
#include "list.h"
#include <stdlib.h>
#include <string.h>
#include <unistd.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}},
{{ 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;
}

32
dockapps/wmnd/src/misc.h Normal file
View File

@ -0,0 +1,32 @@
/*
* misc: miscellaneus dockapp routines
* Copyright(c) 1997 by Alfredo K. Kojima
* Copyright(c) 2004 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* Distributed under GNU GPL (v2 or above) WITHOUT ANY WARRANTY.
*/
#ifndef MISC_H
#define MISC_H
#include <sys/types.h>
/* 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

View File

@ -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_ */

97
dockapps/wmnd/src/pppio.h Normal file
View File

@ -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 */

1918
dockapps/wmnd/src/wmnd.c Normal file

File diff suppressed because it is too large Load Diff

165
dockapps/wmnd/src/wmnd.h Normal file
View File

@ -0,0 +1,165 @@
/*
* wmnd: main program module, shared header
* Copyright(c) 2001-2008 by wave++ "Yuri D'Elia" <wavexx@users.sf.net>
* 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 <time.h>
#include <sys/time.h>
#else
#ifdef HAVE_SYS_TIME_H
#include <sys/time.h>
#else
#include <time.h>
#endif
#endif
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <fcntl.h>
#include <sys/param.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <signal.h>
#include <X11/Xlib.h>
#include <X11/xpm.h>
#include <X11/extensions/shape.h>
/* 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

Some files were not shown because too many files have changed in this diff Show More