first commit
This commit is contained in:
commit
f4a4864688
|
@ -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)
|
||||
|
|
@ -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.
|
|
@ -0,0 +1,8 @@
|
|||
|
||||
all:
|
||||
@cd src;\
|
||||
make;\
|
||||
mv cputnik ../cputnik
|
||||
|
||||
clean:
|
||||
rm -rf src/*.o src/*~ src/cputnik cputnik
|
|
@ -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
|
||||
|
||||
|
|
@ -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 :)
|
||||
|
|
@ -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 *~
|
||||
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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;
|
||||
|
|
@ -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
|
||||
*/
|
||||
|
|
@ -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
|
||||
*/
|
||||
|
|
@ -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 };
|
|
@ -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",
|
||||
"................................................................",
|
||||
"................................................................",
|
||||
"................................................................",
|
||||
"...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++@...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...+#%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%#$...",
|
||||
"...+########################################################$...",
|
||||
"...+########################################################$...",
|
||||
"...@$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$...",
|
||||
"................................................................",
|
||||
"................................................................",
|
||||
"................................................................",
|
||||
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
|
||||
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
|
||||
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
|
||||
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
|
||||
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
|
||||
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
|
||||
"&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%&%%*%*%=%-%;%>%,%'%)%!%~%{%]%^%/%(",
|
||||
"_:#<............................................................"};
|
|
@ -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.
|
|
@ -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.
|
|
@ -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.
|
|
@ -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..."
|
|
@ -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.
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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;
|
||||
}
|
|
@ -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 */
|
|
@ -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);
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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.............................................................................................................................................................................................................................................",
|
||||
"................................................................................................................................................................................................................................................",
|
||||
"................................................................................................................................................................................................................................................"};
|
|
@ -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>.
|
|
@ -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);
|
||||
}
|
|
@ -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;
|
|
@ -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>
|
|
@ -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)
|
|
@ -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
|
|
@ -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
|
|
@ -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.
|
|
@ -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.
|
||||
|
||||
|
|
@ -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>
|
|
@ -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.
|
|
@ -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+++@",
|
||||
".+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&++@",
|
||||
".+++& & & & &++@",
|
||||
".+++& & && & && && & &&&&&& &++@",
|
||||
".+++& && & &&&& & && && & &&&&&& &++@",
|
||||
".+++& &&&& & &&&&&& & && && & &&&&&& &++@",
|
||||
".+++& &&&&&& & &&&&&& & && && & &&&&&& &++@",
|
||||
".+++& & &&&& & && && & &&&&&& &++@",
|
||||
".+++& &&&&&& & && & && && & &&&&&& &++@",
|
||||
".+++& & & & &++@",
|
||||
".+++&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&++@",
|
||||
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
|
||||
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ "};
|
|
@ -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",
|
||||
" ...................................................... ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++. ",
|
||||
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
|
||||
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
|
||||
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++##$$$#$$$##++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++#$###$###$#++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++#$###$###$#++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++##$$$#$$$##++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
|
||||
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++#$$##$$####++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++###$$##$$##++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
|
||||
".+++++++++++++++++++++++++++++++++++++++++++###########++@",
|
||||
".+++++%%%+++%%%+++++%%%+++%%%++++++++++++++++++++++++++++@",
|
||||
".++++%+++%+%+++%+++%+++%+%+++%+++++++++++++++++++++++++++@",
|
||||
".++++%+++%+%+++%+++%+++%+%+++%++++++&&+++++++%%+++%%+++++@",
|
||||
".++++%+++%+%+++%+#+%+++%+%+++%++++++&&++++++%++%+%++%++++@",
|
||||
".+++++%%%+++%%%+++++%%%+++%%%+++++++++++++++%++%+%++%++++@",
|
||||
".++++%+++%+%+++%+#+%+++%+%+++%+++++++++++++++%%+++%%+++++@",
|
||||
".++++%+++%+%+++%+++%+++%+%+++%++++&&++&&++++%++%+%++%++++@",
|
||||
".++++%+++%+%+++%+++%+++%+%+++%++++&&++&&++++%++%+%++%++++@",
|
||||
".+++++%%%+++%%%+++++%%%+++%%%++++++++++++++++%%+++%%+++++@",
|
||||
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
|
||||
".++++*************************************************+++@",
|
||||
".++++*************************************************%++@",
|
||||
".+++++%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%++@",
|
||||
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
|
||||
".+++###################################################++@",
|
||||
".+++#++++++++++++#+++++++++++#+++++++++++#++++++++++++#++@",
|
||||
".+++#++#++#++#+++#++++#++#+++#+++#++#++++#+++#++#++#++#++@",
|
||||
".+++#++#+##+##+++#+++##+##+++#+++##+##+++#+++##+##+#++#++@",
|
||||
".+++#++#######+++#++######+++#+++######++#+++#######++#++@",
|
||||
".+++#++#+##+##+++#+++##+##+++#+++##+##+++#+++##+##+#++#++@",
|
||||
".+++#++#++#++#+++#++++#++#+++#+++#++#++++#+++#++#++#++#++@",
|
||||
".+++#++++++++++++#+++++++++++#+++++++++++#++++++++++++#++@",
|
||||
".+++#############%###########%###########%#############++@",
|
||||
".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@",
|
||||
".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@",
|
||||
".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@",
|
||||
".+++#+++++++++++++++++++++++++++++++++++++++++++++++++#++@",
|
||||
".+++#########%####################%#########%##########++@",
|
||||
".+++#++++++++#++++++++++++++++++++#+++++++++#+++++++++#++@",
|
||||
".+++#++++++++#++++++++++++++++++++#+++++++++#+++++++++#++@",
|
||||
".+++#+++##+++#++++++++##++++++++++#++##+##++#++#####++#++@",
|
||||
".+++#++####++#++++++++####++++++++#++##+##++#++#####++#++@",
|
||||
".+++#+######+#++++++++######++++++#++##+##++#++#####++#++@",
|
||||
".+++#++++++++#++++++++####++++++++#++##+##++#++#####++#++@",
|
||||
".+++#+######+#++++++++##++++++++++#+++++++++#+++++++++#++@",
|
||||
".+++#++++++++#++++++++++++++++++++#+++++++++#+++++++++#++@",
|
||||
".+++###################################################++@",
|
||||
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++@",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
|
||||
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ "};
|
|
@ -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;
|
||||
}
|
|
@ -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
|
@ -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
|
|
@ -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;
|
||||
}
|
|
@ -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
|
|
@ -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();
|
||||
}
|
|
@ -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
|
|
@ -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 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . % % % % % % % % % % "};
|
|
@ -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
|
||||
*/
|
||||
}
|
|
@ -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>
|
|
@ -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.
|
File diff suppressed because it is too large
Load Diff
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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:
|
|
@ -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
|
|
@ -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:
|
|
@ -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
|
|
@ -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.
|
|
@ -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...
|
|
@ -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.
|
|
@ -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
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -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 */
|
|
@ -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
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -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}
|
||||
])
|
|
@ -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:
|
|
@ -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>.
|
|
@ -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
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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:
|
|
@ -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
|
|
@ -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:
|
|
@ -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.
|
||||
|
|
@ -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
|
|
@ -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}
|
||||
};
|
|
@ -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
|
|
@ -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, }
|
||||
};
|
|
@ -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
|
File diff suppressed because it is too large
Load Diff
|
@ -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
|
|
@ -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
|
|
@ -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. .......................................................... ",
|
||||
".>..>.#..>.>..#.#..>.#..>.#..>.>..>.#..>.>..>.#..>.........>....!>. .......................................................... ",
|
||||
"..>>...##!.!>>!.!>>!..##!.!>>!.!>>!..##!.!>>!.!>>!......>.>...<.... .......................................................... ",
|
||||
"................................................................... .......................................................... ",
|
||||
" ",
|
||||
"................................................................................................................................... ......................... ",
|
||||
".#>>#.!>>...>>!.!>>..!>>!.!>>!.!>>!.!##!..##!..##!.!##!.!##..>##>.!>>..!>>!.!>>!.!>>!.!>>!.!>>!.!>>!.!##!.!##!.!##!.!##!.!##!.!>>!. ._:::_.!>>>!..._.....!... ",
|
||||
".>..>.>..>.>..#.>..>.>..#.>..#.>..#.>..>.#..>.#..>.>.>..>..#.>>>>.>..>.>..>.>..>.>..>.>..>.>..#.#.>#.>..>.>..>.>..>.>..>.>..>.#..>. ..:(:...><>....:.....>... ",
|
||||
".!>>!.!>>..!##..!##!.!>>..!>>..!#!!.!>>!..##!..##!.!>...!##..!##!.!##!.!##!.!>>!.!>#!.!>>..!>>!..#!..!##!.!##!.!##!..>>..!>>!..#>.. .._(_...!<!..._(_...!<!.. ",
|
||||
".>..>.>..>.>..#.>..>.>..#.>..#.>..>.>..>.#..>.#..>.>.>..>..#.>..>.>..>.>..>.>..#.>.>>.>..>.#..>.#.>#.>..>.>..>.>..>.>..>.#..>.#>.#. ...:.....>....:(:...><>.. ",
|
||||
".!##!.!>>...>>!.!>>..!>>!.!##..!>>!.!##!..##!.!>>!.!##!.!>>!.!##!.!##!.!>>!.!##..!>>>.!##!.!>>!..#!..!>>>..>>..!##!.!##!.!>>!.!>>!. ..._.....!..._:::_.!>>>!. ",
|
||||
"...................................................................................>............................................... ......................... "};
|
|
@ -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");
|
||||
}
|
||||
}
|
|
@ -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
|
|
@ -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;
|
||||
}
|
|
@ -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
|
|
@ -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_ */
|
|
@ -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 */
|
File diff suppressed because it is too large
Load Diff
|
@ -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
Loading…
Reference in New Issue