yawmppp: Add version 2.0.2 to the repository.
Obtained from: https://archive.org/download/tucows_59618_yawmppp/yawmppp-2.0.2.tar.gz
This commit is contained in:
parent
c1f2d4c11b
commit
c50ceb41d7
89
yawmppp/CHANGELOG
Normal file
89
yawmppp/CHANGELOG
Normal file
|
@ -0,0 +1,89 @@
|
|||
|
||||
CHANGELOG for YAWMPPP
|
||||
$Id: CHANGELOG,v 1.2 2001/04/21 18:29:33 bergo Exp $
|
||||
|
||||
2.0.2 (Apr 21 2001)
|
||||
* fixed minor bug when generating files with the
|
||||
"don't generate login password pairs" option
|
||||
turned on (a CONNECT line was not being added)
|
||||
|
||||
2.0.1 (Mar 3 2001)
|
||||
* fixed minor bug: the installation script now creates
|
||||
the /etc/ppp/peers directory if it is missing.
|
||||
|
||||
2.0.0 (Feb 22 2001)
|
||||
* Revamped the way the GUI manages config files, now pppd
|
||||
files go under /etc/ppp/peers (and you'll have to
|
||||
exercise your root password sometimes when configuring
|
||||
ISP info). Configuration now goes under ~/.yawmppp2
|
||||
* Changed RX/TX leds for arrows in the Window Maker applet.
|
||||
* Dropped old named-based DNS support
|
||||
* Added support for the usepeerdns option in pppd.
|
||||
|
||||
1.2.1 (Apr 12 2000)
|
||||
* Increased Modem Init Strings maximum size from 64 to
|
||||
256 characters.
|
||||
|
||||
1.2.0 (Apr 3 2000)
|
||||
* Fixed bug regarding user names made up of digits
|
||||
only.
|
||||
* Added the yawmppp.thin applet.
|
||||
* Made the -caution option default.
|
||||
* Bug fix: now modem init strings may contain spaces.
|
||||
* Bug fix: the config applet wasn't recognizing the first
|
||||
init string, it was putting ATZ always. As no one has
|
||||
complained about it, I'm surprised to know that ATZ is
|
||||
good for everyone :)
|
||||
|
||||
1.1.3 (Mar 24 2000)
|
||||
* Fixed bug in Help system (memory buffer for man pages was too
|
||||
small and the Configuration program dumped core). Now the
|
||||
buffers are initialized with 128K instead of 64K and will grow
|
||||
on demand. Thanks to Thomas Hood for reporting this one.
|
||||
* Added the -caution and -paranoid command line options, meant to
|
||||
help PCMCIA & APM users.
|
||||
* Minor documentation fixes.
|
||||
|
||||
1.1.2 (Mar 20 2000)
|
||||
* Added the online help (er... man) system.
|
||||
* Tried to fix a compilation bug that happened with Debian regarding the
|
||||
double inclusion of linux/socket.h and sys/socket.h. I don't have
|
||||
a Debian system to test, so I don't know for sure if it will work
|
||||
right now (Debian only).
|
||||
* Added the --with-x-include-dirs= option to the configure script. This
|
||||
should be helpful for FreeBSD users.
|
||||
* Due to the change below, changed the caption on the
|
||||
"Post-login conversation" button to "Additional conversation".
|
||||
* Added the "Don't generate login/password pairs" checkbox to help people
|
||||
with even stranger ISP conversations. I can't keep it simple if ISPs can't.
|
||||
* Fixed bug in expect/send pair parsing, now usernames, passwords,
|
||||
and all expected/sent strings may contain spaces and escaped
|
||||
quotes (\").
|
||||
* Fixed stop.* script generation (missing space between
|
||||
quote and bracket, thanks to Igor Marinovic for reporting
|
||||
it)
|
||||
* Fixed W,X,Y,Z characters which were apeearing swapped on the
|
||||
dock applet display.
|
||||
|
||||
1.1.1 (Mar 11 2000)
|
||||
* Fixed small bug in configure script that would prevent
|
||||
yawmppp from building in some FreeBSD systems.
|
||||
|
||||
1.1.0 (Mar 7 2000)
|
||||
* Added tooltips to most widgets in the PPP page.
|
||||
* Added capability for more multiple expect/send pairs in the
|
||||
entries.
|
||||
* Added support for PAP/CHAP related options in the pppd
|
||||
command line (the secrets must still be set manually in
|
||||
the secret files, read the FAQ for furhter information)
|
||||
|
||||
1.0.1 (Feb 29 2000)
|
||||
|
||||
* Added "user <username>" to command line of pppd,
|
||||
which may help PAPers and CHAPers.
|
||||
|
||||
* Some of the options shown with yawmppp -h were
|
||||
bogus. Took them out.
|
||||
|
||||
1.0.0 (Feb 14 2000)
|
||||
* First public release
|
339
yawmppp/COPYING
Normal file
339
yawmppp/COPYING
Normal file
|
@ -0,0 +1,339 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
164
yawmppp/FAQ
Normal file
164
yawmppp/FAQ
Normal file
|
@ -0,0 +1,164 @@
|
|||
|
||||
YAWMPPP FAQ
|
||||
$Id: FAQ,v 1.2 2001/04/21 18:29:33 bergo Exp $
|
||||
|
||||
1 Generic
|
||||
1.1 How can I see what is going on with my connection ?
|
||||
|
||||
1.2 Nothing happens when I hit the "V" button.
|
||||
|
||||
1.3 Yawmppp/pppd complain about not having root privileges.
|
||||
|
||||
1.4 Why doesn't it shows with the NeXTSTEP(tm) look
|
||||
in my system as it does in the screenshots ?
|
||||
|
||||
1.X Where can I get more info ?
|
||||
|
||||
|
||||
2 Specific
|
||||
2.1 How do I setup PAP/CHAP ?
|
||||
|
||||
2.2 My modem dials, connects, but hangs up some seconds later.
|
||||
What is happening ?
|
||||
|
||||
---------------------------------------------------------------------------
|
||||
|
||||
Q1.1: How can I see what is going on with my connection ?
|
||||
|
||||
A1.1: The ppp daemon throws lots of logging information (if asked to),
|
||||
but some of this information may get lost.
|
||||
Change your /etc/syslog.conf file so that is has a line
|
||||
|
||||
daemon,local2.debug,daemon.notice /etc/ppp/log
|
||||
|
||||
(the separation is made out of *tabs*, NOT spaces!)
|
||||
|
||||
and create a zero-sized log file:
|
||||
|
||||
touch /etc/ppp/log
|
||||
|
||||
Then restart the syslog daemon (e.g.: send a SIGHUP to it as root).
|
||||
Then enable the debug and kdebug options at yawmppp.pref's PPP options
|
||||
notebook page.
|
||||
|
||||
The log file should give more information than you actually need.
|
||||
Even if you don't want to change your logging configuration, some of
|
||||
pppd's log output may go to /var/log/messages.
|
||||
|
||||
|
||||
|
||||
Q1.2: Nothing happens when I hit the "V" button.
|
||||
|
||||
A1.2: The pppd daemon requires root privileges to run. The solution here is
|
||||
to set the setuid bit on pppd's executable:
|
||||
|
||||
chmod 4755 `which pppd`
|
||||
|
||||
You must run this as root. Notice that the quotes are backticks.
|
||||
|
||||
|
||||
|
||||
Q1.3: Yawmppp/pppd complain about not having root privileges.
|
||||
|
||||
A1.3: Maybe you're trying a noauth connection with a non-setuid pppd. If you
|
||||
really need to keep pppd non-setuid root, add the
|
||||
|
||||
noauth
|
||||
|
||||
line to your
|
||||
|
||||
/etc/ppp/options
|
||||
|
||||
file.
|
||||
|
||||
Q1.4: Why doesn't it shows with the NeXTSTEP(tm) look
|
||||
in my system as it does in the screenshots ?
|
||||
|
||||
A1.4: The GTK+ GUI toolkit allows themeing. It means that you may turn
|
||||
your GTK+ applications to look like Macintosh(tm), Aqua(tm),
|
||||
NeXT(tm) or whatever you want. Even Windows(tm) if you're sick
|
||||
enough for it.
|
||||
You can make your themes or download ready ones (faster).
|
||||
|
||||
There are lots of GTK+ themes at
|
||||
|
||||
http://gtk.themes.org
|
||||
|
||||
You can browse documentation on how to add the themes at the same
|
||||
site. To use gtk.themes.org pixmap themes you'll probably need
|
||||
the gtk-engines and imlib packages, you can find them perusing
|
||||
the site.
|
||||
|
||||
The NeXT look seen in the screenshots at yawmppp.seul.org is
|
||||
provided by the Xenophilia engine:
|
||||
|
||||
http://www.obsession.se/johan/gtk.html
|
||||
|
||||
(if this link ever gets broken, search for Xenophilia at
|
||||
freshmeat.net)
|
||||
|
||||
Q1.X: Where can I get more info ?
|
||||
|
||||
A1.X: You can read the PPP-HOWTO and ISP-Hookup-HOWTO from the LDP
|
||||
(Linux Documentation Project), available from
|
||||
|
||||
http://sunsite.unc.edu/LDP/HOWTO/
|
||||
|
||||
(Linux distributions may have it installed under /usr/doc/HOWTO)
|
||||
|
||||
|
||||
You can also read the ppp FAQ that comes with ppp's source, which
|
||||
can be downloaded from:
|
||||
|
||||
ftp://cs.anu.edu.au/pub/software/ppp
|
||||
|
||||
|
||||
Q2.1: How do I setup PAP/CHAP ?
|
||||
|
||||
A2.1: PAP and CHAP are authentication protocols and some ISPs require them to
|
||||
be used. Their purpose is to confirm identity throughout the connection.
|
||||
Unless you're afraid of someone tapping your phone line and transmitting
|
||||
"bogus" data through YOUR PPP link, you should not worry about it, unless
|
||||
your ISP does.
|
||||
|
||||
First, you'll have to set yawmppp.pref's local PPP options on your
|
||||
ISP entry to reflect the desired behaviour about CHAP/PAP.
|
||||
If your ISP doesn't even present a login prompt, you'll want to
|
||||
check the "don't generate login/password pairs" in the "More Settings"
|
||||
dialog.
|
||||
|
||||
Then, as root, edit /etc/ppp/chap-secrets and/or /etc/ppp/pap-secrets
|
||||
as desired.
|
||||
The ppp FAQ (included in the source distribution of ppp) tells the nitty
|
||||
gritty, but basically you'll have a set of lines, one for each ISP that
|
||||
reads like this:
|
||||
|
||||
username * password
|
||||
|
||||
where username is your username, password is your password. The
|
||||
first * means the server (any) and the second * means the allowed IPs
|
||||
(any). The log output of ppp may help you if you still can't get a
|
||||
conection. Read Q1.1 for instructions to get the most of ppp's log.
|
||||
|
||||
|
||||
|
||||
Q2.2: My modem dials, connects, but hangs up some seconds later.
|
||||
What is happening ?
|
||||
|
||||
A2.2: There are several possibilities, which you will only be sure by reading the
|
||||
logs. Here they are:
|
||||
|
||||
1. bad login/password, or your ISP is under maintenance and refused login
|
||||
|
||||
2. the ISP required CHAP/PAP authentication and you either didn't have
|
||||
a proper secret to give in the secret files (read Q2.1), or
|
||||
has the refuse-chap/refuse-pap options on, or had a bad (wrong) secret.
|
||||
If this is the case, asking help from your ISP is a good idea.
|
||||
|
||||
3. your ISP is taking too long to answer for the initial PPP requests.
|
||||
It may be busy, buggy, bad configured, or gone BSOD (Q2.3).
|
||||
You can try setting on the "passive" option or increase the
|
||||
lcp-max-configure number.
|
||||
|
||||
|
||||
---
|
82
yawmppp/INSTALL
Normal file
82
yawmppp/INSTALL
Normal file
|
@ -0,0 +1,82 @@
|
|||
Installation instructions for YAWMPPP.
|
||||
|
||||
Upgrading ?
|
||||
-----------
|
||||
If so, just follow the usual INSTALL instructions, run
|
||||
yawmppp.pref and click Ok or Apply. It will not
|
||||
damage your previous versions' ISP entries or log, and will write the
|
||||
new pppd command line to your ~/.yawmppp scripts.
|
||||
|
||||
Upgrading from 1.x.x to 2.x.x:
|
||||
------------------------------
|
||||
The configuration files of 2.x.x are placed separated from 1.x.x
|
||||
files. You are can uninstall 1.x.x before installing 2.x.x, but it
|
||||
isn't necessary. (to do so, unpack the 1.x.x tar.gz, configure and
|
||||
make uninstall).
|
||||
|
||||
|
||||
Just notice that if you chmod'ed the files in ~/.yawmppp to
|
||||
prevent yawmppp from overwriting your manual changes, the
|
||||
new version will not be able to add new data to them, ok ?
|
||||
|
||||
NOTE!
|
||||
--------------------------------------------------------------
|
||||
Installing this program requires root privileges, ask your
|
||||
local system/network administrator kindly if she/he wants
|
||||
to install this software for you ;-)
|
||||
|
||||
you need root access for installation.
|
||||
|
||||
What the installation will do
|
||||
----------------------------------------------------------
|
||||
|
||||
The installation requires a program
|
||||
be copied to /etc/ppp:
|
||||
|
||||
/etc/ppp/yagetmodemspeed
|
||||
|
||||
and will also copy an icon to /usr/local/share/icons
|
||||
|
||||
the yawmppp binaries will be installed in
|
||||
/usr/local/bin (you can change the /usr/local prefix,
|
||||
see below)
|
||||
|
||||
/usr/local/bin/yawmppp
|
||||
/usr/local/bin/yawmppp.pref
|
||||
/usr/local/bin/yawmppp.log
|
||||
|
||||
the documentation will be installed in
|
||||
/usr/local/doc/yawmppp-<version>
|
||||
|
||||
and yawmppp's man page will be placed in
|
||||
/usr/local/man/man1
|
||||
|
||||
Installation
|
||||
--------------------------------------------------------------
|
||||
1) % tar zxvf yawmppp-2.x.x.tar.gz
|
||||
2) % cd yawmppp-2.x.x
|
||||
3) % ./configure
|
||||
4) % make
|
||||
5) % su
|
||||
6) # make install
|
||||
|
||||
As non-privileged user:
|
||||
|
||||
7) % yawmppp & (try 'yawmppp -h &' for help)
|
||||
|
||||
If you have no ISP entries configured you'll see the yawmppp.pref
|
||||
GUI.
|
||||
|
||||
FreeBSD note: if configure fails to find the X11 includes you may have
|
||||
to use the --with-x-includes=DIR option, type "configure --help" for
|
||||
information.
|
||||
|
||||
Extras
|
||||
--------------------------------------------------------------
|
||||
|
||||
Changing the prefix: if you want the binaries to be installed
|
||||
somewhere else than /usr/local, do a
|
||||
|
||||
./configure --prefix=/where/I/want/the/prefix/to/be
|
||||
|
||||
in the 3) step above.
|
42
yawmppp/Makefile.in
Normal file
42
yawmppp/Makefile.in
Normal file
|
@ -0,0 +1,42 @@
|
|||
# YAWMPPP toplevel Makefile
|
||||
|
||||
#GTKLIB = @GTK_LIBS@
|
||||
#GTKFLAG = @GTK_FLAGS@
|
||||
#RLFLAG = -DVERSION=\"@MK_YAWMPPP_RELEASE@\"
|
||||
PROGINST = @INSTALL@
|
||||
|
||||
all: build_src
|
||||
|
||||
build_src:
|
||||
@$(MAKE) -C src
|
||||
|
||||
install:
|
||||
@$(MAKE) -C src install
|
||||
$(PROGINST) -d -g 0 -o 0 -m 0755 @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 README @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 COPYING @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 CHANGELOG @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 INSTALL @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 FAQ @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
|
||||
install-strip:
|
||||
@$(MAKE) -C src install-strip
|
||||
$(PROGINST) -d -g 0 -o 0 -m 0755 @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 README @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 COPYING @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 CHANGELOG @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 INSTALL @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -g 0 -o 0 -m 0644 FAQ @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
|
||||
uninstall:
|
||||
@echo "----> Uninstalling YAWMPPP from prefix @prefix@"
|
||||
rm -f @prefix@/bin/yawmppp @prefix@/bin/yawmppp.pref @prefix@/bin/yawmppp.log /etc/ppp/managednsonthefly /etc/ppp/yagetmodemspeed @prefix@/share/icons/redphone.xpm @prefix@/share/icons/pppdoc.xpm @prefix@/share/icons/pedestal.xpm @prefix@/man/man1/yawmppp.1x
|
||||
rm -rf @prefix@/doc/yawmppp*
|
||||
@echo "----> done."
|
||||
|
||||
clean:
|
||||
@$(MAKE) -C src clean
|
||||
|
||||
distclean:
|
||||
@$(MAKE) -C src distclean
|
||||
rm -f config.* Makefile *~
|
278
yawmppp/README
Normal file
278
yawmppp/README
Normal file
|
@ -0,0 +1,278 @@
|
|||
|
||||
YAWMPPP
|
||||
version 2.0.2
|
||||
Yet Another PPP Window Maker dock applet
|
||||
(C) 2000 Felipe Bergo
|
||||
|
||||
Table of Contents
|
||||
|
||||
Overview
|
||||
Requirements
|
||||
Installing
|
||||
Features
|
||||
Files
|
||||
Reporting Bugs
|
||||
Usage Hints
|
||||
Programs
|
||||
Interface Guide
|
||||
Window Manager Placement
|
||||
Configuration
|
||||
DNS Servers
|
||||
Modem Ports
|
||||
Login/Password expects
|
||||
Trouble?
|
||||
More Documentation
|
||||
|
||||
Overview
|
||||
--------
|
||||
|
||||
YAWMPPP sits in Window Maker's dock (or AfterStep's Wharf, or keeps
|
||||
standing as a 64x64 window with other Window Managers) and manages
|
||||
PPP connections. For window managers not capable of docking
|
||||
yawmppp also provides a bar shaped version (yawmppp.thin).
|
||||
|
||||
It includes a GUI to easily setup your ISP entries, so that you
|
||||
don't need to edit CHAT scripts.
|
||||
|
||||
YAWMPPP is distributed under the terms of the GNU General Public
|
||||
License, version 2 or later (at your choice). A copy of the
|
||||
license is provided in the file COPYING in this same directory.
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
YAWMPPP is known to run on Linux (tested with 2.2 kernels) and FreeBSD
|
||||
(tested with 3.4-RELEASE) and has been reported to work with NetBSD 1.5.
|
||||
|
||||
You'll need:
|
||||
|
||||
- root access to install YAWMPPP
|
||||
|
||||
- A kernel with PPP support compiled in.
|
||||
|
||||
- pppd, the ppp daemon, installed in /usr/sbin/pppd
|
||||
(currently this path mandatory for the builtin scripts to
|
||||
work). If you wish to use YAWMPPP as non-root pppd must
|
||||
have the setuid bit set. The RedHat installation already
|
||||
brings this set.
|
||||
Version 2.3.11 or newer is recommended.
|
||||
|
||||
- the "chat" program (usually included in the pppd package, comes
|
||||
with the FreeBSD distribution too).
|
||||
|
||||
- GTK+ 1.2.1 or greater. 1.2.6 recommended.
|
||||
If you don't have it you can grab it from
|
||||
|
||||
http://www.gtk.org
|
||||
|
||||
Remember to get the GLib too (needed by GTK+).
|
||||
|
||||
On RedHat-based systems (RedHat itself, Mandrake, Conectiva,
|
||||
Independence, etc.) you'll need these packages installed to
|
||||
compile YAWMPPP:
|
||||
|
||||
glib-1.2.x
|
||||
glib-devel-1.2.x
|
||||
gtk+-1.2.x
|
||||
gtk+-devel-1.2.x
|
||||
|
||||
Author: Felipe Bergo <bergo@seul.org>, who built YAWMPPP
|
||||
using code from the WMPPP application developed by
|
||||
Martijn Pieterse and Antoine Nulle.
|
||||
|
||||
YAWMPPP's web page is located at
|
||||
http://yawmppp.seul.org
|
||||
|
||||
For more information on WMPPP see
|
||||
http://windowmaker.mezaway.org
|
||||
|
||||
Installing
|
||||
----------
|
||||
|
||||
Read the file INSTALL for instructions. Be sure to read this file
|
||||
entirely before using YAWMPPP
|
||||
|
||||
Features
|
||||
--------
|
||||
YAWMPPP features all things the standard pppd offers and gives
|
||||
you some additional amusements:
|
||||
|
||||
* Integrated online timer;
|
||||
* Integrated modem RX/TX LED's;
|
||||
* Integrated YAWMPPP status LED;
|
||||
* Integrated autoscaling PPP transfer statistics;
|
||||
* Integrated bytes/second Speed-O-Meter;
|
||||
* Automatic detection of active ppp interfaces;
|
||||
* Several commandline options (try '-h' for help);
|
||||
* Easy ISP configuration GUI
|
||||
* Multiple ISP entries support
|
||||
* Logging facility with GUI viewer
|
||||
|
||||
Files
|
||||
-----
|
||||
README This file.
|
||||
INSTALL Installation instructions.
|
||||
CHANGELOG Description of changes.
|
||||
COPYING GNU General Public License Version 2.
|
||||
FAQ Frequently Asked Questions
|
||||
|
||||
|
||||
Reporting Bugs
|
||||
--------------
|
||||
If you discover any bugs in this software, please send a
|
||||
bug report to bergo@seul.org and describe the
|
||||
problem as detailed as you can.
|
||||
|
||||
|
||||
Usage Hints
|
||||
-----------
|
||||
|
||||
First of all: you can type "man yawmppp" for help at the command line.
|
||||
|
||||
Programs:
|
||||
---------
|
||||
|
||||
yawmppp - The PPP dock applet
|
||||
yawmppp.thin - A PPP applet for non dock-capable window managers
|
||||
(e.g. Enlightenment, Sapphire...)
|
||||
yawmppp.pref - The Dialing setup tool (can be run from
|
||||
yawmppp by clicking the left mouse
|
||||
button in the display area)
|
||||
yawmppp.log - The log view tool (can be run from yawmppp
|
||||
by clicking the middle or right mouse buttons
|
||||
in the display area)
|
||||
|
||||
Interface guide (yawmppp)
|
||||
-------------------------
|
||||
Please, don't laugh at the drawing.
|
||||
|
||||
+-----------------------------+ A : Connection timer
|
||||
|+---------------------------+|
|
||||
||AAAAAAAAAAA BB CC DD || B : RX LED (blinks when PPP packets
|
||||
||AAAAAAAAAAA BB CC DD || are received)
|
||||
|| ||
|
||||
||EEEEEEEEEEEEEEEEEEEEEEEEEEE|| C : TX LED (blinks when PPP packets
|
||||
||EEEEEEEEEEEEEEEEEEEEEEEEEEE|| are sent)
|
||||
||EEEEEEEEEEEEEEEEEEEEEEEEEEE||
|
||||
||EEEEEEEEEEEEEEEEEEEEEEEEEEE|| D : ON/OFF LED: dark when there is no
|
||||
|| || active connection, GREEN if
|
||||
||FFFFFFFFFF GGGGGGGGGGGGG|| the connection is up, YELLOW
|
||||
||FFFFFFFFFF GGGGGGGGGGGGG|| while dialing, RED on error.
|
||||
|+---------------------------+|
|
||||
|+-----++-----+ +-----++-----+| E : Speed history
|
||||
|| || | | || ||
|
||||
|| < || > | | V || X || F : ISP entry name (short)
|
||||
|| || | | || ||
|
||||
|+-----++-----+ +-----++-----|| G : Connection speed, speed-o-meter,
|
||||
+-----------------------------+ error messages
|
||||
|
||||
< : selects prior ISP. You can't change
|
||||
the ISP entry while online
|
||||
|
||||
> : selects next ISP.
|
||||
|
||||
V : connects to currently selected ISP
|
||||
|
||||
X : closes current connection.
|
||||
|
||||
You can click the display area with the left mouse button to open the
|
||||
ISP configuration tool (yawmppp.pref) or with any other mouse button
|
||||
to open the connection log viewer (yawmppp.log).
|
||||
|
||||
Window Manager Placement
|
||||
------------------------
|
||||
Window Maker: Window Maker users simply drag and drop YAWMPPP on
|
||||
the WindowMaker Dock or the Clip.
|
||||
Press the right mouse button on YAWMPPP's outer edges and
|
||||
select "Settings..." from the popup menu that appears.
|
||||
Enable the 'Start when WindowMaker is started' option,
|
||||
then click on the 'OK' button in the Docked Applications
|
||||
Panel.
|
||||
|
||||
AfterStep: Afterstep users put something like this in their Wharf rc
|
||||
file "Wharf yawmppp - MaxSwallow "yawmppp" yawmppp &"
|
||||
(this should be somewhere under ~/GNUstep/Library/AfterStep)
|
||||
|
||||
Elsewhere: For other windowmanagers, YAWMPPP runs nicely as a 64x64
|
||||
pixel shaped icon on your desktop. You may prefer to run
|
||||
yawmppp.thin when not using Window Maker or AfterStep.
|
||||
|
||||
Configuration
|
||||
-------------
|
||||
|
||||
YAWMPPP's configuration files stay beneath ~/.yawmppp2, which will
|
||||
be created as soon as you run yawmppp for the first time. The main
|
||||
configuration file is yawmppprc. You should use the yawmppp.pref
|
||||
application to create your entries. If you're willing to edit entries
|
||||
by hand, create some bogus entries with yawmppp.pref and take a look
|
||||
at the generated files for hints. It should be easy to figure out.
|
||||
|
||||
The format has changed since YAWMPPP 1.x.x, thus the
|
||||
directory has changed (from ~/.yawmppp to ~/.yawmppp2).
|
||||
|
||||
Don't try copying files between 1.x.x and 2.x.x versions.
|
||||
|
||||
Modem ports
|
||||
-----------
|
||||
On Linux the serial ports are (or at least should be :-) ):
|
||||
|
||||
/dev/cua0 _or_ /dev/ttyS0 : DOS' COM1
|
||||
/dev/cua1 _or_ /dev/ttyS1 : " COM2
|
||||
/dev/cua2 _or_ /dev/ttyS2 : " COM3
|
||||
/dev/cua3 _or_ /dev/ttyS3 : " COM4
|
||||
|
||||
If you don't know where your modem is, type
|
||||
|
||||
dmesg | grep tty
|
||||
|
||||
It should print something like
|
||||
|
||||
ttyS00 at 0x03f8 (irq = 4) is a 16550A
|
||||
ttyS01 at 0x02f8 (irq = 3) is a 16550A
|
||||
ttyS02 at 0x03e8 (irq = 4) is a 16550A
|
||||
|
||||
If it shows the wrong irq to you, add a setserial command
|
||||
to one of your boot time scripts (maybe /etc/rc.d/rc.local)
|
||||
like:
|
||||
|
||||
/bin/setserial /dev/ttyS2 irq 10
|
||||
|
||||
See "man setserial" for more information.
|
||||
|
||||
On FreeBSD the dialout serial ports are
|
||||
|
||||
/dev/cuaa0 (kernel interface sio0)
|
||||
/dev/cuaa1 (kernel interface sio1)
|
||||
/dev/cuaa2 (kernel interface sio2)
|
||||
/dev/cuaa3 (kernel interface sio3)
|
||||
|
||||
If it fails to recognize your modem's port, or gives it the wrong
|
||||
IRQ, you have to compile a new kernel with the correct settings.
|
||||
Read the FreeBSD handbook if don't know how to do this
|
||||
(/usr/share/doc/books/handbook)
|
||||
|
||||
Login/Password Expects
|
||||
----------------------
|
||||
The supplied expects for login and password are rather common,
|
||||
but if it fails, connect to your ISP using a standard communication
|
||||
program (like minicom) and watch what the ISP sends to ask for
|
||||
login and password.
|
||||
|
||||
Trouble?
|
||||
--------
|
||||
Read the FAQ in this same directory.
|
||||
|
||||
More Documentation
|
||||
------------------
|
||||
Linux users can read the ISP-Hookup and PPP howtos. These howtos
|
||||
are available from
|
||||
|
||||
http://sunsite.unc.edu/LDP/HOWTO/
|
||||
|
||||
If you are on a major Linux distribution the HOWTOs should be
|
||||
installed. Try looking beneath /usr/doc.
|
||||
|
||||
You may also get the ppp source and read the FAQ included, it is
|
||||
at
|
||||
|
||||
ftp://cs.anu.edu.au/pub/software/ppp
|
8
yawmppp/TODO
Normal file
8
yawmppp/TODO
Normal file
|
@ -0,0 +1,8 @@
|
|||
|
||||
Yawmppp TODO
|
||||
|
||||
|
||||
- Provide an easy way for the user to browse the chat/ppp logs. This
|
||||
is tough because of security guards put around the log files, I'm
|
||||
wondering a way to make it (securely).
|
||||
|
2531
yawmppp/configure
vendored
Executable file
2531
yawmppp/configure
vendored
Executable file
File diff suppressed because it is too large
Load diff
179
yawmppp/configure.in
Normal file
179
yawmppp/configure.in
Normal file
|
@ -0,0 +1,179 @@
|
|||
dnl configure.in for yawmppp
|
||||
dnl by Felipe Bergo (bergo@seul.org)
|
||||
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
AC_INIT(src/gtksetup/applet.c)
|
||||
AC_PREREQ(2.0)
|
||||
|
||||
AC_CHECK_PROG(GNU_MAKE,make,yes)
|
||||
AC_CHECK_PROG(GOTSED,sed,yes,no)
|
||||
AC_PROG_CC
|
||||
AC_PROG_INSTALL
|
||||
|
||||
AC_HEADER_STDC
|
||||
AC_HEADER_CHECK(unistd.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(sys/wait.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(sys/stat.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(sys/param.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(sys/types.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(sys/ioctl.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(sys/socket.h,,AC_MSG_ERROR(required header file missing))
|
||||
|
||||
AC_PATH_X
|
||||
|
||||
XINC="$x_includes"
|
||||
XLIB="$x_libraries"
|
||||
|
||||
if test "tmp$no_x" = "tmpyes" ; then
|
||||
AC_MSG_ERROR(
|
||||
[
|
||||
** You must have the X11R6 system. If you have an X11R6 system installed
|
||||
and are seeing this message, try using the --x-includes and --x-libraries
|
||||
options with configure. Use the --help option for help.
|
||||
]
|
||||
)
|
||||
fi
|
||||
|
||||
AC_HEADER_CHECK(X11/Xlib.h,,AC_MSG_WARN(required header file missing ?))
|
||||
AC_HEADER_CHECK(X11/xpm.h,,AC_MSG_WARN(required header file missing ?))
|
||||
AC_HEADER_CHECK(X11/extensions/shape.h,,AC_MSG_WARN(required header file missing ?))
|
||||
|
||||
AC_SUBST(XINC)
|
||||
AC_SUBST(XLIB)
|
||||
|
||||
AC_MSG_CHECKING(Operating System)
|
||||
OSTYPE=`uname -s`
|
||||
AC_MSG_RESULT("$OSTYPE")
|
||||
|
||||
SYSDEF="UNKNOWN"
|
||||
|
||||
case $OSTYPE in
|
||||
Linux)
|
||||
AC_HEADER_CHECK(asm/types.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(linux/if.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(linux/ppp_defs.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(linux/if_ppp.h,,AC_MSG_ERROR(required header file missing))
|
||||
SYSDEF="LINUX"
|
||||
;;
|
||||
FreeBSD)
|
||||
AC_HEADER_CHECK(net/if.h,,AC_MSG_ERROR(required header file missing))
|
||||
dnl AC_HEADER_CHECK(net/if_ppp.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(net/ppp_defs.h,,AC_MSG_ERROR(required header file missing))
|
||||
SYSDEF="FREEBSD"
|
||||
;;
|
||||
OpenBSD)
|
||||
AC_MSG_WARN(*************************************************)
|
||||
AC_MSG_WARN(* *)
|
||||
AC_MSG_WARN(* OpenBSD support not tested - if it works *)
|
||||
AC_MSG_WARN(* please report to bergo@seul.org. Good Luck. *)
|
||||
AC_MSG_WARN(* *)
|
||||
AC_MSG_WARN(*************************************************)
|
||||
sleep 2
|
||||
AC_HEADER_CHECK(net/if.h,,AC_MSG_ERROR(required header file missing))
|
||||
dnl AC_HEADER_CHECK(net/if_ppp.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(net/ppp_defs.h,,AC_MSG_ERROR(required header file missing))
|
||||
SYSDEF="OPENBSD"
|
||||
;;
|
||||
NetBSD)
|
||||
AC_MSG_WARN(*************************************************)
|
||||
AC_MSG_WARN(* *)
|
||||
AC_MSG_WARN(* NetBSD support not tested - if it works *)
|
||||
AC_MSG_WARN(* please report to bergo@seul.org. Good Luck. *)
|
||||
AC_MSG_WARN(* *)
|
||||
AC_MSG_WARN(*************************************************)
|
||||
sleep 2
|
||||
AC_HEADER_CHECK(net/if.h,,AC_MSG_ERROR(required header file missing))
|
||||
dnl AC_HEADER_CHECK(net/if_ppp.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(net/ppp_defs.h,,AC_MSG_ERROR(required header file missing))
|
||||
SYSDEF="NETBSD"
|
||||
;;
|
||||
esac
|
||||
|
||||
if test "$SYSDEF" = "UNKNOWN" ; then
|
||||
AC_HEADER_CHECK(net/if.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(net/if_ppp.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_HEADER_CHECK(net/ppp_defs.h,,AC_MSG_ERROR(required header file missing))
|
||||
AC_MSG_WARN(*************************************************)
|
||||
AC_MSG_WARN(* *)
|
||||
AC_MSG_WARN(* This system has not been tested. I will try *)
|
||||
AC_MSG_WARN(* compiling with BSDish settings. If it works *)
|
||||
AC_MSG_WARN(* please report to bergo@seul.org. Good Luck! *)
|
||||
AC_MSG_WARN(* *)
|
||||
AC_MSG_WARN(*************************************************)
|
||||
sleep 2
|
||||
SYSDEF="BSDISH"
|
||||
fi
|
||||
|
||||
AC_SUBST(SYSDEF)
|
||||
|
||||
dnl now gtk
|
||||
|
||||
AC_PATH_PROG(GTKCONFIG,gtk-config,no)
|
||||
|
||||
if test "$GTKCONFIG" = "no" ; then
|
||||
AC_MSG_ERROR(
|
||||
[
|
||||
-(GTK >= 1.2.1 NOT FOUND)---------------------------------------
|
||||
The config application requires the GTK libary. See the
|
||||
README for information on how to install GTK.
|
||||
----------------------------------------------------------------
|
||||
])
|
||||
else
|
||||
dnl check for gtk-version
|
||||
GTK_LIBS=`$GTKCONFIG --libs`
|
||||
GTK_FLAGS=`$GTKCONFIG --cflags`
|
||||
|
||||
dnl test for Gtk+ >= 1.2.1
|
||||
AC_MSG_CHECKING(for gtk+ >=1.2.1)
|
||||
|
||||
dnl copied from gtk+'s aclocal.m4. These guys must love sed
|
||||
GTK_MAJOR=`$GTKCONFIG --version | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
||||
GTK_MINOR=`$GTKCONFIG --version | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
||||
GTK_MICRO=`$GTKCONFIG --version | \
|
||||
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
||||
|
||||
GTK121_FINE=1
|
||||
|
||||
if test $GTK_MAJOR -lt 1 ; then
|
||||
GTK121_FINE=0
|
||||
else
|
||||
if test $GTK_MAJOR -eq 1 ; then
|
||||
if test $GTK_MINOR -lt 2 ; then
|
||||
GTK121_FINE=0
|
||||
fi
|
||||
if test $GTK_MINOR -eq 2 ; then
|
||||
if test $GTK_MICRO -lt 1 ; then
|
||||
GTK121_FINE=0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$GTK121_FINE" = "1" ; then
|
||||
AC_MSG_RESULT(yes)
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_ERROR(
|
||||
[
|
||||
-(GTK >= 1.2.1 NOT FOUND)---------------------------------------
|
||||
The config application requires the GTK libary. See the
|
||||
README for information on how to install GTK.
|
||||
----------------------------------------------------------------
|
||||
]
|
||||
)
|
||||
fi
|
||||
fi
|
||||
|
||||
AC_SUBST(GTK_LIBS)
|
||||
AC_SUBST(GTK_FLAGS)
|
||||
|
||||
MK_YAWMPPP_RELEASE="2.0.2"
|
||||
AC_SUBST(MK_YAWMPPP_RELEASE)
|
||||
|
||||
AC_OUTPUT(Makefile src/Makefile src/dockapp/Makefile src/gtksetup/Makefile src/gtklog/Makefile src/thinppp/Makefile)
|
||||
|
||||
echo
|
||||
echo "--> type make to compile yawmppp"
|
||||
echo
|
250
yawmppp/install-sh
Normal file
250
yawmppp/install-sh
Normal file
|
@ -0,0 +1,250 @@
|
|||
#! /bin/sh
|
||||
#
|
||||
# install - install a program, script, or datafile
|
||||
# This comes from X11R5 (mit/util/scripts/install.sh).
|
||||
#
|
||||
# Copyright 1991 by the Massachusetts Institute of Technology
|
||||
#
|
||||
# Permission to use, copy, modify, distribute, and sell this software and its
|
||||
# documentation for any purpose is hereby granted without fee, provided that
|
||||
# the above copyright notice appear in all copies and that both that
|
||||
# copyright notice and this permission notice appear in supporting
|
||||
# documentation, and that the name of M.I.T. not be used in advertising or
|
||||
# publicity pertaining to distribution of the software without specific,
|
||||
# written prior permission. M.I.T. makes no representations about the
|
||||
# suitability of this software for any purpose. It is provided "as is"
|
||||
# without express or implied warranty.
|
||||
#
|
||||
# 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. It can only install one file at a time, a restriction
|
||||
# shared with many OS's install programs.
|
||||
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit="${DOITPROG-}"
|
||||
|
||||
|
||||
# put in absolute paths if you don't have them in your path; or use env. vars.
|
||||
|
||||
mvprog="${MVPROG-mv}"
|
||||
cpprog="${CPPROG-cp}"
|
||||
chmodprog="${CHMODPROG-chmod}"
|
||||
chownprog="${CHOWNPROG-chown}"
|
||||
chgrpprog="${CHGRPPROG-chgrp}"
|
||||
stripprog="${STRIPPROG-strip}"
|
||||
rmprog="${RMPROG-rm}"
|
||||
mkdirprog="${MKDIRPROG-mkdir}"
|
||||
|
||||
transformbasename=""
|
||||
transform_arg=""
|
||||
instcmd="$mvprog"
|
||||
chmodcmd="$chmodprog 0755"
|
||||
chowncmd=""
|
||||
chgrpcmd=""
|
||||
stripcmd=""
|
||||
rmcmd="$rmprog -f"
|
||||
mvcmd="$mvprog"
|
||||
src=""
|
||||
dst=""
|
||||
dir_arg=""
|
||||
|
||||
while [ x"$1" != x ]; do
|
||||
case $1 in
|
||||
-c) instcmd="$cpprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-d) dir_arg=true
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-m) chmodcmd="$chmodprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-s) stripcmd="$stripprog"
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-t=*) transformarg=`echo $1 | sed 's/-t=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
|
||||
shift
|
||||
continue;;
|
||||
|
||||
*) if [ x"$src" = x ]
|
||||
then
|
||||
src=$1
|
||||
else
|
||||
# this colon is to work around a 386BSD /bin/sh bug
|
||||
:
|
||||
dst=$1
|
||||
fi
|
||||
shift
|
||||
continue;;
|
||||
esac
|
||||
done
|
||||
|
||||
if [ x"$src" = x ]
|
||||
then
|
||||
echo "install: no input file specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]; then
|
||||
dst=$src
|
||||
src=""
|
||||
|
||||
if [ -d $dst ]; then
|
||||
instcmd=:
|
||||
else
|
||||
instcmd=mkdir
|
||||
fi
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
|
||||
# might cause directories to be created, which would be especially bad
|
||||
# if $src (and thus $dsttmp) contains '*'.
|
||||
|
||||
if [ -f $src -o -d $src ]
|
||||
then
|
||||
true
|
||||
else
|
||||
echo "install: $src does not exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ x"$dst" = x ]
|
||||
then
|
||||
echo "install: no destination specified"
|
||||
exit 1
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# If destination is a directory, append the input filename; if your system
|
||||
# does not like double slashes in filenames, you may need to add some logic
|
||||
|
||||
if [ -d $dst ]
|
||||
then
|
||||
dst="$dst"/`basename $src`
|
||||
else
|
||||
true
|
||||
fi
|
||||
fi
|
||||
|
||||
## this sed command emulates the dirname command
|
||||
dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
|
||||
|
||||
# Make sure that the destination directory exists.
|
||||
# this part is taken from Noah Friedman's mkinstalldirs script
|
||||
|
||||
# Skip lots of stat calls in the usual case.
|
||||
if [ ! -d "$dstdir" ]; then
|
||||
defaultIFS='
|
||||
'
|
||||
IFS="${IFS-${defaultIFS}}"
|
||||
|
||||
oIFS="${IFS}"
|
||||
# Some sh's can't handle IFS=/ for some reason.
|
||||
IFS='%'
|
||||
set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
|
||||
IFS="${oIFS}"
|
||||
|
||||
pathcomp=''
|
||||
|
||||
while [ $# -ne 0 ] ; do
|
||||
pathcomp="${pathcomp}${1}"
|
||||
shift
|
||||
|
||||
if [ ! -d "${pathcomp}" ] ;
|
||||
then
|
||||
$mkdirprog "${pathcomp}"
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
pathcomp="${pathcomp}/"
|
||||
done
|
||||
fi
|
||||
|
||||
if [ x"$dir_arg" != x ]
|
||||
then
|
||||
$doit $instcmd $dst &&
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
|
||||
else
|
||||
|
||||
# If we're going to rename the final executable, determine the name now.
|
||||
|
||||
if [ x"$transformarg" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
dstfile=`basename $dst $transformbasename |
|
||||
sed $transformarg`$transformbasename
|
||||
fi
|
||||
|
||||
# don't allow the sed command to completely eliminate the filename
|
||||
|
||||
if [ x"$dstfile" = x ]
|
||||
then
|
||||
dstfile=`basename $dst`
|
||||
else
|
||||
true
|
||||
fi
|
||||
|
||||
# Make a temp file name in the proper directory.
|
||||
|
||||
dsttmp=$dstdir/#inst.$$#
|
||||
|
||||
# Move or copy the file name to the temp name
|
||||
|
||||
$doit $instcmd $src $dsttmp &&
|
||||
|
||||
trap "rm -f ${dsttmp}" 0 &&
|
||||
|
||||
# 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 $instcmd $src $dsttmp" command.
|
||||
|
||||
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
|
||||
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
|
||||
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
|
||||
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
|
||||
$doit $rmcmd -f $dstdir/$dstfile &&
|
||||
$doit $mvcmd $dsttmp $dstdir/$dstfile
|
||||
|
||||
fi &&
|
||||
|
||||
|
||||
exit 0
|
71
yawmppp/src/Makefile.in
Normal file
71
yawmppp/src/Makefile.in
Normal file
|
@ -0,0 +1,71 @@
|
|||
# yawmppp/src
|
||||
|
||||
CC = @CC@
|
||||
CFLAGS = -O2 -Wall
|
||||
OBJS = isprc.o ycommon.o misc.o list.o
|
||||
RLFLAG = -DVERSION=\"@MK_YAWMPPP_RELEASE@\" -D@SYSDEF@
|
||||
PROGINST = @INSTALL@
|
||||
GTKLIB = @GTK_LIBS@
|
||||
GTKFLAG = @GTK_FLAGS@
|
||||
|
||||
all: isprc.o ycommon.o misc.o list.o about_obj \
|
||||
build_dockapp build_gtksetup build_gtklog \
|
||||
build_thinppp
|
||||
|
||||
$(OBJS): %.o : %.c %.h
|
||||
$(CC) $(CFLAGS) $(RLFLAG) -o $@ -c $<
|
||||
|
||||
about_obj: about.c about.h
|
||||
$(CC) $(GTKFLAG) $(RLFLAG) -c about.c -o about.o
|
||||
|
||||
build_gtklog:
|
||||
@$(MAKE) -C gtklog
|
||||
|
||||
build_dockapp:
|
||||
@$(MAKE) -C dockapp
|
||||
|
||||
build_thinppp:
|
||||
@$(MAKE) -C thinppp
|
||||
|
||||
build_gtksetup:
|
||||
@$(MAKE) -C gtksetup
|
||||
|
||||
install:
|
||||
$(PROGINST) -m 0755 -d @prefix@/share/icons
|
||||
$(PROGINST) -m 0755 -d @prefix@/man/man1
|
||||
$(PROGINST) -m 0755 -d @prefix@/bin
|
||||
$(PROGINST) -m 0755 -d /etc/ppp
|
||||
$(PROGINST) -m 0755 -d @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -m 0644 stepphone.xpm @prefix@/share/icons/stepphone.xpm
|
||||
$(PROGINST) -m 0644 yawmppp.1x @prefix@/man/man1/yawmppp.1x
|
||||
@$(MAKE) -C dockapp install
|
||||
@$(MAKE) -C thinppp install
|
||||
@$(MAKE) -C gtksetup install
|
||||
@$(MAKE) -C gtklog install
|
||||
|
||||
install-strip:
|
||||
$(PROGINST) -m 0755 -d @prefix@/share/icons
|
||||
$(PROGINST) -m 0755 -d @prefix@/bin
|
||||
$(PROGINST) -m 0755 -d /etc/ppp
|
||||
$(PROGINST) -m 0755 -d @prefix@/doc/yawmppp-@MK_YAWMPPP_RELEASE@
|
||||
$(PROGINST) -m 0644 stepphone.xpm @prefix@/share/icons/stepphone.xpm
|
||||
$(PROGINST) -m 0644 yawmppp.1x @prefix@/man/man1/yawmppp.1x
|
||||
@$(MAKE) -C dockapp install-strip
|
||||
@$(MAKE) -C thinppp install-strip
|
||||
@$(MAKE) -C gtksetup install-strip
|
||||
@$(MAKE) -C gtklog install-strip
|
||||
|
||||
clean:
|
||||
@$(MAKE) -C dockapp clean
|
||||
@$(MAKE) -C thinppp clean
|
||||
@$(MAKE) -C gtksetup clean
|
||||
@$(MAKE) -C gtklog clean
|
||||
rm -f $(OBJS) about.o *~
|
||||
|
||||
distclean:
|
||||
@$(MAKE) -C dockapp distclean
|
||||
@$(MAKE) -C thinppp distclean
|
||||
@$(MAKE) -C gtksetup distclean
|
||||
@$(MAKE) -C gtklog distclean
|
||||
rm -f Makefile
|
||||
|
120
yawmppp/src/about.c
Normal file
120
yawmppp/src/about.c
Normal file
|
@ -0,0 +1,120 @@
|
|||
/*
|
||||
|
||||
YAWMPPP - PPP dock app/helper for WindowMaker
|
||||
Copyright (C) 2000, 2001:
|
||||
|
||||
Author: Felipe Bergo (bergo@seul.org)
|
||||
|
||||
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
|
||||
|
||||
$Id: about.c,v 1.1.1.1 2001/02/22 06:15:21 bergo Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include "about.h"
|
||||
|
||||
#include "stepphone.xpm"
|
||||
|
||||
GtkWidget *about;
|
||||
|
||||
/* data must be a pointer to parent widget (GtkWindow) */
|
||||
void applet_about (GtkWidget * widget, gpointer data)
|
||||
{
|
||||
GtkStyle *style;
|
||||
GdkPixmap *phone;
|
||||
GtkWidget *pi,*v,*h,*text,*h2,*b,*p,*v2;
|
||||
char tabout[1024];
|
||||
GdkBitmap *mask;
|
||||
int i;
|
||||
|
||||
about=gtk_window_new(GTK_WINDOW_DIALOG);
|
||||
gtk_window_set_transient_for(GTK_WINDOW(about),GTK_WINDOW(data));
|
||||
gtk_window_set_wmclass(GTK_WINDOW(about),"yawmppp","about");
|
||||
gtk_widget_realize(about);
|
||||
gtk_window_set_policy(GTK_WINDOW(about),TRUE,TRUE,TRUE);
|
||||
gtk_window_set_title (GTK_WINDOW (about), "About YAWMPPP");
|
||||
|
||||
style=gtk_widget_get_style(about);
|
||||
phone=gdk_pixmap_create_from_xpm_d(about->window,&mask,
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
(gchar **)stepphone_xpm);
|
||||
pi=gtk_pixmap_new(phone,mask);
|
||||
gdk_pixmap_unref(phone);
|
||||
|
||||
v=gtk_vbox_new(FALSE,2);
|
||||
gtk_container_add(GTK_CONTAINER(about),v);
|
||||
|
||||
h=gtk_hbox_new(FALSE,2);
|
||||
gtk_box_pack_start(GTK_BOX(v),h,FALSE,TRUE,2);
|
||||
|
||||
v2=gtk_vbox_new(FALSE,4);
|
||||
gtk_box_pack_start(GTK_BOX(h),v2,FALSE,FALSE,2);
|
||||
gtk_box_pack_start(GTK_BOX(v2),pi,FALSE,FALSE,6);
|
||||
|
||||
strcpy(tabout,"YAWMPPP\nYet Another PPP Dock Applet for Window Maker\n");
|
||||
strcat(tabout,"Version ");
|
||||
strcat(tabout,VERSION);
|
||||
strcat(tabout,"\nCopyright (C) 2000, 2001 Felipe Bergo\n");
|
||||
strcat(tabout,"email: bergo@seul.org\n\n");
|
||||
|
||||
strcat(tabout,"YAWMPPP is distributed under the terms of the GNU\n");
|
||||
strcat(tabout,"General Public License, version 2 or later.\n");
|
||||
strcat(tabout,"YAWMPPP comes with ABSOLUTELY NO WARRANTY;\n");
|
||||
strcat(tabout,"This is free software, and you are welcome to\n");
|
||||
strcat(tabout,"redistribute it under certain conditions.\n");
|
||||
strcat(tabout,"Read the file COPYING for details.\n\n");
|
||||
strcat(tabout,"To learn more about free software visit\n");
|
||||
strcat(tabout,"http://www.gnu.org\n");
|
||||
|
||||
text=gtk_label_new(tabout);
|
||||
gtk_box_pack_start(GTK_BOX(h),text,FALSE,TRUE,2);
|
||||
gtk_label_set_justify(GTK_LABEL(text),GTK_JUSTIFY_LEFT);
|
||||
|
||||
h2=gtk_hbox_new(TRUE,2);
|
||||
gtk_box_pack_start(GTK_BOX(v),h2,FALSE,TRUE,2);
|
||||
|
||||
for(i=0;i<3;i++) {
|
||||
p=gtk_label_new(" ");
|
||||
gtk_box_pack_start(GTK_BOX(h2),p,FALSE,FALSE,2);
|
||||
gtk_widget_show(p);
|
||||
}
|
||||
|
||||
b=gtk_button_new_with_label("Dismiss");
|
||||
gtk_box_pack_start(GTK_BOX(h2),b,FALSE,TRUE,4);
|
||||
|
||||
gtk_container_set_border_width(GTK_CONTAINER(about),6);
|
||||
|
||||
gtk_widget_show(b);
|
||||
gtk_widget_show(text);
|
||||
gtk_widget_show(pi);
|
||||
gtk_widget_show(h2);
|
||||
gtk_widget_show(h);
|
||||
gtk_widget_show(v2);
|
||||
gtk_widget_show(v);
|
||||
gtk_widget_show(about);
|
||||
gtk_signal_connect(GTK_OBJECT(b),"clicked",
|
||||
GTK_SIGNAL_FUNC(about_dismiss),NULL);
|
||||
gtk_grab_add(about);
|
||||
}
|
||||
|
||||
void
|
||||
about_dismiss(GtkWidget *wid,gpointer data)
|
||||
{
|
||||
gtk_grab_remove(about);
|
||||
gtk_widget_destroy(about);
|
||||
}
|
8
yawmppp/src/about.h
Normal file
8
yawmppp/src/about.h
Normal file
|
@ -0,0 +1,8 @@
|
|||
|
||||
#ifndef ABOUT_H
|
||||
#define ABOUT_H
|
||||
|
||||
void about_dismiss(GtkWidget *wid,gpointer data);
|
||||
void applet_about (GtkWidget * widget, gpointer data);
|
||||
|
||||
#endif
|
35
yawmppp/src/dockapp/Makefile.in
Normal file
35
yawmppp/src/dockapp/Makefile.in
Normal file
|
@ -0,0 +1,35 @@
|
|||
CC = @CC@
|
||||
LIBDIR = -L/usr/X11R6/lib -L@XLIB@
|
||||
LIBS = -lXpm -lXext -lX11
|
||||
CFLAGS = -O2 -Wall -I.. -I@XINC@
|
||||
RLFLAG = -DVERSION=\"@MK_YAWMPPP_RELEASE@\" -D@SYSDEF@
|
||||
OBJS = yawmppp.o wmgeneral.o
|
||||
DOTHS = yawmppp.h wmgeneral.h ../misc.h ../list.h ../isprc.h ../ycommon.h
|
||||
EOBJS = ../isprc.o ../ycommon.o ../misc.o ../list.o
|
||||
PROGINST = @INSTALL@
|
||||
PIXMAPS = dockxpm.xpm
|
||||
|
||||
all: yawmppp_bin getmodemspeed_bin
|
||||
|
||||
$(OBJS): %.o : %.c $(DOTHS) $(PIXMAPS)
|
||||
$(CC) -c $(CFLAGS) $(RLFLAG) $< -o $*.o
|
||||
|
||||
yawmppp_bin: $(OBJS)
|
||||
$(CC) -o yawmppp $^ $(EOBJS) -lXext $(LIBDIR) $(LIBS)
|
||||
|
||||
getmodemspeed_bin: getmodemspeed.c
|
||||
$(CC) $(CFLAGS) getmodemspeed.c -o yagetmodemspeed
|
||||
|
||||
clean:
|
||||
rm -f $(OBJS) yawmppp yagetmodemspeed
|
||||
|
||||
distclean:
|
||||
rm -f Makefile *~
|
||||
|
||||
install:
|
||||
$(PROGINST) -m 0755 yawmppp @prefix@/bin/yawmppp
|
||||
$(PROGINST) -m 0755 yagetmodemspeed /etc/ppp/yagetmodemspeed
|
||||
|
||||
install-strip:
|
||||
$(PROGINST) -s -m 0755 yawmppp @prefix@/bin/yawmppp
|
||||
$(PROGINST) -s -m 0755 yagetmodemspeed /etc/ppp/yagetmodemspeed
|
228
yawmppp/src/dockapp/dockxpm.xpm
Normal file
228
yawmppp/src/dockapp/dockxpm.xpm
Normal file
|
@ -0,0 +1,228 @@
|
|||
/* XPM */
|
||||
static char * dockxpm_xpm[] = {
|
||||
"64 192 33 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #202020",
|
||||
"@ c #C7C3C7",
|
||||
"# c #283C38",
|
||||
"$ c #F7F3FF",
|
||||
"% c #86828E",
|
||||
"& c #AEAAAE",
|
||||
"* c #139613",
|
||||
"= c #0FAA0F",
|
||||
"- c #0ABD0A",
|
||||
"; c #06CE06",
|
||||
"> c #04D604",
|
||||
", c #07CA07",
|
||||
"' c #0EAD0E",
|
||||
") c #09C109",
|
||||
"! c #00EA00",
|
||||
"~ c #0ABC0A",
|
||||
"{ c #05D305",
|
||||
"] c #11A111",
|
||||
"^ c #0CB70C",
|
||||
"/ c #188318",
|
||||
"( c #139713",
|
||||
"_ c #0FA90F",
|
||||
": c #B60418",
|
||||
"< c #00EB00",
|
||||
"[ c #E7C308",
|
||||
"} c #71E371",
|
||||
"| c #35C26D",
|
||||
"1 c #0F9846",
|
||||
"2 c #49C349",
|
||||
"3 c #1ADF69",
|
||||
"4 c #10773A",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ........................................................ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
|
||||
" .+++###+++###+++++++###+++###++++++++++++++++++++++++++@ ",
|
||||
" .++#+++#+#+++#++#++#+++#+#+++#+++#######+++#+++++##++++@ ",
|
||||
" .++#+++#+#+++#++#++#+++#+#+++#++++#####+++###+++####+++@ ",
|
||||
" .+++###+++###+++++++###+++###++++++###+++#####++####+++@ ",
|
||||
" .++#+++#+#+++#+++++#+++#+#+++#++++++#+++#######++##++++@ ",
|
||||
" .++#+++#+#+++#++#++#+++#+#+++#+++++++++++++++++++++++++@ ",
|
||||
" .+++###+++###+++#+++###+++###++++++++++++++++++++++++++@ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .######################################################@ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
|
||||
" .+####+####+####+####+####++++####+####+####++++++####+@ ",
|
||||
" .+#++#+#++#+#++#+#++#+#++#++++#++#+#++#+#++#++++++#++#+@ ",
|
||||
" .+#++#+#++#+#++#+#++#+#++#++++#++#+#++#+#++#+#++#+#++#+@ ",
|
||||
" .+####+####+####+####+####++++####+####+####+#+#++####+@ ",
|
||||
" .+#++#+#++#+#++#+#++#+#++#++++#++#+#++#+#++#+##+++#++#+@ ",
|
||||
" .+#++#+#++#+#++#+#++#+#++#++++#++#+#++#+#++#+#+#++#++#+@ ",
|
||||
" .+####+####+####+####+####++++####+####+####+#++#+####+@ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
|
||||
" .++++++++++++++++++++++++++++++++++++++++++++++++++++++@ ",
|
||||
" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ",
|
||||
" ",
|
||||
" ",
|
||||
" .......................... .......................... ",
|
||||
" .$$$$$$$$$$$%$$$$$$$$$$$%@ .$$$$$$$$$$$%$$$$$$$$$$$%@ ",
|
||||
" .$&&&&&&&&&&.$&&&&&&&&&&.@ .$&&&&&&&&&&.$&&&&&&&&&&.@ ",
|
||||
" .$&&&&&.&&&&.$&&&&.&&&&&.@ .$&&&&&&..&&.$&..&&&..&&.@ ",
|
||||
" .$&&&&..&&&&.$&&&&..&&&&.@ .$&&&&&...&&.$&...&...&&.@ ",
|
||||
" .$&&&...&&&&.$&&&&...&&&.@ .$&..&...&&&.$&&.....&&&.@ ",
|
||||
" .$&&....&&&&.$&&&&....&&.@ .$&.....&&&&.$&&&...&&&&.@ ",
|
||||
" .$&&&...&&&&.$&&&&...&&&.@ .$&....&&&&&.$&&.....&&&.@ ",
|
||||
" .$&&&&..&&&&.$&&&&..&&&&.@ .$&...&&&&&&.$&...&...&&.@ ",
|
||||
" .$&&&&&.&&&&.$&&&&.&&&&&.@ .$&..&&&&&&&.$&..&&&..&&.@ ",
|
||||
" .$&&&&&&&&&&.$&&&&&&&&&&.@ .$&&&&&&&&&&.$&&&&&&&&&&.@ ",
|
||||
" .%...........%...........@ .%...........%...........@ ",
|
||||
" @@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"...........%...........%$$$$$$$$$$$%$$$$$$$$$$$% #######+++#+++",
|
||||
".&&&&&&&&&&$.&&&&&&&&&&$$&&&&&&&&&&.$&&&&&&&&&&. +#####+++###++",
|
||||
".&&&&&&..&&$.&..&&&..&&$$&&&&&&..&&.$&..&&&..&&. ++###+++#####+",
|
||||
".&&&&&...&&$.&...&...&&$$&&&&&...&&.$&...&...&&. +++#+++#######",
|
||||
".&..&...&&&$.&&.....&&&$$&..&...&&&.$&&.....&&&. ",
|
||||
".&.....&&&&$.&&&...&&&&$$&.....&&&&.$&&&...&&&&. *=-;>;-+++,+++",
|
||||
".&....&&&&&$.&&.....&&&$$&....&&&&&.$&&.....&&&. +')>!>+++~{!++",
|
||||
".&...&&&&&&$.&...&...&&$$&...&&&&&&.$&...&...&&. ++-;>+++]^,{,+",
|
||||
".&..&&&&&&&$.&..&&&..&&$$&..&&&&&&&.$&..&&&..&&. +++-+++/(_^~^_",
|
||||
".&&&&&&&&&&$.&&&&&&&&&&$$&&&&&&&&&&.$&&&&&&&&&&. ",
|
||||
"%$$$$$$$$$$$%$$$$$$$$$$$%...........%........... ",
|
||||
" ",
|
||||
"...........%...........%$$$$$$$$$$$%$$$$$$$$$$$% +##+ +::+ ",
|
||||
".&&&&&&&&&&$.&&&&&&&&&&$$&&&&&&&&&&.$&&&&&&&&&&. #### :$:: ",
|
||||
".&&&&&.&&&&$.&&&&.&&&&&$$&&&&&.&&&&.$&&&&.&&&&&. #### :::: ",
|
||||
".&&&&..&&&&$.&&&&..&&&&$$&&&&..&&&&.$&&&&..&&&&. +##+ +::+ ",
|
||||
".&&&...&&&&$.&&&&...&&&$$&&&...&&&&.$&&&&...&&&. ",
|
||||
".&&....&&&&$.&&&&....&&$$&&....&&&&.$&&&&....&&. +<<+ +[[+ ",
|
||||
".&&&...&&&&$.&&&&...&&&$$&&&...&&&&.$&&&&...&&&. <$<< [$[[ ",
|
||||
".&&&&..&&&&$.&&&&..&&&&$$&&&&..&&&&.$&&&&..&&&&. <<<< [[[[ ",
|
||||
".&&&&&.&&&&$.&&&&.&&&&&$$&&&&&.&&&&.$&&&&.&&&&&. +<<+ +[[+ ",
|
||||
".&&&&&&&&&&$.&&&&&&&&&&$$&&&&&&&&&&.$&&&&&&&&&&. ",
|
||||
"%$$$$$$$$$$$%$$$$$$$$$$$%...........%........... }#|1} ",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
"###2+2}}2+2}}2+2##2+2}}2+2}}2+2}}2+2}}2+2}}2+2}}2+####+####+####",
|
||||
"#++}+#++}+#++}+}++}+}++#+}++#+#++}+}++}+}++}+}++}+#++#+#++#+#++#",
|
||||
"#++}+#++}+#++}+}++}+}++#+}++#+#++}+}++}+}++}+}++}+}++}+}++}+#++#",
|
||||
"###2+2}}2+2}}2+2}}2+2}}2+2}}2+###2+2}}2+2}}2+2##2+}#}#+}}}}+####",
|
||||
"#++}+}++#+#++}+#++}+#++}+}++}+#++}+}++}+#++}+}++}+}}+#+}++}+#++#",
|
||||
"#++}+}++#+#++}+#++}+#++}+}++}+#++}+}++}+#++}+}++}+}+}#+}++}+#++#",
|
||||
"###}+2}}2+2}}2+###2+2}}2+2}}2+###2+2}}2+2}}2+2}}2+}##}+}##}+####",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
"2}}2+2}}2+2}}2+2}}2+2}}2++++####+####+####++++++####++++++++++++",
|
||||
"}++#+}++}+}++}+}++}+}++}++++#++#+#++#+#++#++++++#++#++++++++++++",
|
||||
"}++#+}++}+}++}+}++}+}++}++++#++#+#++#+#++#+#++#+#++#++++++++++++",
|
||||
"2}}#+2}}++2}}++2##2+2}}+++++####+####+####+#+#++####++++++++++++",
|
||||
"}++#+}++}+}++}+}++}+}++}++++#++#+#++#+#++#+##+++#++#++++++++++++",
|
||||
"}++#+}++}+}++}+}++}+}++}++++#++#+#++#+#++#+#+#++#++#++++++++++++",
|
||||
"2}}2+2##2+2##2+2}}2+2##2++++####+####+####+#++#+####++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
"++###+++###+++++++###+++###+++++++++++++++++++++++++++++++++++++",
|
||||
"+#+++#+#+++#++#++#+++#+#+++#++++++++++++++++++++++++++++++++++++",
|
||||
"+#+++#+#+++#++#++#+++#+#+++#++++++++++++++++++++++++++++++++++++",
|
||||
"++###+++###+++++++###+++###+++++++++++++++++++++++++++++++++++++",
|
||||
"+#+++#+#+++#+++++#+++#+#+++#++++++++++++++++++++++++++++++++++++",
|
||||
"+#+++#+#+++#++#++#+++#+#+++#++++++++++++++++++++++++++++++++++++",
|
||||
"++###+++###+++#+++###+++###+++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
" ",
|
||||
" ",
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
"+#}}#+}}}#+#}}#+}}}#+}}}}+}}}}+#}}#+}##}+#}##+###}+}##}+}###+ ",
|
||||
"+}++}+}++}+}++}+}++}+}++#+}++#+}++#+}++}+#}+#+#++}+}++}+}++#+ ",
|
||||
"+}++}+}++}+}++#+}++}+}++#+}++#+}++#+}++}+#}+#+#++}+}+}#+}++#+ ",
|
||||
"+}}}}+}}}#+}###+}##}+}}}#+}}}#+}#}}+}}}}+#}##+###}+}}##+}###+ ",
|
||||
"+}++}+}++}+}++#+}++}+}++#+}++#+}++}+}++}+#}+#+#++}+}+}#+}++#+ ",
|
||||
"+}++}+}++}+}++}+}++}+}++#+}++#+}++}+}++}+#}+#+}++}+}++}+}++#+ ",
|
||||
"+}##}+}}}#+#}}#+}}}#+}}}}+}###+#}}#+}##}+#}##+#}}#+}##}+}}}}+ ",
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
"+}##}+}##}+#}}#+}}}#+#}}#+}}}#+#}}#+#}}}+}##}+}##}+}##}+}##}+ ",
|
||||
"+}}}}+}}+}+}++}+}++}+}++}+}++}+}++}+#+}#+}++}+}++}+}++}+}++}+ ",
|
||||
"+}++}+}+}}+}++}+}++}+}++}+}++}+}++#+#+}#+}++}+}++}+}++}+#}}#+ ",
|
||||
"+}##}+}##}+}##}+}}}#+}##}+}}}#+#}}#+##}#+}##}+}##}+}##}+#}}#+ ",
|
||||
"+}++}+}++}+}++}+}++#+}++}+}+}#+#++}+#+}#+}++}+}++}+}}}}+#}}#+ ",
|
||||
"+}++}+}++}+}++}+}++#+}+}#+}++}+}++}+#+}#+}++}+#}}#+}}}}+}++}+ ",
|
||||
"+}##}+}##}+#}}#+}###+#}#}+}##}+#}}#+##}#+}}}}+#}}#+}##}+}##}+ ",
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
"+}##}+}}}}+####+####+####+####+####+####+####+####+####+####+ ",
|
||||
"+}#+}+#++}+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+ ",
|
||||
"+}##}+#+}#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+ ",
|
||||
"+#}}#+#}##+####+####+####+####+####+####+####+####+####+####+ ",
|
||||
"+#+}#+#}+#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+ ",
|
||||
"+#+}#+}++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+#++#+ ",
|
||||
"+#}##+}}}}+####+####+####+####+####+####+####+####+####+####+ ",
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
"+#}}#+}###+####+###}+}}}}+#}}#+#}}#+}###+####+###}+####+}###+ ",
|
||||
"+}++}+}++#+#++#+#++}+}++#+}++}+}++#+}++#+#}+#+#++}+}++}+}++#+ ",
|
||||
"+}++}+}++#+#}}#+#++}+}++#+}++#+}++#+}++#+##+#+#++}+}+}#+}++#+ ",
|
||||
"+}}}}+}}}#+}##}+#}}}+}}}#+}}##+}#}}+}}}#+#}##+###}+}}##+}###+ ",
|
||||
"+}++}+}++}+}++#+}++}+}++#+}++#+}++}+}++}+#}+#+#++}+}+}#+}++#+ ",
|
||||
"+}++}+}++}+}++}+}++}+}++#+}++#+}++}+}++}+#}+#+}++}+}++}+}++#+ ",
|
||||
"+}##}+}}}#+#}}#+#}}}+}}}}+}###+#}}#+}##}+#}##+#}}#+}##}+#}}#+ ",
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
"+}##}+####+####+}}}#+#}}#+####+#}}#+####+####+}##}+}##}+}##}+ ",
|
||||
"+}}}}+##+#+#++#+}++}+}++}+#++#+}++}+#+}#+#++#+}++}+}++}+}++}+ ",
|
||||
"+}++}+#+##+#++#+}++}+}++}+#++#+}++#+#+}#+#++#+}++}+}++}+#}}#+ ",
|
||||
"+}##}+}#}}+#}}#+}}}#+}##}+}#}#+#}}#+#}}}+}##}+}##}+}##}+#}}#+ ",
|
||||
"+}++}+}}+}+}++}+}++#+}++}+}}#}+#++}+#+}#+}++}+}++}+}}}}+#}}#+ ",
|
||||
"+}++}+}++}+}++}+}++#+}+}#+}++#+}++}+#+}#+}++}+#}}#+}}}}+}++}+ ",
|
||||
"+}##}+}##}+#}}#+}###+#}#}+}###+#}}#+##}#+#}}#+#}}#+}##}+}##}+ ",
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
"+}##}+####+2}}2+###2+2}}2+2}}2+2##2+2}}2+2}}2+2}}2+2}}2+2}}2+ ",
|
||||
"+}#+}+#++#+}++}+#+}}+#++}+#++}+}++}+}++#+}++#+#++}+}++}+}++}+ ",
|
||||
"+}##}+}}}}+}++}+#++}+#++}+#++}+}++}+}++#+}++#+#++}+}++}+}++}+ ",
|
||||
"+#}}#+###}+2##2+###2+2}}2+2}}2+2}}2+2}}2+2}}2+###2+2}}2+2}}2+ ",
|
||||
"+#+}#+#}}#+}++}+#++}+}++#+#++}+#++}+#++}+}++}+#++}+}++}+#++}+ ",
|
||||
"+#+}#+}++#+}++}+#++}+}++#+#++}+#++}+#++}+}++}+#++}+}++}+#++}+ ",
|
||||
"+#}##+}}}}+2}}2+###}+2}}2+2}}2+###2+2}}2+2}}2+###2+2}}2+2}}2+ ",
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
"+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ",
|
||||
" ",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
"++333+++###4+43334+43334+4###4+43334+43334+43334+43334+43334++++",
|
||||
"+3+++3+#+++3+#+++3+#+++3+3+++3+3+++#+3+++#+#+++3+3+++3+3+++3++3+",
|
||||
"+3+++3+#+++3+#+++3+#+++3+3+++3+3+++#+3+++#+#+++3+3+++3+3+++3++4+",
|
||||
"+4###4++###4+43334++3334+43334+43334+43334++###4+43334+43334++++",
|
||||
"+3+++3+#+++3+3+++#+#+++3+#+++3+#+++3+3+++3+#+++3+3+++3+#+++3++++",
|
||||
"+3+++3+#+++3+3+++#+#+++3+#+++3+#+++3+3+++3+#+++3+3+++3+#+++3++3+",
|
||||
"++333+++###4+43334+43334++###4+43334+43334++###4+43334+43334++4+",
|
||||
"++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
17
yawmppp/src/dockapp/getmodemspeed.c
Normal file
17
yawmppp/src/dockapp/getmodemspeed.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(void) {
|
||||
|
||||
FILE *fd;
|
||||
char temp[256];
|
||||
|
||||
fd = popen("tac /etc/ppp/connect-errors | grep '['CONNECT'|'CARRIER']' | head -1", "r");
|
||||
|
||||
while (fgets(temp, 256, fd)) {
|
||||
printf("%s", temp);
|
||||
}
|
||||
|
||||
pclose(fd);
|
||||
|
||||
return 0;
|
||||
}
|
369
yawmppp/src/dockapp/wmgeneral.c
Normal file
369
yawmppp/src/dockapp/wmgeneral.c
Normal file
|
@ -0,0 +1,369 @@
|
|||
/*
|
||||
|
||||
WMPPP - PPP dock app/helper for WindowMaker
|
||||
Copyright (C) 1997-2000:
|
||||
|
||||
Authors: Martijn Pieterse (pieterse@xs4all.nl)
|
||||
Antoine Nulle (warp@xs4all.nl)
|
||||
Felipe Bergo (bergo@seul.org)
|
||||
|
||||
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 <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"
|
||||
|
||||
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;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int enable;
|
||||
int top;
|
||||
int bottom;
|
||||
int left;
|
||||
int right;
|
||||
}
|
||||
MOUSE_REGION;
|
||||
|
||||
MOUSE_REGION mouse_region[MAX_MOUSE_REGION];
|
||||
|
||||
static void GetXPM (XpmIcon *, char **);
|
||||
static Pixel GetColor (char *);
|
||||
void RedrawWindow (void);
|
||||
void AddMouseRegion (int, int, int, int, int);
|
||||
int CheckMouseRegion (int, int);
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
static int
|
||||
flush_expose (Window w)
|
||||
{
|
||||
|
||||
XEvent dummy;
|
||||
int i = 0;
|
||||
|
||||
while (XCheckTypedWindowEvent (display, w, Expose, &dummy))
|
||||
i++;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
void
|
||||
createXBMfromXPM (char *xbm, char **xpm, int sx, int sy)
|
||||
{
|
||||
|
||||
int i, j;
|
||||
int width, height, numcol;
|
||||
char zero;
|
||||
unsigned char bwrite;
|
||||
int bcount;
|
||||
|
||||
|
||||
sscanf (*xpm, "%d %d %d", &width, &height, &numcol);
|
||||
|
||||
zero = xpm[1][0];
|
||||
for (i = numcol + 1; i < numcol + sy + 1; i++)
|
||||
{
|
||||
bcount = 0;
|
||||
bwrite = 0;
|
||||
for (j = 0; j < sx; j++)
|
||||
{
|
||||
bwrite >>= 1;
|
||||
if (xpm[i][j] != zero)
|
||||
{
|
||||
bwrite += 128;
|
||||
}
|
||||
bcount++;
|
||||
if (bcount == 8)
|
||||
{
|
||||
*xbm = bwrite;
|
||||
xbm++;
|
||||
bcount = 0;
|
||||
bwrite = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
void
|
||||
setMaskXY (int x, int y)
|
||||
{
|
||||
|
||||
XShapeCombineMask (display, win, ShapeBounding, x, y, pixmask, ShapeSet);
|
||||
XShapeCombineMask (display, iconwin, ShapeBounding, x, y, pixmask, ShapeSet);
|
||||
}
|
||||
|
||||
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];
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
42
yawmppp/src/dockapp/wmgeneral.h
Normal file
42
yawmppp/src/dockapp/wmgeneral.h
Normal file
|
@ -0,0 +1,42 @@
|
|||
#ifndef WMGENERAL_H_INCLUDED
|
||||
#define WMGENERAL_H_INCLUDED
|
||||
|
||||
/***********/
|
||||
/* Defines */
|
||||
/***********/
|
||||
|
||||
#define MAX_MOUSE_REGION (16)
|
||||
|
||||
/************/
|
||||
/* Typedefs */
|
||||
/************/
|
||||
|
||||
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);
|
||||
|
||||
#endif
|
991
yawmppp/src/dockapp/yawmppp.c
Normal file
991
yawmppp/src/dockapp/yawmppp.c
Normal file
|
@ -0,0 +1,991 @@
|
|||
/*
|
||||
|
||||
YAWMPPP - PPP dock app/helper for WindowMaker
|
||||
Copyright (C) 2000,2001:
|
||||
|
||||
Author: Felipe Bergo (bergo@seul.org)
|
||||
|
||||
based on the wmppp application by
|
||||
|
||||
Martijn Pieterse (pieterse@xs4all.nl)
|
||||
Antoine Nulle (warp@xs4all.nl)
|
||||
|
||||
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
|
||||
|
||||
$Id: yawmppp.c,v 1.1.1.1 2001/02/22 07:16:01 bergo Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <ctype.h>
|
||||
#include <signal.h>
|
||||
|
||||
#include <sys/wait.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/param.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/xpm.h>
|
||||
#include <X11/extensions/shape.h>
|
||||
|
||||
#include "wmgeneral.h"
|
||||
#include "misc.h"
|
||||
#include "isprc.h"
|
||||
#include "ycommon.h"
|
||||
|
||||
#include "dockxpm.xpm"
|
||||
#include "yawmppp.h"
|
||||
|
||||
/* external vars */
|
||||
|
||||
extern char **environ;
|
||||
|
||||
/* global variables */
|
||||
|
||||
long starttime;
|
||||
|
||||
char *ProgName;
|
||||
char *active_interface = "ppp0";
|
||||
int TimerDivisor = 60;
|
||||
int updaterate = 5;
|
||||
|
||||
int dock_mask_width = 64;
|
||||
int dock_mask_height = 64;
|
||||
char dock_mask_bits[64 * 64];
|
||||
|
||||
int current_isp = 0;
|
||||
int num_isps = 0;
|
||||
|
||||
int got_sched=0;
|
||||
int caution=1;
|
||||
|
||||
struct YAWMPPP_ISP_INFO IspData[MAX_ISPS];
|
||||
|
||||
/* log data */
|
||||
struct {
|
||||
time_t start;
|
||||
time_t end;
|
||||
int status; /* 0=ok 1=error 2=crash */
|
||||
char longname[128];
|
||||
char shortname[16];
|
||||
char phone[32];
|
||||
char user[32];
|
||||
} logconn;
|
||||
|
||||
/* PPP variables */
|
||||
|
||||
#define PPP_UNIT 0
|
||||
int ppp_h = -1;
|
||||
int ppp_open = 0;
|
||||
|
||||
#define PPP_STATS_HIS 54
|
||||
|
||||
int pixels_per_byte;
|
||||
|
||||
int ppp_history[PPP_STATS_HIS + 1][2];
|
||||
|
||||
/* main */
|
||||
|
||||
int
|
||||
main (int argc, char *argv[])
|
||||
{
|
||||
|
||||
int i;
|
||||
|
||||
/* 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 'c':
|
||||
caution=1;
|
||||
break;
|
||||
case 'd':
|
||||
if (strcmp (arg + 1, "display"))
|
||||
{
|
||||
usage ();
|
||||
exit (1);
|
||||
}
|
||||
break;
|
||||
case 'g':
|
||||
if (strcmp (arg + 1, "geometry"))
|
||||
{
|
||||
usage ();
|
||||
exit (1);
|
||||
}
|
||||
break;
|
||||
case 'i':
|
||||
if (!argv[i + 1])
|
||||
{
|
||||
usage ();
|
||||
exit (1);
|
||||
}
|
||||
if (strncmp (argv[i + 1], "ppp", 3))
|
||||
{
|
||||
usage ();
|
||||
exit (1);
|
||||
}
|
||||
active_interface = argv[i + 1];
|
||||
i++;
|
||||
break;
|
||||
case 'p':
|
||||
caution=2;
|
||||
break;
|
||||
case 't':
|
||||
TimerDivisor = 1;
|
||||
break;
|
||||
case 'u':
|
||||
i++;
|
||||
if (!argv[i])
|
||||
{
|
||||
usage ();
|
||||
exit (1);
|
||||
}
|
||||
updaterate = atoi (argv[i]);
|
||||
if (updaterate < 1 || updaterate > 10)
|
||||
{
|
||||
usage ();
|
||||
exit (1);
|
||||
}
|
||||
break;
|
||||
case 'v':
|
||||
printversion ();
|
||||
exit (0);
|
||||
break;
|
||||
case 'z':
|
||||
printf("Caution level: %d\n",caution);
|
||||
break;
|
||||
default:
|
||||
usage ();
|
||||
exit (0);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_ISPS; i++)
|
||||
memset(&IspData[i],0,sizeof(struct YAWMPPP_ISP_INFO));
|
||||
|
||||
make_config_dir();
|
||||
signal(SIGUSR1,sigusr_handler);
|
||||
signal(SIGHUP,sigusr_handler);
|
||||
signal(SIGINT,sigusr_handler);
|
||||
signal(SIGTERM,sigusr_handler);
|
||||
|
||||
write_pid_file();
|
||||
clean_guards();
|
||||
|
||||
yawmppp_routine (argc, argv);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
yawmppp_routine (int argc, char **argv)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
int but_stat;
|
||||
|
||||
long currenttime;
|
||||
long lasttime;
|
||||
long waittime;
|
||||
long ppptime;
|
||||
int hour, minute;
|
||||
long timetolog;
|
||||
|
||||
long ppp_send, ppp_sl = -1;
|
||||
long ppp_recv, ppp_rl = -1;
|
||||
long ppp_sbytes, ppp_rbytes;
|
||||
long ppp_osbytes, ppp_orbytes;
|
||||
|
||||
struct stat st;
|
||||
|
||||
pid_t stop_child = 0;
|
||||
pid_t start_child = 0;
|
||||
int status;
|
||||
|
||||
int isonline = 0;
|
||||
|
||||
XEvent Event;
|
||||
|
||||
int speed_ind = 10;
|
||||
|
||||
/* Initialize some stuff */
|
||||
|
||||
get_statistics (active_interface, &ppp_rl, &ppp_sl,
|
||||
&ppp_orbytes, &ppp_osbytes);
|
||||
if (caution>0)
|
||||
close_ppp();
|
||||
|
||||
grab_isp_info(1);
|
||||
|
||||
/* Open the display */
|
||||
|
||||
createXBMfromXPM (dock_mask_bits, dockxpm_xpm,
|
||||
dock_mask_width, dock_mask_height);
|
||||
|
||||
openXwindow (argc, argv, dockxpm_xpm, dock_mask_bits,
|
||||
dock_mask_width, dock_mask_height);
|
||||
|
||||
/* V Button */
|
||||
AddMouseRegion (0, 35, 48, 46, 58);
|
||||
/* x Button */
|
||||
AddMouseRegion (1, 47, 48, 58, 58);
|
||||
|
||||
/* < Button */
|
||||
AddMouseRegion (2, 5, 48, 16, 58);
|
||||
/* > Button */
|
||||
AddMouseRegion (3, 17, 48, 28, 58);
|
||||
/* ISP display */
|
||||
AddMouseRegion (4, 5, 6, 59, 43);
|
||||
|
||||
starttime = 0;
|
||||
currenttime = time (0);
|
||||
ppptime = 0;
|
||||
but_stat = -1;
|
||||
waittime = 0;
|
||||
timetolog=0;
|
||||
|
||||
/* 888k8 on bottom */
|
||||
copyXPMArea (ERR_SRC_X+28, ERR_SRC_Y+9, 25, 8, ERR_DEST_X, ERR_DEST_Y);
|
||||
|
||||
DrawISPName ();
|
||||
|
||||
while (1)
|
||||
{
|
||||
lasttime = currenttime;
|
||||
currenttime = time (0);
|
||||
|
||||
/* Check if any child has left the playground */
|
||||
i = waitpid (0, &status, WNOHANG);
|
||||
if (i == stop_child && stop_child != 0)
|
||||
{
|
||||
|
||||
starttime = 0;
|
||||
SetOffLED (LED_PPP_POWER);
|
||||
SetOffLED (LED_PPP_RX);
|
||||
SetOffLED (LED_PPP_TX);
|
||||
/* 888k8 on bottom */
|
||||
copyXPMArea (ERR_SRC_X+28, ERR_SRC_Y+9, 25, 8,
|
||||
ERR_DEST_X, ERR_DEST_Y);
|
||||
RedrawWindow ();
|
||||
|
||||
stop_child = 0;
|
||||
}
|
||||
if (i == start_child && start_child != 0)
|
||||
{
|
||||
if (WIFEXITED (status))
|
||||
{
|
||||
if (WEXITSTATUS (status) == 10)
|
||||
{
|
||||
|
||||
starttime = 0;
|
||||
/* 88k8 on bottom */
|
||||
copyXPMArea (ERR_SRC_X+28, ERR_SRC_Y+9, 25, 8,
|
||||
ERR_DEST_X, ERR_DEST_Y);
|
||||
SetOffLED (LED_PPP_POWER);
|
||||
DrawTime (0, 1);
|
||||
RedrawWindow ();
|
||||
}
|
||||
start_child = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* On-line detectie! 1x per second */
|
||||
|
||||
if (currenttime != lasttime)
|
||||
{
|
||||
i = 0;
|
||||
|
||||
if (stillonline (active_interface))
|
||||
{
|
||||
i = 1;
|
||||
if (!starttime)
|
||||
{
|
||||
starttime = currenttime;
|
||||
|
||||
if (stat (STAMP_FILE, &st) == 0)
|
||||
starttime = st.st_mtime;
|
||||
|
||||
SetOnLED (LED_PPP_POWER);
|
||||
waittime = 0;
|
||||
|
||||
/* 88k8 on bottom */
|
||||
copyXPMArea (ERR_SRC_X+28, ERR_SRC_Y+9, 25, 8,
|
||||
ERR_DEST_X, ERR_DEST_Y);
|
||||
|
||||
if (IspData[current_isp].SpeedAction)
|
||||
DrawSpeedInd (IspData[current_isp].SpeedAction);
|
||||
|
||||
speed_ind = currenttime + 10;
|
||||
|
||||
RedrawWindow ();
|
||||
}
|
||||
}
|
||||
if (!i && starttime)
|
||||
{
|
||||
starttime = 0;
|
||||
SetErrLED (LED_PPP_POWER);
|
||||
logconn.status=1;
|
||||
|
||||
/* Error */
|
||||
copyXPMArea (ERR_SRC_X, ERR_SRC_Y+9, 25, 8,
|
||||
ERR_DEST_X, ERR_DEST_Y);
|
||||
|
||||
if (IspData[current_isp].IfDownAction)
|
||||
execCommand (IspData[current_isp].IfDownAction);
|
||||
|
||||
RedrawWindow ();
|
||||
}
|
||||
}
|
||||
|
||||
if (waittime && waittime <= currenttime)
|
||||
{
|
||||
SetOffLED (LED_PPP_POWER);
|
||||
RedrawWindow ();
|
||||
waittime = 0;
|
||||
}
|
||||
|
||||
if ((starttime)&&(!isonline)) {
|
||||
isonline=1;
|
||||
|
||||
logconn.start=time(NULL);
|
||||
logconn.status=0;
|
||||
strcpy(logconn.longname,IspData[current_isp].LongName);
|
||||
strcpy(logconn.shortname,IspData[current_isp].ShortName);
|
||||
strcpy(logconn.user,IspData[current_isp].User);
|
||||
strcpy(logconn.phone,IspData[current_isp].Phone);
|
||||
|
||||
if (!strlen(logconn.shortname))
|
||||
strcpy(logconn.shortname,"empty");
|
||||
if (!strlen(logconn.longname))
|
||||
strcpy(logconn.longname,"empty");
|
||||
if (!strlen(logconn.user))
|
||||
strcpy(logconn.user,"empty");
|
||||
if (!strlen(logconn.phone))
|
||||
strcpy(logconn.phone,"empty");
|
||||
|
||||
make_guards();
|
||||
}
|
||||
if ((!starttime)&&(isonline)) {
|
||||
isonline=0;
|
||||
logconn.end=time(NULL);
|
||||
write_log();
|
||||
if (got_sched)
|
||||
make_delayed_update();
|
||||
if (caution>0)
|
||||
close_ppp();
|
||||
}
|
||||
|
||||
/* If we are on-line. Print the time we are */
|
||||
if (starttime)
|
||||
{
|
||||
i = currenttime - starttime;
|
||||
|
||||
i /= TimerDivisor;
|
||||
|
||||
if (TimerDivisor == 1)
|
||||
if (i > 59 * 60 + 59)
|
||||
i /= 60;
|
||||
|
||||
minute = i % 60;
|
||||
hour = (i / 60) % 100;
|
||||
i = hour * 100 + minute;
|
||||
|
||||
DrawTime (i, currenttime % 2);
|
||||
/* We are online, so we can check for send/recv packets */
|
||||
|
||||
get_statistics (active_interface, &ppp_recv, &ppp_send,
|
||||
&ppp_rbytes, &ppp_sbytes);
|
||||
if (caution>1)
|
||||
close_ppp();
|
||||
|
||||
if (ppp_send != ppp_sl)
|
||||
SetOnLED (LED_PPP_TX);
|
||||
else
|
||||
SetOffLED (LED_PPP_TX);
|
||||
|
||||
if (ppp_recv != ppp_rl)
|
||||
SetOnLED (LED_PPP_RX);
|
||||
else
|
||||
SetOffLED (LED_PPP_RX);
|
||||
|
||||
ppp_sl = ppp_send;
|
||||
ppp_rl = ppp_recv;
|
||||
|
||||
/* Every five seconds we check to load on the line */
|
||||
|
||||
if (currenttime - timetolog >= 0) {
|
||||
timetolog=currenttime + 60;
|
||||
make_guards();
|
||||
}
|
||||
|
||||
if ((currenttime - ppptime >= 0) || (ppptime == 0))
|
||||
{
|
||||
|
||||
ppptime = currenttime + updaterate;
|
||||
|
||||
ppp_history[PPP_STATS_HIS][0] = ppp_rbytes - ppp_orbytes;
|
||||
ppp_history[PPP_STATS_HIS][1] = ppp_sbytes - ppp_osbytes;
|
||||
|
||||
ppp_orbytes = ppp_rbytes;
|
||||
ppp_osbytes = ppp_sbytes;
|
||||
|
||||
DrawStats (54, 17, 5, 32);
|
||||
|
||||
for (j = 1; j < 55; j++)
|
||||
{
|
||||
ppp_history[j - 1][0] = ppp_history[j][0];
|
||||
ppp_history[j - 1][1] = ppp_history[j][1];
|
||||
}
|
||||
if (currenttime > speed_ind)
|
||||
{
|
||||
DrawLoadInd ((ppp_history[54][0] + ppp_history[54][1]) / updaterate);
|
||||
}
|
||||
}
|
||||
|
||||
RedrawWindow ();
|
||||
}
|
||||
|
||||
|
||||
while (XPending (display))
|
||||
{
|
||||
XNextEvent (display, &Event);
|
||||
switch (Event.type)
|
||||
{
|
||||
case Expose:
|
||||
RedrawWindow ();
|
||||
break;
|
||||
case DestroyNotify:
|
||||
XCloseDisplay (display);
|
||||
while (start_child | stop_child)
|
||||
{
|
||||
i = waitpid (0, &status, WNOHANG);
|
||||
if (i == stop_child)
|
||||
stop_child = 0;
|
||||
if (i == start_child)
|
||||
start_child = 0;
|
||||
usleep (50000l);
|
||||
}
|
||||
exit (0);
|
||||
break;
|
||||
case ButtonPress:
|
||||
i = CheckMouseRegion (Event.xbutton.x, Event.xbutton.y);
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
ButtonDown (BUT_V);
|
||||
break;
|
||||
case 1:
|
||||
ButtonDown (BUT_X);
|
||||
break;
|
||||
case 2:
|
||||
ButtonDown (BUT_REW);
|
||||
break;
|
||||
case 3:
|
||||
ButtonDown (BUT_FF);
|
||||
break;
|
||||
}
|
||||
but_stat = i;
|
||||
|
||||
RedrawWindow ();
|
||||
break;
|
||||
case ButtonRelease:
|
||||
i = CheckMouseRegion (Event.xbutton.x, Event.xbutton.y);
|
||||
// Button but_stat omhoogdoen!
|
||||
switch (but_stat)
|
||||
{
|
||||
case 0:
|
||||
ButtonUp (BUT_V);
|
||||
break;
|
||||
case 1:
|
||||
ButtonUp (BUT_X);
|
||||
break;
|
||||
case 2:
|
||||
ButtonUp (BUT_REW);
|
||||
break;
|
||||
case 3:
|
||||
ButtonUp (BUT_FF);
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == but_stat && but_stat >= 0)
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
if (!starttime)
|
||||
{
|
||||
/* 888k8 */
|
||||
copyXPMArea (ERR_SRC_X+28, ERR_SRC_Y+9,
|
||||
25, 8,
|
||||
ERR_DEST_X, ERR_DEST_Y);
|
||||
DrawTime (0, 1);
|
||||
start_child = execCommand (IspData[current_isp].StartAction);
|
||||
SetWaitLED (LED_PPP_POWER);
|
||||
waittime = ORANGE_LED_TIMEOUT + currenttime;
|
||||
}
|
||||
|
||||
break;
|
||||
case 1:
|
||||
if (stop_child == 0)
|
||||
{
|
||||
stop_child = execCommand (IspData[current_isp].StopAction);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (!starttime)
|
||||
{
|
||||
current_isp--;
|
||||
if (current_isp < 0)
|
||||
current_isp = num_isps - 1;
|
||||
if (current_isp < 0)
|
||||
current_isp=0;
|
||||
DrawISPName ();
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (!starttime)
|
||||
{
|
||||
current_isp++;
|
||||
if (current_isp == num_isps)
|
||||
current_isp = 0;
|
||||
DrawISPName ();
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
if (Event.xbutton.button==Button1)
|
||||
run_pref_app();
|
||||
else
|
||||
run_log_app();
|
||||
break;
|
||||
}
|
||||
}
|
||||
RedrawWindow ();
|
||||
|
||||
but_stat = -1;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
usleep (50000L);
|
||||
}
|
||||
}
|
||||
|
||||
/* DrawTime */
|
||||
|
||||
void
|
||||
DrawTime (int i, int j)
|
||||
{
|
||||
|
||||
int k = 1000;
|
||||
|
||||
copyXPMArea (TIMER_SZE_X * ((i / k) % 10) + 1, TIMER_SRC_Y,
|
||||
5, 7,
|
||||
TIMER_DES_X + 6 * 0, TIMER_DES_Y);
|
||||
k = k / 10;
|
||||
copyXPMArea (TIMER_SZE_X * ((i / k) % 10) + 1, TIMER_SRC_Y,
|
||||
5, 7,
|
||||
TIMER_DES_X + 6 * 1, TIMER_DES_Y);
|
||||
k = k / 10;
|
||||
|
||||
/* colon */
|
||||
if (j)
|
||||
copyXPMArea (62, TIMER_SRC_Y,
|
||||
1, 7,
|
||||
TIMER_DES_X + 6 * 2 + 1, TIMER_DES_Y);
|
||||
else
|
||||
copyXPMArea (63, TIMER_SRC_Y,
|
||||
1, 7,
|
||||
TIMER_DES_X + 6 * 2 + 1, TIMER_DES_Y);
|
||||
|
||||
copyXPMArea (TIMER_SZE_X * ((i / k) % 10) + 1, TIMER_SRC_Y,
|
||||
5, 7,
|
||||
TIMER_DES_X + 6 * 2 + 4, TIMER_DES_Y);
|
||||
k = k / 10;
|
||||
copyXPMArea (TIMER_SZE_X * ((i / k) % 10) + 1, TIMER_SRC_Y,
|
||||
5, 7,
|
||||
TIMER_DES_X + 6 * 3 + 4, TIMER_DES_Y);
|
||||
}
|
||||
|
||||
void
|
||||
DrawStats (int num, int size, int x_left, int y_bottom)
|
||||
{
|
||||
|
||||
int pixels_per_byte;
|
||||
int j, k;
|
||||
|
||||
pixels_per_byte = size;
|
||||
for (j = 0; j < num; j++)
|
||||
if ((ppp_history[j][0]+ppp_history[j][1]) > pixels_per_byte)
|
||||
pixels_per_byte = ppp_history[j][0] + ppp_history[j][1];
|
||||
|
||||
pixels_per_byte /= size;
|
||||
|
||||
for (k = 0; k < num; k++)
|
||||
for (j = 0; j < size; j++)
|
||||
{
|
||||
if (j < (ppp_history[k][0] / pixels_per_byte))
|
||||
copyXPMArea (58 + 2, 92, 1, 1, k + x_left, y_bottom - j);
|
||||
else if (j < (ppp_history[k][0] + ppp_history[k][1]) / pixels_per_byte)
|
||||
copyXPMArea (58 + 1, 92, 1, 1, k + x_left, y_bottom - j);
|
||||
else
|
||||
copyXPMArea (58 + 0, 92, 1, 1, k + x_left, y_bottom - j);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
PrintLittle (int i, int *k)
|
||||
{
|
||||
|
||||
switch (i)
|
||||
{
|
||||
case -1:
|
||||
*k -= 5;
|
||||
copyXPMArea (12 * 5, ERR_SRC_Y, 4, 8, *k, ERR_DEST_Y);
|
||||
break;
|
||||
case 0:
|
||||
*k -= 5;
|
||||
copyXPMArea (45, ERR_SRC_Y, 5, 8, *k, ERR_DEST_Y);
|
||||
break;
|
||||
default:
|
||||
*k -= 5;
|
||||
copyXPMArea (i * 5 - 5, ERR_SRC_Y, 5, 8, *k, ERR_DEST_Y);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
DrawSpeedInd (char *speed_action)
|
||||
{
|
||||
|
||||
int linespeed, i, k;
|
||||
FILE *fp;
|
||||
char *p;
|
||||
char temp[128];
|
||||
|
||||
fp = popen (speed_action, "r");
|
||||
|
||||
if (fp)
|
||||
{
|
||||
linespeed = 0;
|
||||
|
||||
while (fgets (temp, 128, fp))
|
||||
;
|
||||
|
||||
pclose (fp);
|
||||
|
||||
if ((p = strstr (temp, "CONNECT")))
|
||||
{
|
||||
linespeed = atoi (p + 8);
|
||||
}
|
||||
|
||||
k = ERR_DEST_X+25;
|
||||
|
||||
i = (linespeed % 1000) / 100;
|
||||
linespeed /= 1000;
|
||||
PrintLittle (i, &k);
|
||||
|
||||
k -= 5;
|
||||
copyXPMArea (ERR_SRC_X+50, ERR_SRC_Y, 5, 8, k, ERR_DEST_Y);
|
||||
|
||||
do
|
||||
{
|
||||
PrintLittle (linespeed % 10, &k);
|
||||
linespeed /= 10;
|
||||
}
|
||||
while (linespeed);
|
||||
}
|
||||
}
|
||||
|
||||
/* DrawLoadInd */
|
||||
|
||||
void
|
||||
DrawLoadInd (int speed)
|
||||
{
|
||||
|
||||
int i, k;
|
||||
|
||||
k = ERR_DEST_X+25;
|
||||
for (i = 0; i < 5; i++)
|
||||
PrintLittle (-1, &k);
|
||||
|
||||
k = ERR_DEST_X+25;
|
||||
|
||||
do
|
||||
{
|
||||
PrintLittle (speed % 10, &k);
|
||||
speed /= 10;
|
||||
}
|
||||
while (speed);
|
||||
}
|
||||
|
||||
/* usage */
|
||||
|
||||
void
|
||||
usage (void)
|
||||
{
|
||||
fprintf (stderr,
|
||||
"\nyawmppp - Yet Another Window Maker PPP dock applet\n\n");
|
||||
fprintf (stderr,
|
||||
"version %s\n\n",VERSION);
|
||||
fprintf (stderr, "usage:\n");
|
||||
fprintf (stderr, "-h this help screen\n");
|
||||
fprintf (stderr, "-i <device> (ppp0, ppp1, etc)\n");
|
||||
fprintf (stderr, "-t set the on-line timer to MM:SS instead of HH:MM\n");
|
||||
fprintf (stderr, "-u <update rate> (1..10), default 5 seconds\n");
|
||||
fprintf (stderr, "-v print the version number\n");
|
||||
fprintf (stderr, "-paranoid be paranoid about open sockets\n");
|
||||
fprintf (stderr, "\n");
|
||||
}
|
||||
|
||||
/* printversion */
|
||||
|
||||
void
|
||||
printversion (void)
|
||||
{
|
||||
fprintf (stderr, "%s\n", VERSION);
|
||||
}
|
||||
|
||||
/* SetOnLED */
|
||||
|
||||
void
|
||||
SetOnLED (int led)
|
||||
{
|
||||
switch (led)
|
||||
{
|
||||
case LED_PPP_POWER:
|
||||
copyXPMArea (LED_ON_X, LED_ON_Y, LED_SZE_X, LED_SZE_Y, LED_PWR_X, LED_PWR_Y);
|
||||
break;
|
||||
case LED_PPP_RX:
|
||||
copyXPMArea (ARR_DN_X, ARR_DN_Y+ARR_ACTV, ARR_W, ARR_H, LED_RCV_X, LED_RCV_Y);
|
||||
break;
|
||||
case LED_PPP_TX:
|
||||
copyXPMArea (ARR_UP_X, ARR_UP_Y+ARR_ACTV, ARR_W, ARR_H, LED_SND_X, LED_SND_Y);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* SetOffLED */
|
||||
|
||||
void
|
||||
SetOffLED (int led)
|
||||
{
|
||||
|
||||
switch (led)
|
||||
{
|
||||
case LED_PPP_POWER:
|
||||
copyXPMArea (LED_OFF_X, LED_OFF_Y, LED_SZE_X, LED_SZE_Y, LED_PWR_X, LED_PWR_Y);
|
||||
break;
|
||||
case LED_PPP_RX:
|
||||
copyXPMArea (ARR_DN_X, ARR_DN_Y , ARR_W, ARR_H, LED_RCV_X, LED_RCV_Y);
|
||||
break;
|
||||
case LED_PPP_TX:
|
||||
copyXPMArea (ARR_UP_X, ARR_UP_Y, ARR_W, ARR_H, LED_SND_X, LED_SND_Y);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/* SetErrELD */
|
||||
|
||||
void
|
||||
SetErrLED (int led)
|
||||
{
|
||||
|
||||
switch (led)
|
||||
{
|
||||
case LED_PPP_POWER:
|
||||
copyXPMArea (LED_ERR_X, LED_ERR_Y, LED_SZE_X, LED_SZE_Y, LED_PWR_X, LED_PWR_Y);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* SetWaitLED */
|
||||
|
||||
void
|
||||
SetWaitLED (int led)
|
||||
{
|
||||
|
||||
switch (led)
|
||||
{
|
||||
case LED_PPP_POWER:
|
||||
copyXPMArea (LED_WTE_X, LED_WTE_Y, LED_SZE_X, LED_SZE_Y, LED_PWR_X, LED_PWR_Y);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Button Up */
|
||||
|
||||
void
|
||||
ButtonUp (int button)
|
||||
{
|
||||
|
||||
switch (button)
|
||||
{
|
||||
case BUT_V:
|
||||
copyXPMArea (BUT_V_SRC_X+BUT_UP_INC, BUT_V_SRC_Y,
|
||||
12, 11,
|
||||
BUT_V_X, BUT_V_Y);
|
||||
break;
|
||||
case BUT_X:
|
||||
copyXPMArea (BUT_X_SRC_X+BUT_UP_INC, BUT_X_SRC_Y,
|
||||
12, 11,
|
||||
BUT_X_X, BUT_X_Y);
|
||||
break;
|
||||
case BUT_REW:
|
||||
copyXPMArea (BUT_R_SRC_X+BUT_UP_INC, BUT_R_SRC_Y,
|
||||
12, 11,
|
||||
BUT_R_X, BUT_R_Y);
|
||||
break;
|
||||
case BUT_FF:
|
||||
copyXPMArea (BUT_F_SRC_X+BUT_UP_INC, BUT_F_SRC_Y,
|
||||
12, 11,
|
||||
BUT_F_X, BUT_F_Y);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Button Down */
|
||||
|
||||
void
|
||||
ButtonDown (int button)
|
||||
{
|
||||
|
||||
switch (button)
|
||||
{
|
||||
case BUT_V:
|
||||
copyXPMArea (BUT_V_SRC_X, BUT_V_SRC_Y,
|
||||
12, 11,
|
||||
BUT_V_X, BUT_V_Y);
|
||||
break;
|
||||
case BUT_X:
|
||||
copyXPMArea (BUT_X_SRC_X, BUT_X_SRC_Y,
|
||||
12, 11,
|
||||
BUT_X_X, BUT_X_Y);
|
||||
break;
|
||||
case BUT_REW:
|
||||
copyXPMArea (BUT_R_SRC_X, BUT_R_SRC_Y,
|
||||
12, 11,
|
||||
BUT_R_X, BUT_R_Y);
|
||||
break;
|
||||
case BUT_FF:
|
||||
copyXPMArea (BUT_F_SRC_X, BUT_F_SRC_Y,
|
||||
12, 11,
|
||||
BUT_F_X, BUT_F_Y);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
DrawISPName (void)
|
||||
{
|
||||
int i, s;
|
||||
|
||||
s = strlen (IspData[current_isp].ShortName);
|
||||
for (i = 0; i < 5; i++)
|
||||
{
|
||||
if (s >= (i + 1))
|
||||
draw_isp_char (i, IspData[current_isp].ShortName[i]);
|
||||
else
|
||||
draw_isp_char (i, ' ');
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
draw_isp_char (int pos, char letter)
|
||||
{
|
||||
int sx = 0, sy = 0, ac = 0;
|
||||
|
||||
if ((!ac) && (letter >= 'A') && (letter <= 'Z'))
|
||||
{
|
||||
sx = UPPER_ABC_BASE_X;
|
||||
sy = UPPER_ABC_BASE_Y;
|
||||
sy += 8 * ((letter - 'A') / 12);
|
||||
sx += 5 * ((letter - 'A') % 12);
|
||||
ac = 1;
|
||||
}
|
||||
if ((!ac) && (letter >= 'a') && (letter <= 'z'))
|
||||
{
|
||||
sx = LOWER_ABC_BASE_X;
|
||||
sy = LOWER_ABC_BASE_Y;
|
||||
sy += 8 * ((letter - 'a') / 12);
|
||||
sx += 5 * ((letter - 'a') % 12);
|
||||
ac = 1;
|
||||
}
|
||||
if ((!ac) && (letter >= '0') && (letter <= '9'))
|
||||
{
|
||||
sx = DIGIT_BASE_X;
|
||||
sy = DIGIT_BASE_Y;
|
||||
sx += 5 * (letter - '0');
|
||||
ac = 1;
|
||||
}
|
||||
if (!ac)
|
||||
{
|
||||
sx = SPACE_BASE_X;
|
||||
sy = SPACE_BASE_Y;
|
||||
}
|
||||
|
||||
copyXPMArea (sx, sy, 4, 7, ISP_BASE_X + 5 * pos, ISP_BASE_Y);
|
||||
}
|
||||
|
||||
void
|
||||
sigusr_handler(int signum)
|
||||
{
|
||||
if (signum==SIGUSR1) {
|
||||
if (!starttime) {
|
||||
grab_isp_info(0);
|
||||
if (current_isp>=num_isps)
|
||||
current_isp=0;
|
||||
DrawISPName();
|
||||
RedrawWindow();
|
||||
} else {
|
||||
got_sched=1;
|
||||
warn_pref();
|
||||
}
|
||||
}
|
||||
else {
|
||||
remove_pid_file();
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
make_delayed_update(void)
|
||||
{
|
||||
grab_isp_info(0);
|
||||
if (current_isp>=num_isps)
|
||||
current_isp=0;
|
||||
DrawISPName();
|
||||
RedrawWindow();
|
||||
got_sched=0;
|
||||
}
|
||||
|
142
yawmppp/src/dockapp/yawmppp.h
Normal file
142
yawmppp/src/dockapp/yawmppp.h
Normal file
|
@ -0,0 +1,142 @@
|
|||
/* DEFINES */
|
||||
|
||||
#define START_ACTION (NULL)
|
||||
#define STOP_ACTION (NULL)
|
||||
#define SPEED_ACTION (NULL)
|
||||
#define IFDOWN_ACTION (NULL)
|
||||
|
||||
#define STAMP_FILE "/var/run/ppp0.pid"
|
||||
|
||||
#define LED_PPP_RX (1)
|
||||
#define LED_PPP_TX (2)
|
||||
#define LED_PPP_POWER (3)
|
||||
|
||||
#define BUT_V (1)
|
||||
#define BUT_X (2)
|
||||
#define BUT_REW (3)
|
||||
#define BUT_FF (4)
|
||||
|
||||
#define TIMER_SRC_Y (176)
|
||||
#define TIMER_DES_Y (8)
|
||||
#define TIMER_DES_X (7)
|
||||
#define TIMER_SZE_X (6)
|
||||
|
||||
#define LED_ON_X (51)
|
||||
#define LED_ON_Y (87)
|
||||
#define LED_OFF_X (51)
|
||||
#define LED_OFF_Y (82)
|
||||
|
||||
#define LED_ERR_X (57)
|
||||
#define LED_ERR_Y (82)
|
||||
#define LED_WTE_X (57)
|
||||
#define LED_WTE_Y (87)
|
||||
#define LED_SZE_X (4)
|
||||
#define LED_SZE_Y (4)
|
||||
|
||||
#define LED_PWR_X (52)
|
||||
#define LED_PWR_Y (9)
|
||||
#define LED_SND_X (44)
|
||||
#define LED_SND_Y (9)
|
||||
#define LED_RCV_X (37)
|
||||
#define LED_RCV_Y (9)
|
||||
|
||||
#define ISP_BASE_X (6)
|
||||
#define ISP_BASE_Y (35)
|
||||
|
||||
#define UPPER_ABC_BASE_X (1)
|
||||
#define UPPER_ABC_BASE_Y (124)
|
||||
#define LOWER_ABC_BASE_X (1)
|
||||
#define LOWER_ABC_BASE_Y (148)
|
||||
#define DIGIT_BASE_X (11)
|
||||
#define DIGIT_BASE_Y (164)
|
||||
#define SPACE_BASE_X (11)
|
||||
#define SPACE_BASE_Y (140)
|
||||
|
||||
#define ERR_DEST_X (34)
|
||||
#define ERR_DEST_Y (35)
|
||||
|
||||
#define ERR_SRC_X (0)
|
||||
#define ERR_SRC_Y (94)
|
||||
|
||||
#define BUT_V_X (35)
|
||||
#define BUT_V_Y (48)
|
||||
#define BUT_X_X (47)
|
||||
#define BUT_X_Y (48)
|
||||
#define BUT_R_X (5)
|
||||
#define BUT_R_Y (48)
|
||||
#define BUT_F_X (17)
|
||||
#define BUT_F_Y (48)
|
||||
|
||||
#define BUT_V_SRC_X (0)
|
||||
#define BUT_V_SRC_Y (70)
|
||||
#define BUT_X_SRC_X (12)
|
||||
#define BUT_X_SRC_Y (70)
|
||||
|
||||
#define BUT_R_SRC_X (0)
|
||||
#define BUT_R_SRC_Y (82)
|
||||
#define BUT_F_SRC_X (12)
|
||||
#define BUT_F_SRC_Y (82)
|
||||
|
||||
#define BUT_UP_INC (24)
|
||||
|
||||
#define ARR_UP_X (50)
|
||||
#define ARR_UP_Y (70)
|
||||
#define ARR_DN_X (57)
|
||||
#define ARR_DN_Y (70)
|
||||
|
||||
#define ARR_ACTV (5)
|
||||
|
||||
#define ARR_W (7)
|
||||
#define ARR_H (4)
|
||||
|
||||
#define ORANGE_LED_TIMEOUT (60)
|
||||
|
||||
/* prototypes */
|
||||
|
||||
void usage (void);
|
||||
void printversion (void);
|
||||
void DrawTime (int, int);
|
||||
void DrawStats (int, int, int, int);
|
||||
void DrawSpeedInd (char *);
|
||||
void DrawLoadInd (int);
|
||||
void DrawISPName (void);
|
||||
|
||||
void SetOnLED (int);
|
||||
void SetErrLED (int);
|
||||
void SetWaitLED (int);
|
||||
void SetOffLED (int);
|
||||
|
||||
void ButtonUp (int);
|
||||
void ButtonDown (int);
|
||||
|
||||
void yawmppp_routine (int, char **);
|
||||
|
||||
int get_statistics (char *, long *, long *, long *, long *);
|
||||
int stillonline (char *);
|
||||
|
||||
void draw_isp_char (int, char);
|
||||
void grab_isp_info (int);
|
||||
|
||||
void sigusr_handler(int signum);
|
||||
void remove_pid_file(void);
|
||||
void write_pid_file(void);
|
||||
void make_config_dir(void);
|
||||
|
||||
void run_pref_app(void);
|
||||
void run_log_app(void);
|
||||
|
||||
void add_dns(void);
|
||||
void remove_dns(void);
|
||||
|
||||
void warn_pref(void);
|
||||
void make_delayed_update(void);
|
||||
|
||||
/* logs */
|
||||
void clean_guards(void);
|
||||
void make_guards(void);
|
||||
void write_log(void);
|
||||
|
||||
/* pcmcia blues ? */
|
||||
|
||||
void open_ppp(void);
|
||||
void close_ppp(void);
|
35
yawmppp/src/gtklog/Makefile.in
Normal file
35
yawmppp/src/gtklog/Makefile.in
Normal file
|
@ -0,0 +1,35 @@
|
|||
#
|
||||
# gtklog: shows yawmppp log files
|
||||
#
|
||||
|
||||
CC = @CC@
|
||||
CFLAGS = -Wall -O2
|
||||
GTKLIB = @GTK_LIBS@
|
||||
GTKFLAG = @GTK_FLAGS@
|
||||
RLFLAG = -DVERSION=\"@MK_YAWMPPP_RELEASE@\"
|
||||
PROGINST = @INSTALL@
|
||||
EOBJS = ../about.o
|
||||
|
||||
ALLDOTOS = loglist.o
|
||||
ALLDOTHS = loglist.h
|
||||
|
||||
all: build_gtklog
|
||||
|
||||
build_gtklog: $(ALLDOTOS)
|
||||
$(CC) $(ALLDOTOS) $(EOBJS) -o yawmppp.log $(GTKLIB)
|
||||
|
||||
$(ALLDOTOS): %.o : %.c $(ALLDOTHS)
|
||||
$(CC) $(CFLAGS) $(RLFLAG) $(GTKFLAG) -I.. -c $< -o $@
|
||||
|
||||
install:
|
||||
$(PROGINST) -m 0755 yawmppp.log @prefix@/bin/yawmppp.log
|
||||
|
||||
install-strip:
|
||||
$(PROGINST) -s -m 0755 yawmppp.log @prefix@/bin/yawmppp.log
|
||||
|
||||
clean:
|
||||
rm -f $(ALLDOTOS) yawmppp.log
|
||||
|
||||
distclean:
|
||||
rm -f Makefile *~
|
||||
|
875
yawmppp/src/gtklog/loglist.c
Normal file
875
yawmppp/src/gtklog/loglist.c
Normal file
|
@ -0,0 +1,875 @@
|
|||
/*
|
||||
|
||||
YAWMPPP - PPP dock app/helper for WindowMaker
|
||||
Copyright (C) 2000:
|
||||
|
||||
Author: Felipe Bergo (bergo@seul.org)
|
||||
|
||||
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
|
||||
|
||||
$Id: loglist.c,v 1.1.1.1 2001/02/22 07:35:59 bergo Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include "loglist.h"
|
||||
#include "about.h"
|
||||
|
||||
#include "status_error.xpm"
|
||||
#include "status_crash.xpm"
|
||||
#include "status_ok.xpm"
|
||||
#include "stepphone.xpm"
|
||||
|
||||
GtkWidget *applet,*loglist,*lresume[2],*hgraph,*wgraph;
|
||||
GdkPixmap *iconmap[3];
|
||||
GdkBitmap *maskmap[3];
|
||||
|
||||
GdkPixmap *hcanvas=NULL;
|
||||
GdkPixmap *wcanvas=NULL;
|
||||
|
||||
GList *log=NULL;
|
||||
|
||||
/* start end difftime statuspix staustext handle name phone user */
|
||||
static int colsize[8]={160,160,64,54,45,110,64,64};
|
||||
|
||||
static char *resumeo[]=
|
||||
{
|
||||
"All time",
|
||||
"Today",
|
||||
"Yesterday",
|
||||
"This week",
|
||||
"This month",
|
||||
"This year",
|
||||
"Last 24 hours",
|
||||
"Last 7 days",
|
||||
"Last 30 days",
|
||||
"Last 365 days"
|
||||
};
|
||||
|
||||
static char *titles[8]={"Start time",
|
||||
"End time",
|
||||
"Online time",
|
||||
"Status",
|
||||
"ISP",
|
||||
"Dialup entry",
|
||||
"Phone",
|
||||
"User"};
|
||||
|
||||
static char *wdays[]={
|
||||
"Sun","Mon","Tue","Wed","Thu","Fri","Sat"
|
||||
};
|
||||
|
||||
static long hourly[24],weekly[7];
|
||||
|
||||
int nsrc[256];
|
||||
|
||||
GList *users=NULL;
|
||||
GList *isps=NULL;
|
||||
|
||||
/* constraints */
|
||||
|
||||
time_t time_cons[2];
|
||||
int useridx,ispidx;
|
||||
|
||||
int
|
||||
main(int argc,char **argv)
|
||||
{
|
||||
int i;
|
||||
|
||||
for(i=0;i<24;i++)
|
||||
hourly[i]=0;
|
||||
for(i=0;i<7;i++)
|
||||
weekly[i]=0;
|
||||
for(i=0;i<256;i++)
|
||||
nsrc[i]=i;
|
||||
|
||||
time_cons[0]=0;
|
||||
time_cons[1]=0;
|
||||
useridx=ispidx=0;
|
||||
|
||||
gtk_init(&argc,&argv);
|
||||
gdk_rgb_init();
|
||||
load_log();
|
||||
create_loglist();
|
||||
update_list();
|
||||
|
||||
make_resume();
|
||||
|
||||
gtk_main();
|
||||
|
||||
g_list_free(users);
|
||||
g_list_free(isps);
|
||||
for(i=0;i<3;i++)
|
||||
gdk_pixmap_unref(iconmap[i]);
|
||||
|
||||
free_log();
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
create_loglist(void)
|
||||
{
|
||||
GtkWidget *mvb,*sw,*dhb,*dhw[30];
|
||||
GdkBitmap *mask;
|
||||
GdkPixmap *myicon;
|
||||
GtkStyle *style;
|
||||
GList *pt;
|
||||
int i;
|
||||
|
||||
applet=gtk_window_new(GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_default_size(GTK_WINDOW(applet),780,510);
|
||||
gtk_window_set_title (GTK_WINDOW (applet), "YAWMPPP Connection Log");
|
||||
gtk_window_set_wmclass(GTK_WINDOW(applet),"yawmppp","log");
|
||||
gtk_container_set_border_width(GTK_CONTAINER(applet),4);
|
||||
gtk_widget_show (applet);
|
||||
|
||||
style=gtk_widget_get_style(applet);
|
||||
myicon = gdk_pixmap_create_from_xpm_d (applet->window, &mask,
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
(gchar **) stepphone_xpm);
|
||||
gdk_window_set_icon (applet->window, NULL, myicon, mask);
|
||||
gdk_window_set_icon_name(applet->window,"The Log");
|
||||
|
||||
mvb=gtk_vbox_new(FALSE,0);
|
||||
gtk_container_add(GTK_CONTAINER(applet),mvb);
|
||||
|
||||
dhb=gtk_hbox_new(FALSE,0);
|
||||
gtk_box_pack_start(GTK_BOX(mvb),dhb,FALSE,TRUE,0);
|
||||
|
||||
/* data */
|
||||
dhw[0]=gtk_label_new("Show summary for:");
|
||||
gtk_box_pack_start(GTK_BOX(dhb),dhw[0],FALSE,FALSE,4);
|
||||
|
||||
dhw[1]=gtk_option_menu_new();
|
||||
gtk_box_pack_start(GTK_BOX(dhb),dhw[1],FALSE,FALSE,2);
|
||||
|
||||
dhw[2]=gtk_menu_new();
|
||||
|
||||
for(i=0;i<10;i++) {
|
||||
dhw[3]=gtk_menu_item_new_with_label(resumeo[i]);
|
||||
gtk_signal_connect(GTK_OBJECT(dhw[3]),"activate",
|
||||
GTK_SIGNAL_FUNC(time_menu),&nsrc[i]);
|
||||
gtk_menu_append(GTK_MENU(dhw[2]),dhw[3]);
|
||||
gtk_widget_show(dhw[3]);
|
||||
}
|
||||
|
||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(dhw[1]),dhw[2]);
|
||||
|
||||
dhw[12]=gtk_label_new("include entries from");
|
||||
gtk_box_pack_start(GTK_BOX(dhb),dhw[12],FALSE,FALSE,4);
|
||||
dhw[13]=gtk_option_menu_new();
|
||||
gtk_box_pack_start(GTK_BOX(dhb),dhw[13],FALSE,FALSE,2);
|
||||
|
||||
dhw[14]=gtk_menu_new();
|
||||
|
||||
for(i=0,pt=isps;pt!=NULL;pt=g_list_next(pt),i++) {
|
||||
dhw[3]=gtk_menu_item_new_with_label((char *)(pt->data));
|
||||
gtk_signal_connect(GTK_OBJECT(dhw[3]),"activate",
|
||||
GTK_SIGNAL_FUNC(isp_menu),&nsrc[i]);
|
||||
gtk_menu_append(GTK_MENU(dhw[14]),dhw[3]);
|
||||
gtk_widget_show(dhw[3]);
|
||||
}
|
||||
|
||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(dhw[13]),dhw[14]);
|
||||
|
||||
|
||||
dhw[15]=gtk_label_new("include connections as");
|
||||
gtk_box_pack_start(GTK_BOX(dhb),dhw[15],FALSE,FALSE,4);
|
||||
dhw[16]=gtk_option_menu_new();
|
||||
gtk_box_pack_start(GTK_BOX(dhb),dhw[16],FALSE,FALSE,2);
|
||||
|
||||
dhw[17]=gtk_menu_new();
|
||||
|
||||
for(i=0,pt=users;pt!=NULL;pt=g_list_next(pt),i++) {
|
||||
dhw[3]=gtk_menu_item_new_with_label((char *)(pt->data));
|
||||
gtk_signal_connect(GTK_OBJECT(dhw[3]),"activate",
|
||||
GTK_SIGNAL_FUNC(user_menu),&nsrc[i]);
|
||||
gtk_menu_append(GTK_MENU(dhw[17]),dhw[3]);
|
||||
gtk_widget_show(dhw[3]);
|
||||
}
|
||||
|
||||
gtk_option_menu_set_menu(GTK_OPTION_MENU(dhw[16]),dhw[17]);
|
||||
|
||||
dhw[5]=gtk_hseparator_new();
|
||||
gtk_box_pack_start(GTK_BOX(mvb),dhw[5],FALSE,FALSE,3);
|
||||
|
||||
dhw[3]=gtk_hbox_new(FALSE,4);
|
||||
gtk_box_pack_start(GTK_BOX(mvb),dhw[3],FALSE,TRUE,3);
|
||||
|
||||
dhw[4]=lresume[0]=gtk_label_new("\n\n\n\n\n");
|
||||
dhw[6]=lresume[1]=gtk_label_new("\n\n\n\n\n");
|
||||
|
||||
for(i=0;i<2;i++)
|
||||
gtk_label_set_justify(GTK_LABEL(lresume[i]),GTK_JUSTIFY_LEFT);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(dhw[3]),dhw[4],FALSE,TRUE,4);
|
||||
gtk_box_pack_start(GTK_BOX(dhw[3]),dhw[6],FALSE,TRUE,4);
|
||||
|
||||
hgraph=dhw[7]=gtk_drawing_area_new();
|
||||
gtk_drawing_area_size(GTK_DRAWING_AREA(dhw[7]),24*9+2,120);
|
||||
gtk_widget_set_events(dhw[7],GDK_EXPOSURE_MASK);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(dhw[3]),dhw[7],FALSE,FALSE,4);
|
||||
|
||||
wgraph=dhw[8]=gtk_drawing_area_new();
|
||||
gtk_drawing_area_size(GTK_DRAWING_AREA(dhw[8]),7*20+2,120);
|
||||
gtk_widget_set_events(dhw[8],GDK_EXPOSURE_MASK);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(dhw[3]),dhw[8],FALSE,FALSE,4);
|
||||
|
||||
dhw[11]=gtk_hseparator_new();
|
||||
gtk_box_pack_start(GTK_BOX(mvb),dhw[11],FALSE,FALSE,4);
|
||||
|
||||
dhw[9]=gtk_hbox_new(FALSE,2);
|
||||
dhw[10]=gtk_label_new("Raw log listing (unfiltered):");
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(mvb),dhw[9],FALSE,FALSE,4);
|
||||
gtk_box_pack_start(GTK_BOX(dhw[9]),dhw[10],FALSE,FALSE,2);
|
||||
|
||||
/* list */
|
||||
|
||||
sw=gtk_scrolled_window_new(NULL,NULL);
|
||||
gtk_box_pack_start(GTK_BOX(mvb),sw,TRUE,TRUE,4);
|
||||
gtk_widget_show(sw);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(sw),0);
|
||||
|
||||
loglist=gtk_clist_new(8);
|
||||
gtk_clist_set_shadow_type(GTK_CLIST(loglist),GTK_SHADOW_IN);
|
||||
gtk_clist_set_selection_mode(GTK_CLIST(loglist),GTK_SELECTION_SINGLE);
|
||||
for(i=0;i<8;i++) {
|
||||
gtk_clist_set_column_title(GTK_CLIST(loglist),i,titles[i]);
|
||||
gtk_clist_set_column_width(GTK_CLIST(loglist),i,colsize[i]);
|
||||
}
|
||||
gtk_clist_column_titles_passive(GTK_CLIST(loglist));
|
||||
gtk_clist_column_titles_show(GTK_CLIST(loglist));
|
||||
gtk_clist_set_row_height(GTK_CLIST(loglist),16);
|
||||
gtk_clist_set_column_auto_resize(GTK_CLIST(loglist),1,FALSE);
|
||||
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw),
|
||||
GTK_POLICY_AUTOMATIC,
|
||||
GTK_POLICY_ALWAYS);
|
||||
gtk_container_add(GTK_CONTAINER(sw),loglist);
|
||||
gtk_widget_show(loglist);
|
||||
|
||||
/* bottom */
|
||||
|
||||
dhw[18]=gtk_hseparator_new();
|
||||
gtk_box_pack_start(GTK_BOX(mvb),dhw[18],FALSE,FALSE,4);
|
||||
|
||||
dhw[19]=gtk_table_new(1,6,TRUE);
|
||||
dhw[21]=gtk_button_new_with_label(" About... ");
|
||||
dhw[22]=gtk_button_new_with_label(" Close ");
|
||||
|
||||
dhw[23]=gtk_hbox_new(TRUE,6);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(mvb),dhw[19],FALSE,FALSE,4);
|
||||
|
||||
gtk_table_attach_defaults(GTK_TABLE(dhw[19]),dhw[23],4,6,0,1);
|
||||
|
||||
gtk_box_pack_start(GTK_BOX(dhw[23]),dhw[21],FALSE,TRUE,4);
|
||||
gtk_box_pack_start(GTK_BOX(dhw[23]),dhw[22],FALSE,TRUE,4);
|
||||
|
||||
for(i=0;i<24;i++)
|
||||
if (i!=20)
|
||||
gtk_widget_show(dhw[i]);
|
||||
gtk_widget_show(dhb);
|
||||
gtk_widget_show(mvb);
|
||||
|
||||
iconmap[0] = gdk_pixmap_create_from_xpm_d (applet->window, &maskmap[0],
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
(gchar **) status_ok_xpm);
|
||||
iconmap[1] = gdk_pixmap_create_from_xpm_d (applet->window, &maskmap[1],
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
(gchar **) status_error_xpm);
|
||||
iconmap[2] = gdk_pixmap_create_from_xpm_d (applet->window, &maskmap[2],
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
(gchar **) status_crash_xpm);
|
||||
|
||||
/* signal plumbing */
|
||||
gtk_signal_connect (GTK_OBJECT (applet), "delete_event",
|
||||
GTK_SIGNAL_FUNC (applet_kill), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (applet), "destroy",
|
||||
GTK_SIGNAL_FUNC (applet_destroy), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (hgraph), "expose_event",
|
||||
GTK_SIGNAL_FUNC (hgra_expose), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (hgraph), "configure_event",
|
||||
GTK_SIGNAL_FUNC (hgra_configure), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (wgraph), "expose_event",
|
||||
GTK_SIGNAL_FUNC (wgra_expose), NULL);
|
||||
gtk_signal_connect (GTK_OBJECT (wgraph), "configure_event",
|
||||
GTK_SIGNAL_FUNC (wgra_configure), NULL);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (dhw[21]), "clicked",
|
||||
GTK_SIGNAL_FUNC (applet_about),
|
||||
(gpointer)GTK_WINDOW(applet));
|
||||
gtk_signal_connect (GTK_OBJECT (dhw[22]), "clicked",
|
||||
GTK_SIGNAL_FUNC (applet_destroy), NULL);
|
||||
}
|
||||
|
||||
void
|
||||
load_log(void)
|
||||
{
|
||||
FILE *f;
|
||||
char *p;
|
||||
char temp[256],aux[256];
|
||||
GList *pt;
|
||||
struct logentry *le;
|
||||
|
||||
if (users)
|
||||
g_list_free(users);
|
||||
if (isps)
|
||||
g_list_free(isps);
|
||||
users=NULL;
|
||||
isps=NULL;
|
||||
|
||||
users=g_list_append(users,"All users");
|
||||
isps=g_list_append(isps,"All ISPs");
|
||||
|
||||
p=getenv("HOME");
|
||||
sprintf(temp,"%s/.yawmppp2/logfile",p);
|
||||
|
||||
if (log)
|
||||
free_log();
|
||||
|
||||
f=fopen(temp,"r");
|
||||
if (!f)
|
||||
return;
|
||||
|
||||
while(fgets(aux,255,f))
|
||||
prepend_log_entry(aux);
|
||||
|
||||
fclose(f);
|
||||
|
||||
for(pt=log;pt!=NULL;pt=g_list_next(pt)) {
|
||||
le=(struct logentry *)(pt->data);
|
||||
|
||||
if (!already_exists(le->user,users)) {
|
||||
users=g_list_append(users,(gpointer)(le->user));
|
||||
}
|
||||
|
||||
if (!already_exists(le->shortname,isps))
|
||||
isps=g_list_append(isps,(gpointer)(le->shortname));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
prepend_log_entry(char *logline)
|
||||
{
|
||||
char *p;
|
||||
struct logentry *le;
|
||||
|
||||
le=(struct logentry *)g_malloc0(sizeof(struct logentry));
|
||||
|
||||
if ((p=strtok(logline,"\t\n"))==NULL) { g_free(le); return; }
|
||||
le->start=(time_t)atol(p);
|
||||
|
||||
if ((p=strtok(NULL,"\t\n"))==NULL) { g_free(le); return; }
|
||||
le->end=(time_t)atol(p);
|
||||
|
||||
if ((p=strtok(NULL,"\t\n"))==NULL) { g_free(le); return; }
|
||||
le->status=atoi(p);
|
||||
|
||||
if ((p=strtok(NULL,"\t\n"))==NULL) { g_free(le); return; }
|
||||
strncpy(le->longname,p,128);
|
||||
|
||||
if ((p=strtok(NULL,"\t\n"))==NULL) { g_free(le); return; }
|
||||
strncpy(le->shortname,p,16);
|
||||
|
||||
if ((p=strtok(NULL,"\t\n"))==NULL) { g_free(le); return; }
|
||||
strncpy(le->phone,p,32);
|
||||
|
||||
if ((p=strtok(NULL,"\t\n"))==NULL) { g_free(le); return; }
|
||||
strncpy(le->user,p,32);
|
||||
|
||||
log=g_list_prepend(log,(gpointer)(le));
|
||||
}
|
||||
|
||||
void
|
||||
free_log(void)
|
||||
{
|
||||
GList *pt;
|
||||
|
||||
for(pt=log;pt!=NULL;pt=g_list_next(pt))
|
||||
g_free(pt->data);
|
||||
|
||||
g_list_free(log);
|
||||
log=NULL;
|
||||
}
|
||||
|
||||
void
|
||||
update_list(void)
|
||||
{
|
||||
GList *pt;
|
||||
struct logentry *le;
|
||||
char tmp[8][128];
|
||||
gchar *pp[8];
|
||||
int ontime,h,m,s,i;
|
||||
int lc;
|
||||
|
||||
gtk_clist_freeze(GTK_CLIST(loglist));
|
||||
gtk_clist_clear(GTK_CLIST(loglist));
|
||||
|
||||
for(i=0;i<8;i++)
|
||||
pp[i]=tmp[i];
|
||||
|
||||
for(lc=0,pt=log;pt!=NULL;pt=g_list_next(pt),lc++) {
|
||||
le=(struct logentry *)(pt->data);
|
||||
strcpy(tmp[0],ctime(&(le->start)));
|
||||
strcpy(tmp[1],ctime(&(le->end)));
|
||||
ontime=(int)(le->end - le->start);
|
||||
h=ontime/3600;
|
||||
ontime-=3600*h;
|
||||
m=ontime/60;
|
||||
ontime-=60*m;
|
||||
s=ontime;
|
||||
sprintf(tmp[2],"%.4d:%.2d:%.2d",h,m,s);
|
||||
switch(le->status) {
|
||||
case 0:
|
||||
strcpy(tmp[3],"OK");
|
||||
break;
|
||||
case 1:
|
||||
strcpy(tmp[3],"Error");
|
||||
break;
|
||||
default:
|
||||
strcpy(tmp[3],"Crash");
|
||||
}
|
||||
strcpy(tmp[4],le->shortname);
|
||||
strcpy(tmp[5],le->longname);
|
||||
strcpy(tmp[6],le->phone);
|
||||
strcpy(tmp[7],le->user);
|
||||
|
||||
gtk_clist_append(GTK_CLIST(loglist),pp);
|
||||
gtk_clist_set_pixtext(GTK_CLIST(loglist),lc,3,
|
||||
tmp[3],6,
|
||||
iconmap[le->status%3],
|
||||
maskmap[le->status%3]);
|
||||
}
|
||||
|
||||
gtk_clist_thaw(GTK_CLIST(loglist));
|
||||
}
|
||||
|
||||
|
||||
gint
|
||||
applet_kill (GtkWidget * widget, GdkEvent * event, gpointer data)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
applet_destroy (GtkWidget * widget, gpointer data)
|
||||
{
|
||||
gtk_main_quit();
|
||||
}
|
||||
|
||||
void
|
||||
make_resume(void)
|
||||
{
|
||||
static char temp[1024],aux[256];
|
||||
GList *pt;
|
||||
long olt,ldiff,avg,maior,menor;
|
||||
struct logentry *le;
|
||||
int h,m,s,
|
||||
i,n,t,
|
||||
j,o,u,
|
||||
k,p,v;
|
||||
int ec;
|
||||
int sv[3];
|
||||
|
||||
for(i=0;i<24;i++)
|
||||
hourly[i]=0;
|
||||
for(i=0;i<7;i++)
|
||||
weekly[i]=0;
|
||||
|
||||
strcpy(temp,"Summary:\n\n");
|
||||
|
||||
olt=0;
|
||||
sv[0]=sv[1]=sv[2]=0;
|
||||
ec=0;
|
||||
maior=0;
|
||||
menor=time(NULL); /* unless you've been wired since
|
||||
Jan 1 1970 this will work... ;-) */
|
||||
for(pt=log;pt!=NULL;pt=g_list_next(pt)) {
|
||||
le=(struct logentry *)(pt->data);
|
||||
|
||||
if (time_cons[1]!=0)
|
||||
if ((le->end < time_cons[0])||(le->start > time_cons[1]))
|
||||
continue;
|
||||
if (useridx)
|
||||
if (strcmp((char *)(g_list_nth_data(users,useridx)),le->user))
|
||||
continue;
|
||||
if (ispidx)
|
||||
if (strcmp((char *)(g_list_nth_data(isps,ispidx)),le->shortname))
|
||||
continue;
|
||||
|
||||
ec++;
|
||||
ldiff=(le->end - le->start);
|
||||
olt+=ldiff;
|
||||
sv[le->status]++;
|
||||
add_hourly(le->start,le->end);
|
||||
add_weekly(le->start,le->end);
|
||||
|
||||
if (ldiff>maior)
|
||||
maior=ldiff;
|
||||
if (ldiff<menor)
|
||||
menor=ldiff;
|
||||
}
|
||||
|
||||
sprintf(aux,"Connections: %d\n"\
|
||||
"Disconnected OK: %d\n"\
|
||||
"Disconnected Error: %d\n"\
|
||||
"Disconnected Crash: %d\n",ec,sv[0],sv[1],sv[2]);
|
||||
strcat(temp,aux);
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(lresume[0]),temp);
|
||||
|
||||
if (ec)
|
||||
avg=olt/ec;
|
||||
else
|
||||
avg=0;
|
||||
|
||||
h=olt/3600;
|
||||
olt-=3600*h;
|
||||
m=olt/60;
|
||||
olt-=60*m;
|
||||
s=olt;
|
||||
|
||||
i=avg/3600;
|
||||
avg-=3600*i;
|
||||
n=avg/60;
|
||||
avg-=60*n;
|
||||
t=avg;
|
||||
|
||||
j=maior/3600;
|
||||
maior-=3600*j;
|
||||
o=maior/60;
|
||||
maior-=60*o;
|
||||
u=maior;
|
||||
|
||||
k=menor/3600;
|
||||
menor-=3600*k;
|
||||
p=menor/60;
|
||||
menor-=60*p;
|
||||
v=menor;
|
||||
|
||||
strcpy(temp,"\n\n");
|
||||
sprintf(aux,"Online time: %.4d:%.2d:%.2d\n"\
|
||||
"Average connection length: %.4d:%.2d:%.2d\n"\
|
||||
"Longer connection: %.4d:%.2d:%.2d\n"\
|
||||
"Shorter connection: %.4d:%.2d:%.2d\n",
|
||||
h,m,s,
|
||||
i,n,t,
|
||||
j,o,u,
|
||||
k,p,v);
|
||||
strcat(temp,aux);
|
||||
|
||||
gtk_label_set_text(GTK_LABEL(lresume[1]),temp);
|
||||
gtk_widget_queue_resize(hgraph);
|
||||
gtk_widget_queue_resize(wgraph);
|
||||
}
|
||||
|
||||
void
|
||||
add_hourly(long s,long e)
|
||||
{
|
||||
time_t t;
|
||||
struct tm *st;
|
||||
|
||||
for(t=s;t<=e;t+=30) {
|
||||
st=localtime(&t);
|
||||
if (!st)
|
||||
exit(2);
|
||||
hourly[st->tm_hour]++;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
add_weekly(long s,long e)
|
||||
{
|
||||
time_t t;
|
||||
struct tm *st;
|
||||
|
||||
for(t=s;t<=e;t+=30) {
|
||||
st=localtime(&t);
|
||||
if (!st)
|
||||
exit(2);
|
||||
weekly[st->tm_wday]++;
|
||||
}
|
||||
}
|
||||
|
||||
gint
|
||||
hgra_expose(GtkWidget *widget,GdkEventExpose *ee,gpointer data)
|
||||
{
|
||||
gdk_draw_pixmap(widget->window,
|
||||
widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
|
||||
hcanvas,
|
||||
ee->area.x, ee->area.y,
|
||||
ee->area.x, ee->area.y,
|
||||
ee->area.width, ee->area.height);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gint
|
||||
hgra_configure(GtkWidget *widget,GdkEventConfigure *ee,gpointer data)
|
||||
{
|
||||
GdkGC *mygc;
|
||||
int x,y,cx,xs;
|
||||
int i,v;
|
||||
long max;
|
||||
float fac;
|
||||
GdkFont *fn;
|
||||
char tmp[64];
|
||||
|
||||
if (hcanvas!=NULL)
|
||||
gdk_pixmap_unref(hcanvas);
|
||||
|
||||
mygc=gdk_gc_new(widget->window);
|
||||
|
||||
hcanvas=gdk_pixmap_new(widget->window,x=widget->allocation.width,
|
||||
y=widget->allocation.height,-1);
|
||||
gdk_draw_rectangle(hcanvas,widget->style->white_gc,TRUE,0,0,x,y);
|
||||
gdk_draw_rectangle(hcanvas,widget->style->black_gc,FALSE,0,0,x-1,y-1);
|
||||
|
||||
max=0;
|
||||
for(i=0;i<24;i++)
|
||||
if (hourly[i]>max)
|
||||
max=hourly[i];
|
||||
|
||||
if (max==0) max=1;
|
||||
fac=((float)(y-18-16))/((float)max);
|
||||
|
||||
cx=1;
|
||||
xs=(x-2)/24;
|
||||
fn=gdk_font_load("-*-helvetica-medium-r-*-*-8-*-*-*-*-*-*-*");
|
||||
for (i=0;i<24;i++) {
|
||||
v=(int)(((float)hourly[i])*fac);
|
||||
gdk_rgb_gc_set_foreground(mygc,0xc0c0c0);
|
||||
gdk_draw_line(hcanvas,mygc,cx,1,cx,y-2);
|
||||
gdk_rgb_gc_set_foreground(mygc,0x004080);
|
||||
gdk_draw_rectangle(hcanvas,mygc,TRUE,cx,y-18-v,xs,v);
|
||||
cx+=xs;
|
||||
}
|
||||
|
||||
gdk_rgb_gc_set_foreground(mygc,0x000000);
|
||||
for(cx=1,i=0;i<24;i+=2) {
|
||||
sprintf(tmp,"%2d",i);
|
||||
gdk_draw_string(hcanvas,fn,mygc,cx,y-6,tmp);
|
||||
cx+=2*xs;
|
||||
}
|
||||
|
||||
gdk_draw_line(hcanvas,widget->style->black_gc,0,y-18,x-1,y-18);
|
||||
|
||||
gdk_rgb_gc_set_foreground(mygc,0xffffff);
|
||||
gdk_draw_rectangle(hcanvas,mygc,TRUE,0,0,22*4,13);
|
||||
gdk_rgb_gc_set_foreground(mygc,0x000000);
|
||||
gdk_draw_rectangle(hcanvas,mygc,FALSE,0,0,22*4,13);
|
||||
|
||||
gdk_font_unref(fn);
|
||||
fn=gdk_font_load("-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*");
|
||||
|
||||
gdk_draw_string(hcanvas,fn,mygc,5,10,"hourly summary");
|
||||
|
||||
gdk_font_unref(fn);
|
||||
gdk_gc_destroy(mygc);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gint
|
||||
wgra_expose(GtkWidget *widget,GdkEventExpose *ee,gpointer data)
|
||||
{
|
||||
gdk_draw_pixmap(widget->window,
|
||||
widget->style->fg_gc[GTK_WIDGET_STATE (widget)],
|
||||
wcanvas,
|
||||
ee->area.x, ee->area.y,
|
||||
ee->area.x, ee->area.y,
|
||||
ee->area.width, ee->area.height);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gint
|
||||
wgra_configure(GtkWidget *widget,GdkEventConfigure *ee,gpointer data)
|
||||
{
|
||||
GdkGC *mygc;
|
||||
int x,y,cx,xs;
|
||||
int i,v;
|
||||
long max;
|
||||
float fac;
|
||||
GdkFont *fn;
|
||||
|
||||
if (wcanvas!=NULL)
|
||||
gdk_pixmap_unref(wcanvas);
|
||||
|
||||
mygc=gdk_gc_new(widget->window);
|
||||
|
||||
wcanvas=gdk_pixmap_new(widget->window,x=widget->allocation.width,
|
||||
y=widget->allocation.height,-1);
|
||||
gdk_draw_rectangle(wcanvas,widget->style->white_gc,TRUE,0,0,x,y);
|
||||
gdk_draw_rectangle(wcanvas,widget->style->black_gc,FALSE,0,0,x-1,y-1);
|
||||
|
||||
max=0;
|
||||
for(i=0;i<7;i++)
|
||||
if (weekly[i]>max)
|
||||
max=weekly[i];
|
||||
|
||||
if (!max) max=1;
|
||||
fac=((float)(y-18-16))/((float)max);
|
||||
|
||||
cx=1;
|
||||
xs=(x-2)/7;
|
||||
fn=gdk_font_load("-*-helvetica-medium-r-*-*-8-*-*-*-*-*-*-*");
|
||||
for (i=0;i<7;i++) {
|
||||
v=(int)(((float)weekly[i])*fac);
|
||||
gdk_rgb_gc_set_foreground(mygc,0xc0c0c0);
|
||||
gdk_draw_line(wcanvas,mygc,cx,1,cx,y-2);
|
||||
gdk_rgb_gc_set_foreground(mygc,0x004080);
|
||||
gdk_draw_rectangle(wcanvas,mygc,TRUE,cx,y-18-v,xs,v);
|
||||
gdk_rgb_gc_set_foreground(mygc,0x000000);
|
||||
gdk_draw_string(wcanvas,fn,mygc,cx,y-6,wdays[i]);
|
||||
cx+=xs;
|
||||
}
|
||||
|
||||
gdk_draw_line(wcanvas,widget->style->black_gc,0,y-18,x-1,y-18);
|
||||
|
||||
gdk_rgb_gc_set_foreground(mygc,0xffffff);
|
||||
gdk_draw_rectangle(wcanvas,mygc,TRUE,0,0,23*4,13);
|
||||
gdk_rgb_gc_set_foreground(mygc,0x000000);
|
||||
gdk_draw_rectangle(wcanvas,mygc,FALSE,0,0,23*4,13);
|
||||
|
||||
gdk_font_unref(fn);
|
||||
fn=gdk_font_load("-*-helvetica-medium-r-*-*-10-*-*-*-*-*-*-*");
|
||||
|
||||
gdk_draw_string(wcanvas,fn,mygc,5,10,"weekday summary");
|
||||
|
||||
gdk_font_unref(fn);
|
||||
gdk_gc_destroy(mygc);
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
time_menu(GtkMenuItem *gmi,gpointer data)
|
||||
{
|
||||
int x;
|
||||
struct tm *his;
|
||||
time_t t;
|
||||
|
||||
x=*((int *)data);
|
||||
|
||||
t=time(NULL);
|
||||
his=localtime(&t);
|
||||
|
||||
switch(x) {
|
||||
case 0: /* all */
|
||||
time_cons[0]=time_cons[1]=0;
|
||||
break;
|
||||
case 1: /* today */
|
||||
his->tm_sec=0;
|
||||
his->tm_min=0;
|
||||
his->tm_hour=0;
|
||||
time_cons[0]=mktime(his);
|
||||
his->tm_sec=59;
|
||||
his->tm_min=59;
|
||||
his->tm_hour=23;
|
||||
time_cons[1]=mktime(his);
|
||||
break;
|
||||
case 2: /* yesterday */
|
||||
t-=24*3600;
|
||||
his=localtime(&t);
|
||||
his->tm_sec=0;
|
||||
his->tm_min=0;
|
||||
his->tm_hour=0;
|
||||
time_cons[0]=mktime(his);
|
||||
his->tm_sec=59;
|
||||
his->tm_min=59;
|
||||
his->tm_hour=23;
|
||||
time_cons[1]=mktime(his);
|
||||
break;
|
||||
case 3: /* this week */
|
||||
t-=((long)(24*3600))*((long)(his->tm_wday));
|
||||
his=localtime(&t);
|
||||
his->tm_sec=0;
|
||||
his->tm_min=0;
|
||||
his->tm_hour=0;
|
||||
time_cons[0]=mktime(his);
|
||||
time_cons[1]=time(NULL);
|
||||
break;
|
||||
case 4: /* this month */
|
||||
t-=((long)(24*3600))*((long)(his->tm_mday));
|
||||
his=localtime(&t);
|
||||
his->tm_sec=0;
|
||||
his->tm_min=0;
|
||||
his->tm_hour=0;
|
||||
time_cons[0]=mktime(his);
|
||||
time_cons[1]=time(NULL);
|
||||
break;
|
||||
case 5: /* this year */
|
||||
t-=((long)(24*3600))*((long)(his->tm_yday));
|
||||
his=localtime(&t);
|
||||
his->tm_sec=0;
|
||||
his->tm_min=0;
|
||||
his->tm_hour=0;
|
||||
time_cons[0]=mktime(his);
|
||||
time_cons[1]=time(NULL);
|
||||
break;
|
||||
case 6: /* Last 24 hours */
|
||||
time_cons[0]=t-24*3600;
|
||||
time_cons[1]=t;
|
||||
break;
|
||||
case 7: /* Last 7 days */
|
||||
time_cons[0]=t-7*24*3600;
|
||||
time_cons[1]=t;
|
||||
break;
|
||||
case 8: /* Last 30 days */
|
||||
time_cons[0]=t-30*24*3600;
|
||||
time_cons[1]=t;
|
||||
break;
|
||||
case 9:
|
||||
time_cons[0]=t-365*24*3600;
|
||||
time_cons[1]=t;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
make_resume();
|
||||
}
|
||||
|
||||
void
|
||||
user_menu(GtkMenuItem *gmi,gpointer data)
|
||||
{
|
||||
useridx=*((int *)data);
|
||||
make_resume();
|
||||
}
|
||||
|
||||
void
|
||||
isp_menu(GtkMenuItem *gmi,gpointer data)
|
||||
{
|
||||
ispidx=*((int *)data);
|
||||
make_resume();
|
||||
}
|
||||
|
||||
int
|
||||
already_exists(char *s,GList *pt)
|
||||
{
|
||||
GList *w;
|
||||
for(w=pt;w!=NULL;w=g_list_next(w)) {
|
||||
if (!strcmp((char *)(w->data),s))
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
39
yawmppp/src/gtklog/loglist.h
Normal file
39
yawmppp/src/gtklog/loglist.h
Normal file
|
@ -0,0 +1,39 @@
|
|||
|
||||
#ifndef LOGLIST_H
|
||||
#define LOGLIST_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
void create_loglist(void);
|
||||
void load_log(void);
|
||||
void prepend_log_entry(char *);
|
||||
void free_log(void);
|
||||
void update_list(void);
|
||||
void make_resume(void);
|
||||
void add_hourly(long s,long e);
|
||||
void add_weekly(long s,long e);
|
||||
|
||||
gint applet_kill (GtkWidget * widget, GdkEvent * event, gpointer data);
|
||||
void applet_destroy (GtkWidget * widget, gpointer data);
|
||||
|
||||
void time_menu(GtkMenuItem *gmi,gpointer data);
|
||||
void user_menu(GtkMenuItem *gmi,gpointer data);
|
||||
void isp_menu(GtkMenuItem *gmi,gpointer data);
|
||||
int already_exists(char *s,GList *pt);
|
||||
|
||||
gint hgra_expose(GtkWidget *,GdkEventExpose *,gpointer);
|
||||
gint hgra_configure(GtkWidget *,GdkEventConfigure *,gpointer);
|
||||
gint wgra_expose(GtkWidget *,GdkEventExpose *,gpointer);
|
||||
gint wgra_configure(GtkWidget *,GdkEventConfigure *,gpointer);
|
||||
|
||||
struct logentry {
|
||||
time_t start;
|
||||
time_t end;
|
||||
int status; /* 0=ok 1=error 2=crash */
|
||||
char longname[128];
|
||||
char shortname[16];
|
||||
char phone[32];
|
||||
char user[32];
|
||||
};
|
||||
|
||||
#endif
|
64
yawmppp/src/gtklog/status_crash.xpm
Normal file
64
yawmppp/src/gtklog/status_crash.xpm
Normal file
|
@ -0,0 +1,64 @@
|
|||
/* XPM */
|
||||
static char * status_crash_xpm[] = {
|
||||
"16 16 45 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #FF8A3D",
|
||||
"@ c #FFE43A",
|
||||
"# c #FFEBD1",
|
||||
"$ c #080808",
|
||||
"% c #484848",
|
||||
"& c #585858",
|
||||
"* c #545454",
|
||||
"= c #474747",
|
||||
"- c #292929",
|
||||
"; c #606060",
|
||||
"> c #6D6D6D",
|
||||
", c #737373",
|
||||
"' c #5D5D5D",
|
||||
") c #2B2B2B",
|
||||
"! c #181818",
|
||||
"~ c #111111",
|
||||
"{ c #575757",
|
||||
"] c #828282",
|
||||
"^ c #8D8D8D",
|
||||
"/ c #060606",
|
||||
"( c #0D0D0D",
|
||||
"_ c #404040",
|
||||
": c #595959",
|
||||
"< c #A7A7A7",
|
||||
"[ c #3F3F3F",
|
||||
"} c #242424",
|
||||
"| c #0A0A0A",
|
||||
"1 c #0C0C0C",
|
||||
"2 c #3D3D3D",
|
||||
"3 c #555555",
|
||||
"4 c #3B3B3B",
|
||||
"5 c #222222",
|
||||
"6 c #323232",
|
||||
"7 c #494949",
|
||||
"8 c #1A1A1A",
|
||||
"9 c #020202",
|
||||
"0 c #252525",
|
||||
"a c #383838",
|
||||
"b c #0F0F0F",
|
||||
"c c #171717",
|
||||
"d c #131313",
|
||||
"e c #030303",
|
||||
"f c #010101",
|
||||
" .+..@. ",
|
||||
" .@+.++. ",
|
||||
" .++.#.. ",
|
||||
" ....@.#.++. ",
|
||||
" $%&*=@.#.@@. ",
|
||||
" .-;>,>')#)!.. ",
|
||||
" ~{>]^]>)))/( ",
|
||||
"._:,^<^,:[}|1. ",
|
||||
".23>]^]>345$.. ",
|
||||
".67'>,>'7689.. ",
|
||||
".0a73:37a}b... ",
|
||||
".c}64[46}d..e. ",
|
||||
" 9b85}58b...f ",
|
||||
" .f9$|$9..... ",
|
||||
" ........ ",
|
||||
" ...... "};
|
124
yawmppp/src/gtklog/status_error.xpm
Normal file
124
yawmppp/src/gtklog/status_error.xpm
Normal file
|
@ -0,0 +1,124 @@
|
|||
/* XPM */
|
||||
static char * status_error_xpm[] = {
|
||||
"16 16 105 2",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #B81818",
|
||||
"@ c #B61818",
|
||||
"# c #AD1514",
|
||||
"$ c #A11111",
|
||||
"% c #920B0B",
|
||||
"& c #7E0504",
|
||||
"* c #B91819",
|
||||
"= c #B9191B",
|
||||
"- c #B51A1B",
|
||||
"; c #C21D1C",
|
||||
"> c #C21A1B",
|
||||
", c #B51718",
|
||||
"' c #9B0E0E",
|
||||
") c #7E0505",
|
||||
"! c #6F0204",
|
||||
"~ c #B21717",
|
||||
"{ c #B41919",
|
||||
"] c #952A2A",
|
||||
"^ c #B37575",
|
||||
"/ c #971C1C",
|
||||
"( c #BF1D1C",
|
||||
"_ c #B81718",
|
||||
": c #880E0E",
|
||||
"< c #824040",
|
||||
"[ c #5C1617",
|
||||
"} c #620204",
|
||||
"| c #B71819",
|
||||
"1 c #A21819",
|
||||
"2 c #DBC6C4",
|
||||
"3 c #FEFEFC",
|
||||
"4 c #CDACAB",
|
||||
"5 c #901414",
|
||||
"6 c #955959",
|
||||
"7 c #CFC1C0",
|
||||
"8 c #550204",
|
||||
"9 c #6D0204",
|
||||
"0 c #A21110",
|
||||
"a c #BB1819",
|
||||
"b c #B11C1C",
|
||||
"c c #994948",
|
||||
"d c #F2EBEA",
|
||||
"e c #F8F4F3",
|
||||
"f c #9B5F5F",
|
||||
"g c #7C3333",
|
||||
"h c #F7F4F2",
|
||||
"i c #764849",
|
||||
"j c #5C0204",
|
||||
"k c #710204",
|
||||
"l c #9C0F0F",
|
||||
"m c #C31D1B",
|
||||
"n c #A01C1C",
|
||||
"o c #B88786",
|
||||
"p c #E3D7D5",
|
||||
"q c #A17B7B",
|
||||
"r c #5B0204",
|
||||
"s c #6B0204",
|
||||
"t c #930C0B",
|
||||
"u c #AA1414",
|
||||
"v c #BA191A",
|
||||
"w c #B51A1A",
|
||||
"x c #7F1414",
|
||||
"y c #CAB0AF",
|
||||
"z c #BFADAC",
|
||||
"A c #550405",
|
||||
"B c #850707",
|
||||
"C c #990E0E",
|
||||
"D c #A51212",
|
||||
"E c #9A1111",
|
||||
"F c #77201F",
|
||||
"G c #DED5D4",
|
||||
"H c #571617",
|
||||
"I c #600204",
|
||||
"J c #6C0204",
|
||||
"K c #790304",
|
||||
"L c #840706",
|
||||
"M c #890808",
|
||||
"N c #6D0909",
|
||||
"O c #B2908F",
|
||||
"P c #C5B7B6",
|
||||
"Q c #4A0204",
|
||||
"R c #660204",
|
||||
"S c #6E0204",
|
||||
"T c #750304",
|
||||
"U c #977171",
|
||||
"V c #E6DFDE",
|
||||
"W c #501617",
|
||||
"X c #D6CBCA",
|
||||
"Y c #A08584",
|
||||
"Z c #510204",
|
||||
"` c #680204",
|
||||
" . c #530204",
|
||||
".. c #7C5253",
|
||||
"+. c #5A0204",
|
||||
"@. c #6D3E3F",
|
||||
"#. c #642A2B",
|
||||
"$. c #650204",
|
||||
"%. c #703E3F",
|
||||
"&. c #560204",
|
||||
"*. c #690204",
|
||||
"=. c #570204",
|
||||
"-. c #6E3E3F",
|
||||
";. c #630204",
|
||||
">. c #640204",
|
||||
" . . . . . . ",
|
||||
" . . + @ # $ % & . . ",
|
||||
" . * = - ; > , ' ) ! ! . ",
|
||||
" . ~ { ] ^ / ( _ : < [ } ! . ",
|
||||
" . | 1 2 3 4 / 5 6 3 7 8 9 . ",
|
||||
". 0 a b c d e f g h 3 i j ! k . ",
|
||||
". l @ m n o 3 3 p 3 q r s k k . ",
|
||||
". t u v w x y 3 3 z A s ! k k . ",
|
||||
". B C D E F p 3 3 G H I J ! k . ",
|
||||
". K L M N O 3 G G 3 P Q R k S . ",
|
||||
". k T } U 3 V W W X 3 Y Z ` k . ",
|
||||
" . S .7 3 ..8 +.@.3 3 #.$.. ",
|
||||
" . ! } H %.&.s *.=.-.-.+.J . ",
|
||||
" . ! R ;.9 k k J >.>.s . ",
|
||||
" . . k k S k k k . . ",
|
||||
" . . . . . . "};
|
23
yawmppp/src/gtklog/status_ok.xpm
Normal file
23
yawmppp/src/gtklog/status_ok.xpm
Normal file
|
@ -0,0 +1,23 @@
|
|||
/* XPM */
|
||||
static char * status_ok_xpm[] = {
|
||||
"16 16 4 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #7FDB82",
|
||||
"@ c #1CA525",
|
||||
" . ",
|
||||
" .+.",
|
||||
" .+@.",
|
||||
" .+@.",
|
||||
" .+@. ",
|
||||
" .+@. ",
|
||||
" . .+@. ",
|
||||
" .+. .+@. ",
|
||||
" .+@@. .+@. ",
|
||||
" .@@@. .+@. ",
|
||||
" .@@@..+@. ",
|
||||
" .@@@+@@. ",
|
||||
" .@@@@. ",
|
||||
" .@@@. ",
|
||||
" .@. ",
|
||||
" . "};
|
37
yawmppp/src/gtksetup/Makefile.in
Normal file
37
yawmppp/src/gtksetup/Makefile.in
Normal file
|
@ -0,0 +1,37 @@
|
|||
#
|
||||
# gtksetup: a setup applet for yawmppp
|
||||
#
|
||||
|
||||
CC = @CC@
|
||||
CFLAGS = -Wall -O2
|
||||
GTKLIB = @GTK_LIBS@
|
||||
GTKFLAG = @GTK_FLAGS@
|
||||
RLFLAG = -DVERSION=\"@MK_YAWMPPP_RELEASE@\" -DIPREFIX=\"@prefix@\" -D@SYSDEF@
|
||||
PROGINST = @INSTALL@
|
||||
|
||||
ALLDOTOS = applet.o msgbox.o
|
||||
ALLDOTHS = applet.h msgbox.h ../isprc.h
|
||||
EOBJS = ../isprc.o ../about.o
|
||||
|
||||
all: build_gtksetup
|
||||
|
||||
build_gtksetup: $(ALLDOTOS)
|
||||
$(CC) $(ALLDOTOS) $(EOBJS) -o yawmppp.pref $(GTKLIB)
|
||||
|
||||
$(ALLDOTOS): %.o : %.c $(ALLDOTHS)
|
||||
$(CC) $(CFLAGS) $(RLFLAG) $(GTKFLAG) -I.. -c $< -o $@
|
||||
|
||||
install:
|
||||
$(PROGINST) -m 0755 yawmppp.pref @prefix@/bin/yawmppp.pref
|
||||
$(PROGINST) -m 0644 pppdoc.xpm @prefix@/share/icons/pppdoc.xpm
|
||||
|
||||
install-strip:
|
||||
$(PROGINST) -s -m 0755 yawmppp.pref @prefix@/bin/yawmppp.pref
|
||||
$(PROGINST) -m 0644 pppdoc.xpm @prefix@/share/icons/pppdoc.xpm
|
||||
|
||||
clean:
|
||||
rm -f $(ALLDOTOS) yawmppp.pref
|
||||
|
||||
distclean:
|
||||
rm -f Makefile *~
|
||||
|
2858
yawmppp/src/gtksetup/applet.c
Normal file
2858
yawmppp/src/gtksetup/applet.c
Normal file
File diff suppressed because it is too large
Load diff
182
yawmppp/src/gtksetup/applet.h
Normal file
182
yawmppp/src/gtksetup/applet.h
Normal file
|
@ -0,0 +1,182 @@
|
|||
|
||||
#ifndef YAWMPPP_APPLET_H
|
||||
#define YAWMPPP_APPLET_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include "isprc.h"
|
||||
|
||||
/* not less than the dock applet */
|
||||
#define MAX_ISPS 40
|
||||
|
||||
#define ERR_MAX_ISPS "You can't have more than 40 entries."
|
||||
|
||||
#define ERR_CANT_MKDIR "Unable to create directory ~/.yawmppp\n"\
|
||||
"Current configuration could not be\n"\
|
||||
"written."
|
||||
|
||||
#define ERR_CANT_WRITE "Unable to create configuration files\n"\
|
||||
"in directory ~/.yawmppp. Current configuration\n"\
|
||||
"may not have been only partially written."
|
||||
|
||||
#define ERR_DIDNT_WRITE "There were errors when saving the configuration.\n"\
|
||||
"Do you still wish to close wmppp.pref and [maybe] lose\n"\
|
||||
"current data ?"
|
||||
|
||||
#define INFO_CANT_APPLY_NOW "The dock applet will update itself only when\n"\
|
||||
"the current connection is over."
|
||||
|
||||
#define ERR_CANT_SU "Script didn't run properly. Bad password ?"
|
||||
|
||||
#define MAX_EXPECT_PAIRS 16
|
||||
|
||||
struct PREF_ISP_INFO {
|
||||
char LongName[128];
|
||||
char ShortName[16];
|
||||
char Device[64];
|
||||
char Username[32];
|
||||
char Password[32];
|
||||
char Phone[32];
|
||||
char ModemInit1[256];
|
||||
char ModemInit2[256];
|
||||
char UserString[32];
|
||||
char PassString[32];
|
||||
char PulseDial[8];
|
||||
char ModemSpeed[16];
|
||||
|
||||
/* appended in 1.1.0 */
|
||||
int nExpectPairs;
|
||||
char s_expect[MAX_EXPECT_PAIRS][32];
|
||||
char s_send[MAX_EXPECT_PAIRS][32];
|
||||
|
||||
struct ISP_PPP ppp; /* defined in ../isprc.h */
|
||||
|
||||
/* appended in 1.1.2 */
|
||||
int nologin;
|
||||
};
|
||||
|
||||
struct PREF_PPP_OPT {
|
||||
int defaultroute;
|
||||
int lock;
|
||||
int passive;
|
||||
int debug;
|
||||
int kdebug;
|
||||
int noauth;
|
||||
int noipdefault;
|
||||
int linectl; /* 0=modem 1=local */
|
||||
int flowctl; /* 0=crtscts 1=xonxoff 2=nocrtscts 3=DC */
|
||||
int mtu;
|
||||
int mru;
|
||||
int lcp[5]; /* in the same order as in the dialog */
|
||||
|
||||
int chap;
|
||||
int pap;
|
||||
|
||||
int usepeerdns;
|
||||
};
|
||||
|
||||
void create_preferences_panel(void);
|
||||
void clear_and_disable_right_pane(void);
|
||||
void load_rc_entries(void);
|
||||
void update_right_pane(void);
|
||||
void commit_back_to_db(void);
|
||||
void fill_list(void);
|
||||
int write_and_apply_data(void);
|
||||
void check_client(void);
|
||||
int file_exists(char *s);
|
||||
void find_out_paths(void);
|
||||
void test_set_path(char *,char *);
|
||||
|
||||
void xlate_ppp_to_pref(struct YAWMPPP_ISP_INFO *wii,
|
||||
struct PREF_ISP_INFO *pii);
|
||||
|
||||
GtkWidget *hlabel_new(char *);
|
||||
|
||||
GtkWidget *make_ppp_pane(void);
|
||||
void get_ppp_pane(void);
|
||||
void set_ppp_pane(void);
|
||||
char *mk_ppp_string(struct PREF_PPP_OPT *modi,char *sep);
|
||||
void read_ppp_options_from_rc(char *p);
|
||||
|
||||
char *wrapped_strtok(char *a,char *b);
|
||||
|
||||
gint applet_kill (GtkWidget * widget, GdkEvent * event, gpointer data);
|
||||
void applet_destroy (GtkWidget * widget, gpointer data);
|
||||
void applet_apply (GtkWidget * widget, gpointer data);
|
||||
void applet_save_and_quit (GtkWidget * widget, gpointer data);
|
||||
|
||||
void list_select(GtkCList *cl,gint row,gint column,
|
||||
GdkEventButton *geb,gpointer data);
|
||||
void list_unselect(GtkCList *cl,gint row,gint column,
|
||||
GdkEventButton *geb,gpointer data);
|
||||
|
||||
void list_moveup(GtkWidget *gw,gpointer data);
|
||||
void list_movedown(GtkWidget *gw,gpointer data);
|
||||
void list_remove(GtkWidget *gw,gpointer data);
|
||||
void list_duplicate(GtkWidget *gw,gpointer data);
|
||||
void list_add(GtkWidget *gw,gpointer data);
|
||||
|
||||
/* more settings dialog */
|
||||
|
||||
void pop_advanced(GtkWidget *gw,gpointer data);
|
||||
void adv_ok (GtkWidget * widget, gpointer data);
|
||||
void adv_cancel (GtkWidget * widget, gpointer data);
|
||||
void adv_destroy (GtkWidget * widget, gpointer data);
|
||||
|
||||
void enable_local_ppp(gboolean e);
|
||||
void ppp_override_toggle(GtkToggleButton *gtb,gpointer data);
|
||||
|
||||
/* more settings dialog */
|
||||
|
||||
void isp_rename(GtkEditable *ge,gpointer data);
|
||||
|
||||
void make_ppp_default(GtkWidget *w,gpointer data);
|
||||
|
||||
/* expect/send */
|
||||
|
||||
void pop_expect(GtkWidget *w,gpointer data);
|
||||
void exp_ok (GtkWidget * widget, gpointer data);
|
||||
void exp_cancel (GtkWidget * widget, gpointer data);
|
||||
void exp_destroy (GtkWidget * widget, gpointer data);
|
||||
void exp_update(void);
|
||||
void exp_up(GtkWidget *widget,gpointer data);
|
||||
void exp_down(GtkWidget *widget,gpointer data);
|
||||
void exp_disable(void);
|
||||
void exp_enable(void);
|
||||
void exp_select(GtkCList *cl,gint row,gint column,
|
||||
GdkEventButton *geb,gpointer data);
|
||||
void exp_unselect(GtkCList *cl,gint row,gint column,
|
||||
GdkEventButton *geb,gpointer data);
|
||||
void exp_add_delay(void);
|
||||
void exp_remove(void);
|
||||
void exp_add(void);
|
||||
void expa_destroy (GtkWidget * widget, gpointer data);
|
||||
void expa_ok (GtkWidget * widget, gpointer data);
|
||||
void expa_cancel (GtkWidget * widget, gpointer data);
|
||||
|
||||
/* expect/send */
|
||||
|
||||
void extract_delimited_string(char *dest,char *src,int count,char delim,int max);
|
||||
|
||||
/* help */
|
||||
void pop_help (GtkWidget * widget, gpointer data);
|
||||
void help_dead (GtkWidget * widget, gpointer data);
|
||||
void help_die (GtkWidget * widget, gpointer data);
|
||||
|
||||
void unman(char *s);
|
||||
void add_man(char *manpage,GtkWidget *text,int index);
|
||||
void add_docfile(char *source,GtkWidget *text,int index);
|
||||
|
||||
|
||||
/* misc */
|
||||
void run_as_root(char *what);
|
||||
gint pwd_kill (GtkWidget * widget, GdkEvent * event, gpointer data);
|
||||
|
||||
void pwd_cancel(GtkWidget *gw,gpointer data);
|
||||
void pwd_ok(GtkWidget *gw,gpointer data);
|
||||
void pwd_view(GtkWidget *gw,gpointer data);
|
||||
|
||||
void spwd_destroy (GtkWidget * widget, gpointer data);
|
||||
void spwd_close(GtkWidget *gw,gpointer data);
|
||||
int try_run_script(char *cmd);
|
||||
|
||||
#endif
|
100
yawmppp/src/gtksetup/bong.xpm
Normal file
100
yawmppp/src/gtksetup/bong.xpm
Normal file
|
@ -0,0 +1,100 @@
|
|||
/* XPM */
|
||||
static char * bong_xpm[] = {
|
||||
"64 64 33 1",
|
||||
" c None",
|
||||
". c #020204",
|
||||
"+ c #FEFEFC",
|
||||
"@ c #710204",
|
||||
"# c #A21213",
|
||||
"$ c #6E1414",
|
||||
"% c #B9191A",
|
||||
"& c #3C0204",
|
||||
"* c #891514",
|
||||
"= c #550304",
|
||||
"- c #8A090A",
|
||||
"; c #A31D1D",
|
||||
"> c #661719",
|
||||
", c #570B0C",
|
||||
"' c #8A1C1C",
|
||||
") c #801514",
|
||||
"! c #7E0504",
|
||||
"~ c #BB1E1D",
|
||||
"{ c #320204",
|
||||
"] c #4A0304",
|
||||
"^ c #6C0C0C",
|
||||
"/ c #711B1C",
|
||||
"( c #AE1614",
|
||||
"_ c #970D0C",
|
||||
": c #AF1B1C",
|
||||
"< c #7E1D1C",
|
||||
"[ c #7D0C0C",
|
||||
"} c #C51E1C",
|
||||
"| c #971414",
|
||||
"1 c #620204",
|
||||
"2 c #600D0C",
|
||||
"3 c #971C1C",
|
||||
"4 c #C41A1C",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ........ ",
|
||||
" ....#____--!.... ",
|
||||
" ..(((#((#_#_--!!@@.. ",
|
||||
" .(%(%%%%(((##__-!!!@!. ",
|
||||
" ..(%%4%4%4%%((##__-!!@@@.. ",
|
||||
" .(%%44%44}}4%4%((__-!!@@@@@. ",
|
||||
" .(%%%%%%:%}}4}4%%##_-!@@@@@@@. ",
|
||||
" .#(%4%::33;;}}4444(_-!@111@1@@@. ",
|
||||
" .(%%%(|'$/<';~}}4%#_[2=]]=11@@@. ",
|
||||
" .((%%%;'$+++/<;~}4(#)2]++&]=11@@!. ",
|
||||
" ._(%(%:*$+++++/<;~~|*^,++++&]=@1@@@. ",
|
||||
" ._(%%%:*+++++++<3;||^,++++++]=1@@@@. ",
|
||||
" ._#(%%%:3/++++++//')$2++++++&]=@@@@@@. ",
|
||||
" .__(%4%~;'/++++++>$^2++++++&]=11@@@@@. ",
|
||||
" ._#((44~:3</++++++2,,++++++&]=1@@@@@@. ",
|
||||
" ._##%%}}};'/+++++++,++++++]=111@@@@@@. ",
|
||||
" .--_#(%%}}~;'/++++++++++++]]=1@@@@@@@@@. ",
|
||||
" .-__#((%4}}%3)>++++++++++]]1@11@@@@@@@@. ",
|
||||
" .--__#(%%}~%#*$2++++++++&,=1@@@@@@@@@@@. ",
|
||||
" .!--_#(#%%%%;*2,++++++++&]=@@1@@@@@@@@@. ",
|
||||
" .!!-__##(%(#|)2,++++++++&]==@@@@@@@@@@@. ",
|
||||
" .@!!-__#####[^]++++++++++&]==11@1@@@@@@. ",
|
||||
" .@@!!-_____[^2++++++++++++{]=11@@@@@@@@. ",
|
||||
" .@@!!!---_[^=]+++++++++++++{]=11@@@1@@@. ",
|
||||
" .@@!!!!!!^1]++++++&&++++++{&=11@@@@@@. ",
|
||||
" .@@@!!!@1=]++++++&&&&++++++&&]=11@@@@. ",
|
||||
" .@@@@@@1=&++++++&&]]&&++++++&]=11@@@@. ",
|
||||
" .@@@@@1=]&++++++&]==]&{++++++&]11@@@@. ",
|
||||
" .@@@@1=&++++++&]==1=]&+++++++]=1@@@. ",
|
||||
" .@@@@11]&++++&&]11@1=]{+++++{]=@1@@. ",
|
||||
" .@@@11=&&++{]==1@111]]{+++{]=11@@. ",
|
||||
" .@@@11=]&&]]=1@@@@11]]&&&]]11@@. ",
|
||||
" .@@@@11====1@@@@@@@11=]]]=1@@@@. ",
|
||||
" .@@@@11111@1@@@@@@@11111111@@. ",
|
||||
" .@@@@@@@1@@@@@@@@@@@@@@@@@@. ",
|
||||
" ..@@@@@@@@@@@@@@@@@@@@@@.. ",
|
||||
" .@@@@@@@@1@@@@@@@@@@@. ",
|
||||
" ..@@@@@@@@@@@@@@@@.. ",
|
||||
" ....@@@@1@@@.... ",
|
||||
" ........ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
26
yawmppp/src/gtksetup/cmd_del.xpm
Normal file
26
yawmppp/src/gtksetup/cmd_del.xpm
Normal file
|
@ -0,0 +1,26 @@
|
|||
/* XPM */
|
||||
static char * cmd_del_xpm[] = {
|
||||
"20 20 3 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #7B7D7B",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" .+ .+ ",
|
||||
" ...+ ...+ ",
|
||||
" ...+ ...+ ",
|
||||
" ...+ ...+ ",
|
||||
" ......+ ",
|
||||
" ....+ ",
|
||||
" ....+ ",
|
||||
" ......+ ",
|
||||
" ...++...+ ",
|
||||
" ...+ ...+ ",
|
||||
" ...+ ...+ ",
|
||||
" .+ .+ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
13
yawmppp/src/gtksetup/cmd_down.xpm
Normal file
13
yawmppp/src/gtksetup/cmd_down.xpm
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* XPM */
|
||||
static char * cmd_down_xpm[] = {
|
||||
"13 7 3 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #7B7D7B",
|
||||
"............+",
|
||||
" ..........+ ",
|
||||
" ........+ ",
|
||||
" ......+ ",
|
||||
" ....+ ",
|
||||
" ..+ ",
|
||||
" + "};
|
27
yawmppp/src/gtksetup/cmd_dup.xpm
Normal file
27
yawmppp/src/gtksetup/cmd_dup.xpm
Normal file
|
@ -0,0 +1,27 @@
|
|||
/* XPM */
|
||||
static char * cmd_dup_xpm[] = {
|
||||
"20 20 4 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #FFFFFF",
|
||||
"@ c #7B7D7B",
|
||||
" ",
|
||||
" ",
|
||||
" ...... ",
|
||||
" ..++++. ",
|
||||
" .+.++++.@ ",
|
||||
" .++.++++.... ",
|
||||
" .....++++.++.@ ",
|
||||
" .++++++++.++.@ ",
|
||||
" .++++++++.++.@ ",
|
||||
" .++++++++.++.@ ",
|
||||
" .++++++++.++.@ ",
|
||||
" .++++++++.++.@ ",
|
||||
" .++++++++.++.@ ",
|
||||
" .++++++++.++.@ ",
|
||||
" ..........++.@ ",
|
||||
" @@.++++++++.@ ",
|
||||
" .++++++++.@ ",
|
||||
" ..........@ ",
|
||||
" @@@@@@@@@@ ",
|
||||
" "};
|
27
yawmppp/src/gtksetup/cmd_new.xpm
Normal file
27
yawmppp/src/gtksetup/cmd_new.xpm
Normal file
|
@ -0,0 +1,27 @@
|
|||
/* XPM */
|
||||
static char * cmd_new_xpm[] = {
|
||||
"20 20 4 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #FFFFFF",
|
||||
"@ c #7B7D7B",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ...... ",
|
||||
" ..++++.@ ",
|
||||
" .+.++++.@ ",
|
||||
" .++.++++.@ ",
|
||||
" .....++++.@ ",
|
||||
" .++++++++.@ ",
|
||||
" .++++++++.@ ",
|
||||
" .++++++++.@ ",
|
||||
" .++++++++.@ ",
|
||||
" .++++++++.@ ",
|
||||
" .++++++++.@ ",
|
||||
" .++++++++.@ ",
|
||||
" ..........@ ",
|
||||
" @@@@@@@@@@ ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
13
yawmppp/src/gtksetup/cmd_up.xpm
Normal file
13
yawmppp/src/gtksetup/cmd_up.xpm
Normal file
|
@ -0,0 +1,13 @@
|
|||
/* XPM */
|
||||
static char * cmd_up_xpm[] = {
|
||||
"13 7 3 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #7B7D7B",
|
||||
" .. ",
|
||||
" ....+ ",
|
||||
" ......+ ",
|
||||
" ........+ ",
|
||||
" ..........+ ",
|
||||
"............+",
|
||||
" ++++++++++++"};
|
132
yawmppp/src/gtksetup/exclam.xpm
Normal file
132
yawmppp/src/gtksetup/exclam.xpm
Normal file
|
@ -0,0 +1,132 @@
|
|||
/* XPM */
|
||||
static char * exclam_xpm[] = {
|
||||
"64 64 65 1",
|
||||
" c None",
|
||||
". c #020204",
|
||||
"+ c #958204",
|
||||
"@ c #C6C604",
|
||||
"# c #EAE604",
|
||||
"$ c #4E4204",
|
||||
"% c #AAA604",
|
||||
"& c #E7C704",
|
||||
"* c #282204",
|
||||
"= c #CDB304",
|
||||
"- c #E8D604",
|
||||
"; c #F5F504",
|
||||
"> c #A89204",
|
||||
", c #6A6204",
|
||||
"' c #D8D504",
|
||||
") c #C1A504",
|
||||
"! c #383304",
|
||||
"~ c #727204",
|
||||
"{ c #EEEA04",
|
||||
"] c #FAD904",
|
||||
"^ c #141204",
|
||||
"/ c #D5BB04",
|
||||
"( c #A28E04",
|
||||
"_ c #EDCE04",
|
||||
": c #E0C204",
|
||||
"< c #B19A04",
|
||||
"[ c #3C3C04",
|
||||
"} c #B9A204",
|
||||
"| c #FEFD04",
|
||||
"1 c #C5AB04",
|
||||
"2 c #8C7904",
|
||||
"3 c #FAE404",
|
||||
"4 c #302C04",
|
||||
"5 c #F2DE04",
|
||||
"6 c #565204",
|
||||
"7 c #7C6B04",
|
||||
"8 c #6E5E04",
|
||||
"9 c #201C04",
|
||||
"0 c #DEDC04",
|
||||
"a c #DFCB04",
|
||||
"b c #937E04",
|
||||
"c c #FEEB04",
|
||||
"d c #0D0A04",
|
||||
"e c #8E8A04",
|
||||
"f c #DDBE04",
|
||||
"g c #F4D104",
|
||||
"h c #B79C04",
|
||||
"i c #CECE04",
|
||||
"j c #AAAA04",
|
||||
"k c #FADE04",
|
||||
"l c #8E7E04",
|
||||
"m c #BAAA04",
|
||||
"n c #F1D804",
|
||||
"o c #FEF304",
|
||||
"p c #E2D204",
|
||||
"q c #463E04",
|
||||
"r c #625204",
|
||||
"s c #9A8604",
|
||||
"t c #B2A204",
|
||||
"u c #EECA04",
|
||||
"v c #2E2604",
|
||||
"w c #D2B504",
|
||||
"x c #AE9604",
|
||||
"y c #726304",
|
||||
"z c #3E3604",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" 0s ",
|
||||
" ', ",
|
||||
" #'}l ",
|
||||
" {a/(4 ",
|
||||
" ;;'=}4 ",
|
||||
" |5-/mb* ",
|
||||
" ||3na1hv ",
|
||||
" ||35n_/1+y ",
|
||||
" |co||#_=}s* ",
|
||||
" |||@!..!>)<* ",
|
||||
" |c|9....^}hb9 ",
|
||||
" ||cj......y1hv ",
|
||||
" |c3j......8=1sy ",
|
||||
" ||33|......>/=}+* ",
|
||||
" |33]c......xuf1h* ",
|
||||
" ||33536....!)g&=}b9 ",
|
||||
" |c3k]3~....$fguf1h4 ",
|
||||
" ||33]]k%....y:]g&w)+y ",
|
||||
" |c3k]]]@....2_]gg:=}s* ",
|
||||
" ||3k]]]]c....x_]]guf1<9 ",
|
||||
" ||33k]]]]c!..9)]]]]g&wh29 ",
|
||||
" |c33k]]]]c6..!w]]g]guf1>9 ",
|
||||
" ||33]]g]]]3e..r:]]]]gg&=h29 ",
|
||||
" |33k]]]]g]]%..y&]]]]]gu:1hv ",
|
||||
" ||ckk]]]]]]]|..xg]]]]]]g&/)sy ",
|
||||
" |335]]]]]]]]39^h]]g]]]]g_&=}+* ",
|
||||
" ||33]]g]]]g]]kh21]]]g]]]]guf1h* ",
|
||||
" |c3k]]]]g]]]||jtk]]]]]g]]ng&=}b9 ",
|
||||
" ||3k]]]]]]]]|j...9sg]]]]]]]guf1h4 ",
|
||||
" |c33]]]]]]]]|9....^w]]]]]g]gg&w)+y ",
|
||||
" ||3k]]]g]]]]]c......h]]g]]]]]gu&=}s* ",
|
||||
" |c3k]]]]]g]]]]8....q1]]]]]]]]]guf1h* ",
|
||||
" |;35]]g]g]]]]]]_2!!y):]]]]g]]]]g_&=hb9 ",
|
||||
" ;;5nngggggggggg__ufwf&ggggggg_gg_u:/)xv ",
|
||||
" {-aa&::ffffff:::ff::f:ffff::ffff:f/=}x28 ",
|
||||
" 0'/=m1))))111)))1)))))))))1)1111))))hx(279 ",
|
||||
" im%<>(>((>(((((((>((>(((>>(((((((((((sb27^ ",
|
||||
" 0[!*^...................................ddd. ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
100
yawmppp/src/gtksetup/info.xpm
Normal file
100
yawmppp/src/gtksetup/info.xpm
Normal file
|
@ -0,0 +1,100 @@
|
|||
/* XPM */
|
||||
static char * info_xpm[] = {
|
||||
"64 64 33 1",
|
||||
" c None",
|
||||
". c #020208",
|
||||
"+ c #8E8E91",
|
||||
"@ c #56565B",
|
||||
"# c #3A3A3F",
|
||||
"$ c #06025F",
|
||||
"% c #0A068F",
|
||||
"& c #1E1E25",
|
||||
"* c #040237",
|
||||
"= c #0A0A71",
|
||||
"- c #050250",
|
||||
"; c #090677",
|
||||
"> c #0E0EA9",
|
||||
", c #0A069C",
|
||||
"' c #E2E2E4",
|
||||
") c #09065F",
|
||||
"! c #060641",
|
||||
"~ c #030223",
|
||||
"{ c #C6C6C7",
|
||||
"] c #72727E",
|
||||
"^ c #AAAAAD",
|
||||
"/ c #FEFEFC",
|
||||
"( c #1E1E3C",
|
||||
"_ c #0A0654",
|
||||
": c #0C0A80",
|
||||
"< c #0E0A8F",
|
||||
"[ c #06064F",
|
||||
"} c #0D0A9D",
|
||||
"| c #56566A",
|
||||
"1 c #3A3A54",
|
||||
"2 c #040244",
|
||||
"3 c #0A0684",
|
||||
"4 c #09066C",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ....................................... ",
|
||||
" .}}}}}}}}}}}}}}}},,%333%%,,}}}}}}}}}}}. ",
|
||||
" .>>>>>>>>>>>>>>>}}:;)));:}}}>>>>>>>>>>. ",
|
||||
" .}>>>>>>>>>>>>>,,%)[*~*2$3,,>>>>>>>>}}. ",
|
||||
" .>,>,>,>,>,>,>},<4!({/'|!)<,,>,>,>}>}>. ",
|
||||
" .>}}>}>}>}>}>}},:-~'////(-:,,}>}>}>}}}. ",
|
||||
" .}}}}}}}}}}}}},%;[|/////|!;%,}}}}}}}}}. ",
|
||||
" .>><}<}}}<}}<}<342|/////12=%<}<}}<}>><. ",
|
||||
" .<<<}<<<<<}<><%:;[~'///^~_;<%}<<}<<<<<. ",
|
||||
" .<<}<<}<<<<<<<%3;[!(+^]~2);%<<<<<><<<<. ",
|
||||
" .<<<<<<<<<<<:%3;;)-*~~*2);;3<<<<:<<:<:. ",
|
||||
" .:<<:<<<<::<;;;4[[2**~*[);3:<:<<<:::<:. ",
|
||||
" .:::::::::3;;$[-2~~~~~*-$;;::<=:3:::3;. ",
|
||||
" .=::::=:::;;;[2~~&@^'/]!$;;:::::33:::;. ",
|
||||
" .:==:=:::=3$[-]^'/////|*)$;=;3===:;=:=. ",
|
||||
" .;;;;;;4;;;$)!////////&*[$;==;;:==;;=;. ",
|
||||
" .=========$)$*~|+'////.~$$$;;==4;;==4=. ",
|
||||
" .)4444444=$4$[~..^///^~*[44=)4===44=4). ",
|
||||
" .44))4)=444$[-*~.////^.*-$44)=))_==)4). ",
|
||||
" .=====)=)=)$$$*~&////@~*-$)=_4)4)))==). ",
|
||||
" .____)))[)))[-*~@////#~!--=))_)=)))))[. ",
|
||||
" ._)))[)))[))-2~.+////.~*--))))_)_)_))). ",
|
||||
" .)___)[)[)[--2*.^///'.~2--____)___)[[[. ",
|
||||
" .[[[[[[[)[[--*~.////^.~*--[[[[[[[[[_[[. ",
|
||||
" .[[[[[[[[[--2~~&////]~~*-[[[[-[[[[_[--. ",
|
||||
" .--[-[2[[[!-*~~@////@.**2[[[[[[[2-!_!-. ",
|
||||
" .!!2!!!!2!!2*~.+////&~~***!!!22!!!2!!!. ",
|
||||
" .!!!2!2!22*2*~.^////..~**2*2!!2!!!22!*. ",
|
||||
" .***!*!*!!**~~./////..~~~*****!*2*!!*!. ",
|
||||
" .!!*!*!*****~~./////&..~~~~***!!!**!**. ",
|
||||
" .*~!~**~***~~../////{@@^+~~**~*~*~!**~. ",
|
||||
" .~*~!~!~!~~*~~.'////////+~~~~**~!~~!~*. ",
|
||||
" .*~~~!~~~*~~~~.@/////{+#.~~~~~~!~~~~!~. ",
|
||||
" .~~~~~~~~~~~~~...@@#...~.~~~~~~~~~~~~~. ",
|
||||
" .~~~~~~~~~~~~~~~......~.~~~~~~~~~~~~~~. ",
|
||||
" .~~~~~~~~~~~.~.~.~.~.~.~.~~~~~~~~~~~.~. ",
|
||||
" .~.~.~.~~.~.~~.~.~.~.~.~.~.~.~.~.~.~~.. ",
|
||||
" ....................................... ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
188
yawmppp/src/gtksetup/msgbox.c
Normal file
188
yawmppp/src/gtksetup/msgbox.c
Normal file
|
@ -0,0 +1,188 @@
|
|||
/*
|
||||
|
||||
Message Box Composite Widget
|
||||
(currently included in various software packages)
|
||||
Copyright (C) 1999-2000 Felipe Paulo Guazzi Bergo
|
||||
bergo@seul.org
|
||||
|
||||
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 <string.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include "msgbox.h"
|
||||
|
||||
#include "bong.xpm"
|
||||
#include "exclam.xpm"
|
||||
#include "info.xpm"
|
||||
#include "question.xpm"
|
||||
|
||||
/* PRIVATE */
|
||||
|
||||
void message_box_click_yes(GtkWidget *widget,gpointer data);
|
||||
void message_box_click_no(GtkWidget *widget,gpointer data);
|
||||
void message_box_click_cancel(GtkWidget *widget,gpointer data);
|
||||
void message_box_click_ok(GtkWidget *widget,gpointer data);
|
||||
gint immortal(GtkWidget *widget,GdkEvent *event,gpointer data);
|
||||
|
||||
struct msgbox_data {
|
||||
gint answer_available;
|
||||
MsgBoxResult answer;
|
||||
} cmdata;
|
||||
|
||||
gchar ** mb_icons[5]={NULL,bong_xpm,info_xpm,exclam_xpm,question_xpm};
|
||||
|
||||
MsgBoxResult
|
||||
message_box(GtkWindow *parent,char *txt,char *title,MsgBoxType mbt,MsgBoxIcon mbi)
|
||||
{
|
||||
GtkWidget *msgbox,*b[3],*lb,*tbl,*hs;
|
||||
GdkBitmap *mask;
|
||||
GdkPixmap *dqmark;
|
||||
GtkWidget *tqmark;
|
||||
GtkStyle *style;
|
||||
int i,nb;
|
||||
|
||||
cmdata.answer_available=FALSE;
|
||||
|
||||
msgbox=gtk_window_new(GTK_WINDOW_DIALOG);
|
||||
tbl=gtk_table_new(3,4,FALSE);
|
||||
gtk_container_add(GTK_CONTAINER(msgbox),tbl);
|
||||
gtk_window_set_title(GTK_WINDOW(msgbox),title);
|
||||
if (parent!=NULL)
|
||||
gtk_window_set_transient_for(GTK_WINDOW(msgbox),parent);
|
||||
gtk_container_set_border_width(GTK_CONTAINER(msgbox),4);
|
||||
gtk_window_set_position(GTK_WINDOW(msgbox),GTK_WIN_POS_CENTER);
|
||||
gtk_window_set_policy(GTK_WINDOW(msgbox),TRUE,TRUE,TRUE);
|
||||
gtk_widget_realize(msgbox);
|
||||
|
||||
style=gtk_widget_get_style(msgbox);
|
||||
if (mbi!=MSGBOX_ICON_NONE) {
|
||||
dqmark=gdk_pixmap_create_from_xpm_d(msgbox->window,&mask,
|
||||
&style->bg[GTK_STATE_NORMAL],
|
||||
mb_icons[mbi]);
|
||||
tqmark=gtk_pixmap_new(dqmark,mask);
|
||||
gtk_table_attach(GTK_TABLE(tbl),tqmark,0,1,0,1,GTK_FILL,GTK_FILL,5,5);
|
||||
gtk_widget_show(tqmark);
|
||||
}
|
||||
|
||||
lb=gtk_label_new(txt);
|
||||
gtk_label_set_justify(GTK_LABEL(lb),GTK_JUSTIFY_LEFT);
|
||||
gtk_table_attach(GTK_TABLE(tbl),lb,1,4,0,1,GTK_FILL,GTK_FILL,10,10);
|
||||
gtk_widget_show(lb);
|
||||
|
||||
hs=gtk_hseparator_new();
|
||||
gtk_table_attach(GTK_TABLE(tbl),hs,0,4,1,2,GTK_FILL,GTK_FILL,0,10);
|
||||
gtk_widget_show(hs);
|
||||
|
||||
/* buttons */
|
||||
|
||||
switch(mbt) {
|
||||
case MSGBOX_OK:
|
||||
nb=1;
|
||||
b[0]=gtk_button_new_with_label("OK");
|
||||
gtk_signal_connect(GTK_OBJECT(b[0]),"clicked",
|
||||
GTK_SIGNAL_FUNC(message_box_click_ok),NULL);
|
||||
break;
|
||||
case MSGBOX_OKCANCEL:
|
||||
nb=2;
|
||||
b[0]=gtk_button_new_with_label("OK");
|
||||
gtk_signal_connect(GTK_OBJECT(b[0]),"clicked",
|
||||
GTK_SIGNAL_FUNC(message_box_click_ok),NULL);
|
||||
b[1]=gtk_button_new_with_label("Cancel");
|
||||
gtk_signal_connect(GTK_OBJECT(b[1]),"clicked",
|
||||
GTK_SIGNAL_FUNC(message_box_click_cancel),NULL);
|
||||
break;
|
||||
case MSGBOX_YESNO:
|
||||
nb=2;
|
||||
b[0]=gtk_button_new_with_label("Yes");
|
||||
gtk_signal_connect(GTK_OBJECT(b[0]),"clicked",
|
||||
GTK_SIGNAL_FUNC(message_box_click_yes),NULL);
|
||||
b[1]=gtk_button_new_with_label("No");
|
||||
gtk_signal_connect(GTK_OBJECT(b[1]),"clicked",
|
||||
GTK_SIGNAL_FUNC(message_box_click_no),NULL);
|
||||
break;
|
||||
case MSGBOX_YESNOCANCEL:
|
||||
nb=3;
|
||||
b[0]=gtk_button_new_with_label("Yes");
|
||||
gtk_signal_connect(GTK_OBJECT(b[0]),"clicked",
|
||||
GTK_SIGNAL_FUNC(message_box_click_yes),NULL);
|
||||
b[1]=gtk_button_new_with_label("No");
|
||||
gtk_signal_connect(GTK_OBJECT(b[1]),"clicked",
|
||||
GTK_SIGNAL_FUNC(message_box_click_no),NULL);
|
||||
b[2]=gtk_button_new_with_label("Cancel");
|
||||
gtk_signal_connect(GTK_OBJECT(b[2]),"clicked",
|
||||
GTK_SIGNAL_FUNC(message_box_click_cancel),NULL);
|
||||
break;
|
||||
default:
|
||||
nb=0;
|
||||
}
|
||||
|
||||
for(i=0;i<nb;i++)
|
||||
gtk_table_attach(GTK_TABLE(tbl),b[i],
|
||||
4-nb+i,4-nb+i+1,
|
||||
2,3,
|
||||
GTK_FILL,
|
||||
(i?GTK_SHRINK:GTK_FILL),2,2);
|
||||
|
||||
GTK_WIDGET_SET_FLAGS(b[0],GTK_CAN_DEFAULT);
|
||||
gtk_widget_grab_default(b[0]);
|
||||
|
||||
for(i=0;i<nb;i++)
|
||||
gtk_widget_show(b[i]);
|
||||
|
||||
gtk_signal_connect(GTK_OBJECT(msgbox),"delete_event",
|
||||
GTK_SIGNAL_FUNC(immortal),NULL);
|
||||
|
||||
gtk_widget_show(tbl);
|
||||
gtk_widget_show(msgbox);
|
||||
gtk_grab_add(msgbox);
|
||||
|
||||
/* gtk_main MUST be running before message_box is called!!! */
|
||||
while(!cmdata.answer_available)
|
||||
gtk_main_iteration();
|
||||
|
||||
gtk_grab_remove(msgbox);
|
||||
gtk_widget_destroy(msgbox);
|
||||
|
||||
return(cmdata.answer);
|
||||
}
|
||||
|
||||
void message_box_click_yes(GtkWidget *widget,gpointer data) {
|
||||
cmdata.answer=MSGBOX_R_YES;
|
||||
cmdata.answer_available=TRUE;
|
||||
}
|
||||
|
||||
void message_box_click_no(GtkWidget *widget,gpointer data) {
|
||||
cmdata.answer=MSGBOX_R_NO;
|
||||
cmdata.answer_available=TRUE;
|
||||
}
|
||||
|
||||
void message_box_click_cancel(GtkWidget *widget,gpointer data) {
|
||||
cmdata.answer=MSGBOX_R_CANCEL;
|
||||
cmdata.answer_available=TRUE;
|
||||
}
|
||||
|
||||
void message_box_click_ok(GtkWidget *widget,gpointer data) {
|
||||
cmdata.answer=MSGBOX_R_OK;
|
||||
cmdata.answer_available=TRUE;
|
||||
}
|
||||
|
||||
gint immortal(GtkWidget *widget,GdkEvent *event,gpointer data) {
|
||||
return TRUE;
|
||||
}
|
||||
|
100
yawmppp/src/gtksetup/msgbox.h
Normal file
100
yawmppp/src/gtksetup/msgbox.h
Normal file
|
@ -0,0 +1,100 @@
|
|||
/* GPL'd (C) 1999-2000 Felipe Bergo -- bergo@seul.org */
|
||||
|
||||
/*
|
||||
|
||||
This module is built up of the following files:
|
||||
|
||||
msgbox.h
|
||||
msgbox.cc _OR_ msgbox.c
|
||||
question.xpm
|
||||
bong.xpm
|
||||
exclamation.xpm
|
||||
info.xpm
|
||||
|
||||
*/
|
||||
|
||||
/* return values */
|
||||
|
||||
#ifndef FB_MSGBOX_H
|
||||
#define FB_MSGBOX_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
/* ENUMS */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MSGBOX_ICON_NONE,
|
||||
MSGBOX_ICON_ERROR,
|
||||
MSGBOX_ICON_INFO,
|
||||
MSGBOX_ICON_EXCLAMATION,
|
||||
MSGBOX_ICON_QUESTION
|
||||
} MsgBoxIcon;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MSGBOX_OK,
|
||||
MSGBOX_OKCANCEL,
|
||||
MSGBOX_YESNO,
|
||||
MSGBOX_YESNOCANCEL
|
||||
} MsgBoxType;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
MSGBOX_R_OK,
|
||||
MSGBOX_R_YES,
|
||||
MSGBOX_R_NO,
|
||||
MSGBOX_R_CANCEL
|
||||
} MsgBoxResult;
|
||||
|
||||
/* prototype */
|
||||
|
||||
/*
|
||||
obs 1: this call blocks until the user picks a choice.
|
||||
obs 2: parent can be NULL.
|
||||
obs 3: you must have a gtk_main loop running before calling it.
|
||||
*/
|
||||
|
||||
MsgBoxResult message_box(GtkWindow *parent,
|
||||
char *txt,
|
||||
char *title,
|
||||
MsgBoxType mbt,
|
||||
MsgBoxIcon mbi);
|
||||
|
||||
/*
|
||||
excerpt from my 900-page book
|
||||
|
||||
"The Ultimate Guide to Message Box Icons
|
||||
Felipe Bergo - 0th edition
|
||||
Prentice Room publishers,
|
||||
ISBN 6666-6666-6666"
|
||||
|
||||
MSGBOX_ICON_NONE No icon.
|
||||
|
||||
MSGBOX_ICON_ERROR Should be used on errors, i.e.,
|
||||
something wrong really happened.
|
||||
Currently included icon is a white
|
||||
cross in a red circle. "bong.xpm"
|
||||
|
||||
MSGBOX_ICON_QUESTION Should be used on any questions, like
|
||||
confirmations. Currently included
|
||||
icon is a white question mark in a
|
||||
green circle. "question.xpm"
|
||||
|
||||
MSGBOX_ICON_EXCLAMATION Should be used on warnings, like when
|
||||
your code tries to allocate a resource
|
||||
and it is busy (and being busy is "normal").
|
||||
Currently included icon is a black exclamation
|
||||
mark in an yellow triangle.
|
||||
|
||||
MSGBOX_ICON_INFO Should be used on general informative
|
||||
messages, like "Operation Finished",
|
||||
"Scan finished: 999999 blocks,
|
||||
999998 bad, 1 good.", and the like.
|
||||
Currently included icon is a white "i"
|
||||
in a blue square.
|
||||
|
||||
The return value is an enum of MsgBoxResult type.
|
||||
*/
|
||||
|
||||
#endif
|
140
yawmppp/src/gtksetup/padlock.xpm
Normal file
140
yawmppp/src/gtksetup/padlock.xpm
Normal file
|
@ -0,0 +1,140 @@
|
|||
/* XPM */
|
||||
static char * padlock_xpm[] = {
|
||||
"64 64 73 1",
|
||||
" c None",
|
||||
". c #020202",
|
||||
"+ c #464646",
|
||||
"@ c #818181",
|
||||
"# c #C2C2C2",
|
||||
"$ c #3D3326",
|
||||
"% c #929292",
|
||||
"& c #5F5E5C",
|
||||
"* c #B59470",
|
||||
"= c #262626",
|
||||
"- c #FEE6BE",
|
||||
"; c #2C221B",
|
||||
"> c #ACACAC",
|
||||
", c #8F6E52",
|
||||
"' c #DDC097",
|
||||
") c #B4B4B4",
|
||||
"! c #DADADA",
|
||||
"~ c #231E19",
|
||||
"{ c #BFA787",
|
||||
"] c #1C1A18",
|
||||
"^ c #8A8A8A",
|
||||
"/ c #BABABA",
|
||||
"( c #D4D4D4",
|
||||
"_ c #777777",
|
||||
": c #CECECE",
|
||||
"< c #8E8E8E",
|
||||
"[ c #5E4636",
|
||||
"} c #171411",
|
||||
"| c #666666",
|
||||
"1 c #4C392D",
|
||||
"2 c #A27E5E",
|
||||
"3 c #D2B792",
|
||||
"4 c #F4D2A5",
|
||||
"5 c #DEDEDE",
|
||||
"6 c #A98561",
|
||||
"7 c #D9B287",
|
||||
"8 c #707070",
|
||||
"9 c #110E0B",
|
||||
"0 c #9E7A5A",
|
||||
"a c #F1CA9E",
|
||||
"b c #989693",
|
||||
"c c #FDDEB1",
|
||||
"d c #5E4A36",
|
||||
"e c #9A9A9A",
|
||||
"f c #6C543E",
|
||||
"g c #424242",
|
||||
"h c #6A6A6A",
|
||||
"i c #F8F8F8",
|
||||
"j c #565656",
|
||||
"k c #2A2A2A",
|
||||
"l c #0B0A08",
|
||||
"m c #ECC698",
|
||||
"n c #795E46",
|
||||
"o c #463E30",
|
||||
"p c #B08C66",
|
||||
"q c #E2E2E2",
|
||||
"r c #E8E8E8",
|
||||
"s c #2E2A26",
|
||||
"t c #4A4A4A",
|
||||
"u c #CDA67E",
|
||||
"v c #505050",
|
||||
"w c #A4A4A4",
|
||||
"x c #D1AE84",
|
||||
"y c #060606",
|
||||
"z c #594636",
|
||||
"A c #E7C094",
|
||||
"B c #534131",
|
||||
"C c #7E624A",
|
||||
"D c #3C2D21",
|
||||
"E c #C09A72",
|
||||
"F c #DEB78B",
|
||||
"G c #F0F0F0",
|
||||
"H c #CACACA",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" .kjjjjvg}. ",
|
||||
" ]hw(!(:#)_gl. ",
|
||||
" }%5qq!(::H#w_k. ",
|
||||
" 9^rrrq5!(:H##/b~. ",
|
||||
" 9#GGr:v==~$%#))b}. ",
|
||||
" .wiii_9y ylgw)>^l. ",
|
||||
" ^Giirh .t>)w8. ",
|
||||
" .eiiG@. .vw>@. ",
|
||||
" ]eGi)y .@w^}. ",
|
||||
" 8(GG)l ._ww|. ",
|
||||
" _!rrwy .hweh. ",
|
||||
" 8(q(j. .e/)8. ",
|
||||
" 8(5#] .b)>h. ",
|
||||
" 8H(/] .%>>|. ",
|
||||
" hH(/] .<>w<g ",
|
||||
" .&#:)] .@ww<v ",
|
||||
" twHH>] ._ee_= ",
|
||||
" tw##w] ,,y_b%&. ",
|
||||
" $</#e] ...$$;,,,,;_%<&.~; ",
|
||||
" .j>)b9lyAAFFac44mo8<^&f2.., ",
|
||||
" n$j>)b+4ccc----c4'o+@8o&'mB... ",
|
||||
" ByD~&w>eBm4ccccccc!'b];]$*'a{... ",
|
||||
" 9}nn7,&w>%oFAa444444am3x{{x#mE9.9. ",
|
||||
" ..s7xuCjew<ouFAa44444am'333''}l]s;. ",
|
||||
" .xy.,En]&%k;{FAmmaaaaammm''7y.~1D;. ",
|
||||
" .FACyfCvy.}2{u7AAAmmmmAm20o}]f[1D;. ",
|
||||
" .FAudDlD0p*EEx77FAFFAooo.zBnnf[B$;. ",
|
||||
" .FAu2nDly*EEuuux~9}99lEp6p0,Cf[1$;. ",
|
||||
" .Fau6nBDy..y.yllyu7AaA7uEp2,Cfd1D;. ",
|
||||
" .Fmu6nBD.BBfn,06Eu7AaAFuEp2,CfdBD;. ",
|
||||
" .Fmu6CBDyBBfn,0pEu7Aam7uEp2,Cfd1$;. ",
|
||||
" .Fmu6CBDyzzfn,06Eu7AaAFuEp2,Cfd1$;. ",
|
||||
" .Fmu6nBDyBBfn,06Eu7Aam7uEp2,Cf[1D;. ",
|
||||
" .Fmu6CBD.[[fn,26Eu7AaAFuEp2,CfdBD;. ",
|
||||
" .Fmu6CBDyBBfn,06Eu7Aam7uEp2,Cfd1$;. ",
|
||||
" .Fmu6CBD.[Bfn,26EuxAaAFuEp6,Cfd1$;. ",
|
||||
" .Fmu6CBDyBBfn,06Eu7AamFuEp2,Cf[1D;. ",
|
||||
" .Fmu6CBDyz[fn,26EuxAaAFuEp2,CfdBD;. ",
|
||||
" .Fmu6CBD.BBfn,0pEu7AaAFuEp2,Cfd1$;. ",
|
||||
" .Fmu6nBDy[Bfn,06Eu7AaAFuEp2,Cfd1$;. ",
|
||||
" .Fmu6CB$.BBfn,06Eu7AaAFuEp2,Cf[1D]. ",
|
||||
" .Fmu6CBDyB[fn,26Eu7AaAFuEp2,CfdBD. ",
|
||||
" .Fmu6nBDyBBfn,0pEu7AaAFuEp2,Cfd19. ",
|
||||
" .Fmu6CBDy[Bfn,06EuxAaAFuEp2,Cfd9. ",
|
||||
" .pmu6CBDyBBfn,06Eu7AaAFuEp2,C$.. ",
|
||||
" .2u6nBDyz[fn,06Eu7AaAFuEp2dD. ",
|
||||
" y;,CBD.BBfn,0pEu7AaAFuE0]. ",
|
||||
" ..nBDy[Bfn,06Eu7AaAF$... ",
|
||||
" ..y;.BBfn,0pEE6*E... ",
|
||||
" ...zBfnD$1zB... ",
|
||||
" .l999. ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
100
yawmppp/src/gtksetup/pppdoc.xpm
Normal file
100
yawmppp/src/gtksetup/pppdoc.xpm
Normal file
|
@ -0,0 +1,100 @@
|
|||
/* XPM */
|
||||
static char * pppdoc_xpm[] = {
|
||||
"32 32 65 1",
|
||||
" c None",
|
||||
". c #010401",
|
||||
"+ c #FBFAFB",
|
||||
"@ c #A6A3A5",
|
||||
"# c #4E4A4F",
|
||||
"$ c #C6C9C7",
|
||||
"% c #D8D7D8",
|
||||
"& c #E8EBE9",
|
||||
"* c #919492",
|
||||
"= c #9A90E3",
|
||||
"- c #958BC8",
|
||||
"; c #A79ADD",
|
||||
"> c #2B3264",
|
||||
", c #4E5285",
|
||||
"' c #64589F",
|
||||
") c #BB9CF9",
|
||||
"! c #6B62B1",
|
||||
"~ c #7F60F1",
|
||||
"{ c #836DE4",
|
||||
"] c #4F4CBD",
|
||||
"^ c #836DCA",
|
||||
"/ c #A485FF",
|
||||
"( c #906FFF",
|
||||
"_ c #8178C9",
|
||||
": c #47408D",
|
||||
"< c #8D7CD5",
|
||||
"[ c #001256",
|
||||
"} c #011080",
|
||||
"| c #693BFF",
|
||||
"1 c #6A5BD8",
|
||||
"2 c #7C6895",
|
||||
"3 c #37318E",
|
||||
"4 c #9C7AFB",
|
||||
"5 c #7056F5",
|
||||
"6 c #5A41D8",
|
||||
"7 c #071256",
|
||||
"8 c #2B25B0",
|
||||
"9 c #001143",
|
||||
"0 c #0F2292",
|
||||
"a c #463FA4",
|
||||
"b c #000B7A",
|
||||
"c c #422ED9",
|
||||
"d c #B9BCBA",
|
||||
"e c #22247D",
|
||||
"f c #4630EB",
|
||||
"g c #7F5CFF",
|
||||
"h c #8568FF",
|
||||
"i c #7A57FF",
|
||||
"j c #9E87D8",
|
||||
"k c #7047F4",
|
||||
"l c #3120CF",
|
||||
"m c #5E27FF",
|
||||
"n c #3B0FDC",
|
||||
"o c #14257B",
|
||||
"p c #A693D6",
|
||||
"q c #6D40FF",
|
||||
"r c #AD95FF",
|
||||
"s c #14205B",
|
||||
"t c #001299",
|
||||
"u c #1406C7",
|
||||
"v c #2417A4",
|
||||
"w c #CFBAFF",
|
||||
"x c #09219E",
|
||||
"y c #00138C",
|
||||
"z c #C7ABFE",
|
||||
" ",
|
||||
" ............... ",
|
||||
" .+++++++++++++.. ",
|
||||
" .+++++++++++++.@. ",
|
||||
" .++#++#++##+++.+@. ",
|
||||
" .++#+#+#+#+#++.++@. ",
|
||||
" .++#+#+++#+#++...... ",
|
||||
" .++#++#++##++++$%$%. ",
|
||||
" .++#+++#+#+++++++++. ",
|
||||
" .++#+#+#+#+++++++++. ",
|
||||
" .&&#&&#&&#&&&&&&&&&. ",
|
||||
" .&&&&&&&&&&&&&&+&&&...... ",
|
||||
" .&&********@****...#=--;>. ",
|
||||
" .%%&%&%&%&%%%&..,'))-'!~{]. ",
|
||||
" .%%%%%%%%%%%..'^//(_:<[}|12. ",
|
||||
" .$$*******$.3/4]:5678~9[0a>. ",
|
||||
" .$$$$$$$$$._~/'>->b[85c1[3'. ",
|
||||
" .$$$$$d$$._((c9a/7efgfhg1>. ",
|
||||
" .ddddddd.=h4i898hf||]jekh-. ",
|
||||
" .........'{h|l9h|mn!aop!{{;. ",
|
||||
" .}}q|c9l|mml]p,'3r(j. ",
|
||||
" .sti|u9tu|q|lo^^!ok~). ",
|
||||
" .77vv8[}blgqqc:86gr)w2.",
|
||||
" .so^i:}xyychq|k{=wz/j2.",
|
||||
" ...39bbbyx6i|/wwrgq4. ",
|
||||
" .7tyyyytl4)4~g~^^. ",
|
||||
" ..}xxyyb5gi~4:.. ",
|
||||
" ..oyybfi5^.. ",
|
||||
" ..[}{:.. ",
|
||||
" .... ",
|
||||
" ",
|
||||
" "};
|
100
yawmppp/src/gtksetup/question.xpm
Normal file
100
yawmppp/src/gtksetup/question.xpm
Normal file
|
@ -0,0 +1,100 @@
|
|||
/* XPM */
|
||||
static char * question_xpm[] = {
|
||||
"64 64 33 1",
|
||||
" c None",
|
||||
". c #020204",
|
||||
"+ c #41891C",
|
||||
"@ c #1C4807",
|
||||
"# c #256812",
|
||||
"$ c #6BC22C",
|
||||
"% c #889C80",
|
||||
"& c #4EA624",
|
||||
"* c #2D470C",
|
||||
"= c #516D44",
|
||||
"- c #618C40",
|
||||
"; c #54B62A",
|
||||
"> c #1E570D",
|
||||
", c #337817",
|
||||
"' c #0D3104",
|
||||
") c #093704",
|
||||
"! c #46981F",
|
||||
"~ c #2F5713",
|
||||
"{ c #BEC7BA",
|
||||
"] c #E7EAE6",
|
||||
"^ c #76B32C",
|
||||
"/ c #AAB6A3",
|
||||
"( c #AAC2A4",
|
||||
"_ c #D1D9CE",
|
||||
": c #497A2A",
|
||||
"< c #FEFEFC",
|
||||
"[ c #5E9A27",
|
||||
"} c #62A927",
|
||||
"| c #071E04",
|
||||
"1 c #677A5C",
|
||||
"2 c #65B82C",
|
||||
"3 c #396819",
|
||||
"4 c #203A05",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" .......... ",
|
||||
" ...,,,333~>>@... ",
|
||||
" ..+++-+::333#>>>@@.. ",
|
||||
" ..!![[[[-++:,33#>>@@@).. ",
|
||||
" .![&[[[[[-+:::33#~>>@@@4). ",
|
||||
" .[&}}}}}[[[-+,,33##~~~@*444. ",
|
||||
" .&}};;;}}}[++:33#~~~~~~*@444). ",
|
||||
" .[}};;;&&[-+:,33~~>*>~~~~**444). ",
|
||||
" .&&}^2;;;&+:333~**4444***~*@4444'. ",
|
||||
" .!}}22;;;&+:3==-%%%1**44*****44'4)'. ",
|
||||
" .[}}^2$2&[3~%{_{/_<<<_%*4****4444''. ",
|
||||
" .!}}}^$$2}:3/]<1~*=/<<<<{~4***444'4''. ",
|
||||
" .[[^^^$$^[:{<<<1*~>*<<<<<_*44*44'4'''. ",
|
||||
" .+[[}^^$22--<<<<_~>*@{<<<<<%4**444|4'4'. ",
|
||||
" .+[[^}^$$}[%<<<<<:#>@/<<<<</44*4444|4''. ",
|
||||
" .-[[}}22$2&[<<<<<-#>@/<<<<</4**44|44444. ",
|
||||
" .++[[}};;;2}[(<<<_,#>){<<<<<=4**4444|4'4'. ",
|
||||
" .,+[[[&;;;;2&![}!,,#>@<<<<</44**444444444. ",
|
||||
" .,,+!&&&;;;22}[!!+,#>%<<<<{****444444444). ",
|
||||
" .,+++!!&&;;;;2;&!!,#3]<<]%~@>@**444444444. ",
|
||||
" .#,++!!!&&&;;2}&&+,>%<</3**~>*@4'4444444'. ",
|
||||
" .#,,++!!!&&&};;&!+,,<]1@>>>~>@*4'44444444. ",
|
||||
" .##,,++!+!!!&&&&!+#%_,>>~>~~~@@44444444'4. ",
|
||||
" .>##,,+++!!!!!!!!,#(%>>#>#>>**4'4444444'4. ",
|
||||
" .>###,,++,+!!+!+,,#(#>>>~>~~@*44444444|4'. ",
|
||||
" .>>###,,+,+,+++,,##:~>>#>~>@*@444444444''. ",
|
||||
" .>>###,,,,,,,,,#>>@@@@>>@*@44@44444'|'|. ",
|
||||
" .>>>######,,###>@=-1~4*@*@@444@4444'44'. ",
|
||||
" .@@>>>#######>>@%]]<_=444444@4)44''|'|'. ",
|
||||
" .@@@@>>>>>>>>@3<<<<<]')4444444''4'4''. ",
|
||||
" .)@@@@@>@>>@@)=<<<<<]|'4)4))4)4''''|'. ",
|
||||
" .)))@)@@@@@@)4_<<<<%|''44)4))'''''). ",
|
||||
" .))))))))))))'4%{{1'|4')4)))))')'''. ",
|
||||
" .)'')))))))'|||||||'''))))))))))). ",
|
||||
" .)''''))'''''|||'|''''')')')))). ",
|
||||
" .'''''''''''''''''''')))))')). ",
|
||||
" .''''))''''''''''')'')))))'. ",
|
||||
" .)''''))))''''''''))))))). ",
|
||||
" ..')')'))''''''''')')).. ",
|
||||
" ..)))')')''''))))).. ",
|
||||
" ...))')''''''... ",
|
||||
" .......... ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
175
yawmppp/src/isprc.c
Normal file
175
yawmppp/src/isprc.c
Normal file
|
@ -0,0 +1,175 @@
|
|||
/*
|
||||
|
||||
YAWMPPP - PPP dock app/helper for WindowMaker
|
||||
Copyright (C) 2000:
|
||||
|
||||
Authors: Felipe Bergo (bergo@seul.org)
|
||||
|
||||
contains code from the wmppp application by
|
||||
Martijn Pieterse (pieterse@xs4all.nl)
|
||||
Antoine Nulle (warp@xs4all.nl)
|
||||
|
||||
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 <string.h>
|
||||
#include "isprc.h"
|
||||
|
||||
int
|
||||
GetISPInfo(char *rcname,struct YAWMPPP_ISP_INFO *wii,int max)
|
||||
{
|
||||
FILE *f;
|
||||
int num_isps;
|
||||
char temp[512],work[512];
|
||||
char *q;
|
||||
char *tokens=" :\n\t";
|
||||
char *tokens2="\n";
|
||||
|
||||
memset(&wii[0],0,sizeof(struct YAWMPPP_ISP_INFO));
|
||||
|
||||
f=fopen(rcname,"r");
|
||||
if (!f) return 0;
|
||||
|
||||
num_isps=0;
|
||||
|
||||
/* level 0 */
|
||||
while( fgets(temp,128,f) ) {
|
||||
strcpy(work,temp);
|
||||
q=work;
|
||||
q=strtok(q,tokens);
|
||||
if (!q) continue;
|
||||
if (!strcmp(q,"ISP.BEGIN")) {
|
||||
if (num_isps>=max) continue;
|
||||
|
||||
/* enter ISP.BEGIN block */
|
||||
memset(&wii[num_isps],0,sizeof(struct YAWMPPP_ISP_INFO));
|
||||
|
||||
wii[num_isps].ppp.override=0;
|
||||
wii[num_isps].ppp.noipdefault=1;
|
||||
wii[num_isps].ppp.noauth=1;
|
||||
wii[num_isps].ppp.passive=0;
|
||||
wii[num_isps].ppp.defaultroute=1;
|
||||
wii[num_isps].ppp.chap=AUTH_DONTCARE;
|
||||
wii[num_isps].ppp.pap=AUTH_DONTCARE;
|
||||
|
||||
while( fgets(temp,128,f) ) {
|
||||
strcpy(work,temp);
|
||||
q=work;
|
||||
q=strtok(q,tokens);
|
||||
|
||||
if (!strcmp(q,KEY_LONGNAME)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].LongName,q,128);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_SHORTNAME)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].ShortName,q,16);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_STARTACTION)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].StartAction,q,512);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_STOPACTION)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].StopAction,q,512);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_IFDOWNACTION)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].IfDownAction,q,512);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_SPEEDACTION)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].SpeedAction,q,512);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_PPPSTUFF)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].PPPLine,q,512);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_CHATSTUFF)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].ChatFile,q,512);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_USER)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].User,q,32);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_PHONE)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) strncpy(wii[num_isps].Phone,q,32);
|
||||
continue;
|
||||
}
|
||||
/* ppp options per ISP */
|
||||
if (!strcmp(q,KEY_PPP_OVER)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) wii[num_isps].ppp.override=atoi(q);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_PPP_DEFAULTROUTE)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) wii[num_isps].ppp.defaultroute=atoi(q);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_PPP_PASSIVE)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) wii[num_isps].ppp.passive=atoi(q);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_PPP_NOAUTH)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) wii[num_isps].ppp.noauth=atoi(q);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_PPP_NOIPDEFAULT)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) wii[num_isps].ppp.noipdefault=atoi(q);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_PPP_CHAP)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) wii[num_isps].ppp.chap=atoi(q);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_PPP_PAP)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) wii[num_isps].ppp.pap=atoi(q);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,KEY_NOLOGIN)) {
|
||||
q=strtok(NULL,tokens2);
|
||||
if (q) wii[num_isps].nologin=atoi(q);
|
||||
continue;
|
||||
}
|
||||
if (!strcmp(q,"ISP.END")) {
|
||||
num_isps++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
fclose(f);
|
||||
return(num_isps);
|
||||
}
|
64
yawmppp/src/isprc.h
Normal file
64
yawmppp/src/isprc.h
Normal file
|
@ -0,0 +1,64 @@
|
|||
|
||||
#ifndef YAWMPPP_ISPRC_H
|
||||
#define YAWMPPP_ISPRC_H
|
||||
|
||||
#define KEY_LONGNAME "LongName"
|
||||
#define KEY_SHORTNAME "ShortName"
|
||||
#define KEY_STARTACTION "StartAction"
|
||||
#define KEY_STOPACTION "StopAction"
|
||||
#define KEY_SPEEDACTION "SpeedAction"
|
||||
#define KEY_IFDOWNACTION "IfDownAction"
|
||||
#define KEY_USER "User"
|
||||
#define KEY_PHONE "Phone"
|
||||
|
||||
#define KEY_PPP_OVER "PPPOptionsOverride"
|
||||
#define KEY_PPP_DEFAULTROUTE "PPPDefaultRoute"
|
||||
#define KEY_PPP_PASSIVE "PPPPassive"
|
||||
#define KEY_PPP_NOAUTH "PPPNoAuth"
|
||||
#define KEY_PPP_NOIPDEFAULT "PPPNoIPDefault"
|
||||
|
||||
#define KEY_PPP_CHAP "PPPChap"
|
||||
#define KEY_PPP_PAP "PPPPap"
|
||||
|
||||
#define KEY_NOLOGIN "NoLogin"
|
||||
|
||||
#define KEY_PPPSTUFF "PPPLine"
|
||||
#define KEY_CHATSTUFF "ChatFile"
|
||||
|
||||
#define AUTH_REQUIRE 0
|
||||
#define AUTH_REFUSE 1
|
||||
#define AUTH_DONTCARE 2
|
||||
|
||||
struct ISP_PPP {
|
||||
int override;
|
||||
int defaultroute;
|
||||
int passive;
|
||||
int noauth;
|
||||
int noipdefault;
|
||||
int chap;
|
||||
int pap;
|
||||
int usepeerdns;
|
||||
};
|
||||
|
||||
struct YAWMPPP_ISP_INFO {
|
||||
char LongName[128];
|
||||
char ShortName[16];
|
||||
char StartAction[512];
|
||||
char StopAction[512];
|
||||
char SpeedAction[512];
|
||||
char IfDownAction[512];
|
||||
char PPPLine[512];
|
||||
char ChatFile[512];
|
||||
char User[32];
|
||||
char Phone[32];
|
||||
|
||||
struct ISP_PPP ppp;
|
||||
|
||||
int nologin;
|
||||
};
|
||||
|
||||
int
|
||||
GetISPInfo(char *rcname,struct YAWMPPP_ISP_INFO *wii,int max);
|
||||
|
||||
#endif
|
||||
|
169
yawmppp/src/list.c
Normal file
169
yawmppp/src/list.c
Normal file
|
@ -0,0 +1,169 @@
|
|||
/* Generic single linked list to keep various information
|
||||
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
|
||||
|
||||
|
||||
Author: Kresten Krab Thorup
|
||||
|
||||
Many modifications by Alfredo K. Kojima
|
||||
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, 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;
|
||||
}
|
||||
}
|
59
yawmppp/src/list.h
Normal file
59
yawmppp/src/list.h
Normal file
|
@ -0,0 +1,59 @@
|
|||
/* Generic single linked list to keep various information
|
||||
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
|
||||
|
||||
Author: Kresten Krab Thorup
|
||||
|
||||
This file is part of GNU CC.
|
||||
|
||||
GNU CC is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2, or (at your option)
|
||||
any later version.
|
||||
|
||||
GNU CC is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with GNU CC; see the file COPYING. If not, write to
|
||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||
Boston, MA 02111-1307, 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
|
164
yawmppp/src/misc.c
Normal file
164
yawmppp/src/misc.c
Normal file
|
@ -0,0 +1,164 @@
|
|||
/* dock.c- built-in Dock module for WindowMaker
|
||||
*
|
||||
* WindowMaker window manager
|
||||
*
|
||||
* Copyright (c) 1997 Alfredo K. Kojima
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, 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;
|
||||
}
|
9
yawmppp/src/misc.h
Normal file
9
yawmppp/src/misc.h
Normal file
|
@ -0,0 +1,9 @@
|
|||
#ifndef __MISC_H
|
||||
#define __MISC_H
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
extern void parse_command(char *, char ***, int *);
|
||||
|
||||
extern pid_t execCommand(char *);
|
||||
#endif /* __MISC_H */
|
115
yawmppp/src/stepphone.xpm
Normal file
115
yawmppp/src/stepphone.xpm
Normal file
|
@ -0,0 +1,115 @@
|
|||
/* XPM */
|
||||
static char * stepphone_xpm[] = {
|
||||
"48 48 64 1",
|
||||
" c None",
|
||||
". c #020202",
|
||||
"+ c #E6E6E6",
|
||||
"@ c #9A9A9A",
|
||||
"# c #5E5E5E",
|
||||
"$ c #424242",
|
||||
"% c #363636",
|
||||
"& c #222222",
|
||||
"* c #B2B2B2",
|
||||
"= c #8A8A8A",
|
||||
"- c #1A1A1A",
|
||||
"; c #EAEAEA",
|
||||
"> c #EEEEEE",
|
||||
", c #161616",
|
||||
"' c #D2D2D2",
|
||||
") c #767676",
|
||||
"! c #525252",
|
||||
"~ c #F2F2F2",
|
||||
"{ c #0E0E0E",
|
||||
"] c #F6F6F6",
|
||||
"^ c #6E6E6E",
|
||||
"/ c #BABABA",
|
||||
"( c #FAFAFA",
|
||||
"_ c #4E4E4E",
|
||||
": c #BEBEBE",
|
||||
"< c #9E9E9E",
|
||||
"[ c #262626",
|
||||
"} c #0A0A0A",
|
||||
"| c #626262",
|
||||
"1 c #969696",
|
||||
"2 c #3A3A3A",
|
||||
"3 c #DEDEDE",
|
||||
"4 c #A2A2A2",
|
||||
"5 c #7E7E7E",
|
||||
"6 c #C2C2C2",
|
||||
"7 c #4A4A4A",
|
||||
"8 c #2A2A2A",
|
||||
"9 c #5A5A5A",
|
||||
"0 c #060606",
|
||||
"a c #FEFEFE",
|
||||
"b c #CACACA",
|
||||
"c c #A6A6A6",
|
||||
"d c #464646",
|
||||
"e c #323232",
|
||||
"f c #929292",
|
||||
"g c #666666",
|
||||
"h c #D6D6D6",
|
||||
"i c #1E1E1E",
|
||||
"j c #AEAEAE",
|
||||
"k c #565656",
|
||||
"l c #6A6A6A",
|
||||
"m c #121212",
|
||||
"n c #727272",
|
||||
"o c #8E8E8E",
|
||||
"p c #2E2E2E",
|
||||
"q c #AAAAAA",
|
||||
"r c #C6C6C6",
|
||||
"s c #DADADA",
|
||||
"t c #7A7A7A",
|
||||
"u c #828282",
|
||||
"v c #3E3E3E",
|
||||
"w c #CECECE",
|
||||
"x c #E2E2E2",
|
||||
"y c #B6B6B6",
|
||||
" ",
|
||||
" .......... ",
|
||||
" ................ ",
|
||||
" .................... ",
|
||||
" ........................ ",
|
||||
" ............................ ",
|
||||
" .............................. ",
|
||||
" ................0}}{{}00........ ",
|
||||
" ..............}{m&8peee[i;](aaaaaa ",
|
||||
" ............0{,ip$_#^n)^|7b3>(aaaaaa ",
|
||||
" ...........}m&8v!g51qy//*cof*';]aaaaaa ",
|
||||
" .........},&2_lu@*6h2vdvv2b_)<b;]aaaaa ",
|
||||
" ........},&2!noj6hvvv(]]~aa2.vl@b;(aaaaa ",
|
||||
" ......0mi%k)1/'2v%(~(aaaaa>(_0%^ch~aaaaa ",
|
||||
" ......0,p_n1/wvv]]]aaa]$dk5];$k.$5/+(aaaaa ",
|
||||
" .....}-%#=*wv2~~;aa~~a2aak)n~v$l.#cs]aaaaa ",
|
||||
" .....0-%|16v2(]+a(+;>]$t~(dqu5!9..!1h]aaaaaa ",
|
||||
" ....}-%g<b%](~aa^2d(]^d=~~$dd@0.!._@'~(aaaaa ",
|
||||
" ...0,%g@bv(~;a]5$aadnnkk;]>]($m$d.k<h]aaaaaa ",
|
||||
" ....{8kfr%(~~(x@$:(~$d$;]~]+~]]0i.pgq3]aaaaaaa ",
|
||||
" ...0-du:v~~]a>])d)]a$~~x;]^a(]+l.}8gch~aaaaaaa ",
|
||||
" ...{[94%aa~>(>xndf~]~~+]5aa%n](_^.i_=:+]aaaaaa ",
|
||||
" ...{p^yvoaaa>>>=$(]++;na(d5()aad_n.p#1r+]aaaaa ",
|
||||
" ...{en:%=n5;>+~5d]~3;;xd=~oaa%n__kg0%|<b;(aaaa ",
|
||||
" ..0m%)6vof^+_v!,0m_$2$2!,l)0-9}^g$9l.%lc'~aaaa ",
|
||||
" ...m%t:d4)n~_d$00im$$$kvd0mkmll.m$vdn.v5:+(aaa ",
|
||||
" ..0{e)/2%oo~!vm[}-m-d_vdd$mgl0{_7_dgnt}#4s]aaa ",
|
||||
" ...{e^yd4%dd{,!m0m,m-k!__v_0mdd_klgll9.71'>aaa ",
|
||||
" ...}&94v55o~97!0-[i,m,9!7$7d$d$l^^^9$n.$=w>aaa ",
|
||||
" ..0-d5/%jo)##00&m,,-ii#9$p!9^nll!v$!n.dob~(a ",
|
||||
" ..0{8k=:22d.00-m,im,-&-!d_#|^l#_d_7!t._1']aa ",
|
||||
" ...0,ekuc6h.0,,i,---,i-mk9gg_$_d7kd9.}^j3]aa ",
|
||||
" ...0,8d|5<$p00m---i---mmg7kd$_!$!..%#fr+(a ",
|
||||
" ....0{ipvk=gd8.0&-iim--m!!$$k$|..8dl163~(a ",
|
||||
" .....0m-&6c=gdp00&mim,,$_!kg..pdgojbx]aa ",
|
||||
" .......0{;srq=gd8.0m-,,9!_..pdg=j6s;](aa ",
|
||||
" ........a~;srq=gdp..m,^0.pdg=c6s;~aaaa ",
|
||||
" ........aaa~;src=g7e..0p7g=c6s;]aaaaaa ",
|
||||
" .......aaaa(~;srqon#k|n=qrs;](aaaaaa ",
|
||||
" ......aaaaaaa~;3b*c<c*b3;]aaaaaaaa ",
|
||||
" aaaaaaaaaaaaa(]>x3h3x;](aaaaaaaa ",
|
||||
" aaaaaaaaaaaaaaa(]]](aaaaaaaaaa ",
|
||||
" aaaaaaaaaaaaaaaaaaaaaaaaaaaa ",
|
||||
" aaaaaaaaaaaaaaaaaaaaaaaa ",
|
||||
" aaaaaaaaaaaaaaaaaaaa ",
|
||||
" aaaaaaaaaaaaaaaa ",
|
||||
" aaaaaaaaaa ",
|
||||
" "};
|
36
yawmppp/src/thinppp/Makefile.in
Normal file
36
yawmppp/src/thinppp/Makefile.in
Normal file
|
@ -0,0 +1,36 @@
|
|||
#
|
||||
# thinppp: non-docked PPP applet
|
||||
#
|
||||
|
||||
CC = @CC@
|
||||
CFLAGS = -Wall -O2
|
||||
GTKLIB = @GTK_LIBS@
|
||||
GTKFLAG = @GTK_FLAGS@
|
||||
RLFLAG = -DVERSION=\"@MK_YAWMPPP_RELEASE@\" -DIPREFIX=\"@prefix@\" -D@SYSDEF@
|
||||
PROGINST = @INSTALL@
|
||||
|
||||
ALLDOTOS = thinppp.o
|
||||
ALLDOTHS = thinppp.h ../isprc.h ../misc.h ../list.h ../ycommon.h
|
||||
EOBJS = ../isprc.o ../ycommon.o ../misc.o ../list.o
|
||||
|
||||
all: build_thinppp
|
||||
|
||||
build_thinppp: $(ALLDOTOS)
|
||||
$(CC) $(ALLDOTOS) $(EOBJS) -o yawmppp.thin $(GTKLIB)
|
||||
|
||||
$(ALLDOTOS): %.o : %.c $(ALLDOTHS)
|
||||
$(CC) $(CFLAGS) $(RLFLAG) $(GTKFLAG) -I.. -c $< -o $@
|
||||
|
||||
install:
|
||||
$(PROGINST) -m 0755 yawmppp.thin @prefix@/bin/yawmppp.thin
|
||||
|
||||
install-strip:
|
||||
$(PROGINST) -s -m 0755 yawmppp.thin @prefix@/bin/yawmppp.thin
|
||||
|
||||
|
||||
clean:
|
||||
rm -f $(ALLDOTOS) yawmppp.thin
|
||||
|
||||
distclean:
|
||||
rm -f Makefile *~
|
||||
|
96
yawmppp/src/thinppp/backxpm.xpm
Normal file
96
yawmppp/src/thinppp/backxpm.xpm
Normal file
|
@ -0,0 +1,96 @@
|
|||
/* XPM */
|
||||
static char * backxpm_xpm[] = {
|
||||
"320 20 73 1",
|
||||
" c None",
|
||||
". c #020204",
|
||||
"+ c #C6C6C4",
|
||||
"@ c #CACACC",
|
||||
"# c #ACAAAC",
|
||||
"$ c #8E8E8C",
|
||||
"% c #B6B6B4",
|
||||
"& c #CECECC",
|
||||
"* c #BBBBBC",
|
||||
"= c #424244",
|
||||
"- c #1E1E1C",
|
||||
"; c #2D2E2C",
|
||||
"> c #B2B2B4",
|
||||
", c #D2D2D4",
|
||||
"' c #4C4C4C",
|
||||
") c #121214",
|
||||
"! c #848288",
|
||||
"~ c #969694",
|
||||
"{ c #5E5E5C",
|
||||
"] c #727274",
|
||||
"^ c #3A3A3C",
|
||||
"/ c #262624",
|
||||
"( c #3E3E3C",
|
||||
"_ c #9A9A9C",
|
||||
": c #2A2A2C",
|
||||
"< c #565654",
|
||||
"[ c #363634",
|
||||
"} c #666664",
|
||||
"| c #626264",
|
||||
"1 c #868684",
|
||||
"2 c #767674",
|
||||
"3 c #6A6A6C",
|
||||
"4 c #212624",
|
||||
"5 c #222224",
|
||||
"6 c #F6F2FC",
|
||||
"7 c #E2E2E4",
|
||||
"8 c #C6C2C4",
|
||||
"9 c #283C38",
|
||||
"0 c #222B2B",
|
||||
"a c #A2A2A4",
|
||||
"b c #263430",
|
||||
"c c #929294",
|
||||
"d c #8A8A8C",
|
||||
"e c #7C7C7C",
|
||||
"f c #464644",
|
||||
"g c #323234",
|
||||
"h c #2A3E3C",
|
||||
"i c #263A34",
|
||||
"j c #525254",
|
||||
"k c #FEFEFC",
|
||||
"l c #766264",
|
||||
"m c #945C5C",
|
||||
"n c #7A3E3C",
|
||||
"o c #8B5254",
|
||||
"p c #7A5354",
|
||||
"q c #854A4C",
|
||||
"r c #826E6C",
|
||||
"s c #8E7E7C",
|
||||
"t c #8E5654",
|
||||
"u c #926E6C",
|
||||
"v c #8E6664",
|
||||
"w c #9F2B2C",
|
||||
"x c #AE0204",
|
||||
"y c #A41C1C",
|
||||
"z c #964A4C",
|
||||
"A c #A80E0C",
|
||||
"B c #8A7674",
|
||||
"C c #9A3A3C",
|
||||
"D c #9A2224",
|
||||
"E c #924244",
|
||||
"F c #7E5A5C",
|
||||
"G c #725E5C",
|
||||
"H c #922E2C",
|
||||
"................................................................................................................................................................................................................................................................................................................................",
|
||||
".++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++@#.++++$+++++++$%@##.",
|
||||
".&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@&#.@@*=-*&&&&&*-;*%>.",
|
||||
".,,#''##)!#~.{##.##.##.#.!###)]])^^/#^/^/{#.^^/!#############################################################################################################################################################################################;;;;;#########################;################################(.@_:--<#####[--:}].",
|
||||
".,,#_._|:##''/##/11.11/#./##|.]2^##^]^]##.#.##2^####..........................##.............................##..........................##...................................................................................###############>;;;#########################;::###..........................##^.+#;--:####{---322.",
|
||||
".,,##'')!##)~41#']'[']'#.'1#/^3]5]])~[']{5#.]]^{####.66666666666!66666666666!7##.---------------------------7##.66666666666!66666666666!8##.-----------------------------9999999999999999999999999---------------------------7######|45503###a#;a###|45503#######|45503##;;;;b##.66666666666!66666666666!8##^.@#c---3##d---2#]].",
|
||||
".&&_a$.5aae4a<fa3[5e5g3_.e[3f[33433ea['33$_.333aaaa_.6##########.6##########.7a_.5hhhh5hhhh5hhhh5hhhh5hhhh5-7a_.6##########.6##########.+a_.55hhh555hhh5555555hhh555hhh5599999999999999999999999995hhhh5hhhh5hhhh555555hhhh5-7aaaaa<5-54043aaaaaaaa<5-5404}aaaaa<5-54043aaaaaaa_.6###.##.###.6##########.+aa^.@aa|--;aa0-)2aa33.",
|
||||
".@@___g}__f5g[)__5)_)5__._)52[}3g____g}____.________.6#####.####.6####.#####.7__.-i--i-i--i-i--i-i--i-i--i-57__.6######..##.6#..###..##.8__.-i---i-i---i--i--i---i-i---i-9999999999999999999999999-i--i-i--i-i--i------i--i-57____<5-40bbb;3_~____<5-40bbbb3___<5-40bbb03_______.6##..##..##.6#........#.8__^.@___[--|=--]___33.",
|
||||
".+@cccg|cc)!cc-]c5jcj5~c.cj5cg||g~ccc;|~~~c.cccccc~c.6####..####.6####..####.7~c.5h55h5h55h5h55h5h55h5h55h-57~c.6#####...##.6#...#...##.8~c.5h555h5h555h55h55h555h5h555h599999999999999999999999995h55h5h55h5h55h5h55h5h55h-57c$~~55-50bib0<~cc~~~55-50bib0<c~c45-50bib0<ccccc~c.6#.$.##.j.#.6#.kkkkkk.#.8cc^.@ccc!4-:-/1ccc~}|.",
|
||||
".88$$$3e$d{d$$3ed3edelmmnmopdqre3dms$ltddm${$$us$$dd.6###...####.6####...###.7dd.-iiii-iiii-iiii-iiii-iiii5-7dd.6#..#...###.6##.....###.+dd.--iii---iii-------iii---iii--9999999999999999999999999-iiii-iiii-iiii-i-i--iiii5-7$$dd5--400bb03dd$ddd5--400b003$d$---400bb03dddd$dd.6#.$.##.<.#.6#.k....k.#.8$d^.@d$$$}--/edd$$d{{.",
|
||||
".**!11111!1!111111111vwwxywz!xm111xt1tx11xAB!1wt111!.6##....####.6####....##.71!.5h55h5h55h5h55h5h55h5h55i5571!.6#.....####.6###...####.+1!.5h555h5h555h55555h555h5h555h599999999999999999999999995h55h5h55h5h55h5hh555h55i5-7111!----04004!1!111!----00004!111----00004!111111!.6#.$$..$j.#.6#.kkkkkk.#.81!^.@!!1!!g--31!111{<.",
|
||||
".**!e!eee!e!e!e!eeeee!!ext!!!xCtttxtetxeexwxtewte!e!.6###...####.6####...###.7e!.-i--i-i--i-i--i-i--i-i--h--7e!.6#....#####.6##.....###.8e!.-i---i-i---i--i--i---i-i---i-9999999999999999999999999-i--i-i--i-i--i-i-i--i--i5-7!ee!45---4555_e!eee!45---544-_eee45---545-_e!ee!e!.6##.$$$j.##.6#.k....k.#.+e!^.@e!e!{-;-:!!eee<<.",
|
||||
".*%222ee2e2e2e2eeeee22e2xo222xyDDwxo2oxe2x2ExDwo2e22.6####..####.6####..####.722.5hhhh5hhhh5hhhh5hhhh5hhih55722.6#...######.6#...#...##.+22.55hhh555hhh555h555hhh555hhh5599999999999999999999999995hhhh5hhhh5hhhh5h55h5hhhi5-72e22'55--5--ja22e222'55----5'a2e2'55----5ja2e22e22.6###.$<.###.6#.kkkkkk.#.+22^.@2e2|-<34-[eee2j'.",
|
||||
".>%]]]]3]3]3]3]3]3]3]]]]xq]]]xq2]]xq]qx]]x]]FAxq]3]].6#####.####.6####.#####.7]].-----------------------5--57]].6#..#######.6#..###..##.8]].-----------------------------9999999999999999999999999------------------------55-7]]]]]j4----'a3]]]]]]]j4--5-'a]]]]]j4---5'a3]3]23]].6###.$j.###.6#.k....k.#.8]]^.@23}4=]]}5-j3]]''.",
|
||||
".#>333333333333333333333Dp333Dp333Dp3pD33D333GHp3333.6##########.6##########.733.5555555555555555555555-55-5733.6##########.6##########.833.55555555555555555555555555555999999999999999999999999955555555555555555555555--5-7}33333{{31a~3333333333{{3!a~3333333{{3!__333333333.6###.$j.###.6#.kkkkkk.#.833^.+335[3333'--{33'f.",
|
||||
".>#}}|}}}}}}}}}|}|}|||||||||||||||}|||||||||||}|}|||.!...........s...........7||.7777777777777777777777777777||.!...........!...........8||.7777777777777777777777777777777777777777777777777777777777777777777777777777777777}||}||}||||}}}}|}||}||}||||}||||}||}|||}}}}}}|}|||.!...........!...........8||^.@}[g|}||}}'-/|}==.",
|
||||
".#a{{<{<{<{<{<{<{<{{<{{{<{{{{<{{{<{{{<{{{<{{<{{<{{{{77777777777777777777777777<{{<{<<{<<{<<{<<{<<{<<{<{<{{{<{{{888888888888888888888888+8{<{{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{<<{{{{{{<{{<{{<{<{{<{<{{<{{<{{<{<{{<{{<{<{{<{{{<{<{<{<{{{{{888888888888888888888888+8<{^.@<'j<{{{{<{[(j<=(.",
|
||||
"._~^^(^(^(^(^(((((^^(^^^(^^^^(^[^(^[^(^^^(^^(^^(^^[^^^^^^^^(^^^^(^^^^^^^^^^^^^([^(^((^((^((^((^((^((^(^(^^^(^[^^^^^^(^(^^^^^^^^^^^^^^^^^^^([^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^((^^^[^^(^^(^^(^(^^(^h^^(^^(^^(^(^^h^^(((^^(^^^(^(^(^(^^^[^^^^^^^^^^^^^^^^^^^^^^^^^^((^^.#^^^(^[[^(^^^((^^.",
|
||||
"._~^^^^[^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^(^[^^[^^^^^^^^^^^^^^[^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^.>^^^^^^^^^^^^^^^^.",
|
||||
"................................................................................................................................................................................................................................................................................................................................"};
|
260
yawmppp/src/thinppp/dataxpm.xpm
Normal file
260
yawmppp/src/thinppp/dataxpm.xpm
Normal file
|
@ -0,0 +1,260 @@
|
|||
/* XPM */
|
||||
static char * dataxpm_xpm[] = {
|
||||
"64 192 65 1",
|
||||
" c None",
|
||||
". c #020204",
|
||||
"+ c #1E861C",
|
||||
"@ c #968428",
|
||||
"# c #424244",
|
||||
"$ c #CAC214",
|
||||
"% c #9A4A4C",
|
||||
"& c #760A0C",
|
||||
"* c #EE8284",
|
||||
"= c #12763B",
|
||||
"- c #B2A224",
|
||||
"; c #DEE20C",
|
||||
"> c #222224",
|
||||
", c #0AD10C",
|
||||
"' c #273634",
|
||||
") c #C4C4C4",
|
||||
"! c #969697",
|
||||
"~ c #545453",
|
||||
"{ c #686869",
|
||||
"] c #8A2624",
|
||||
"^ c #D3D3D4",
|
||||
"/ c #12AA14",
|
||||
"( c #ADAAAC",
|
||||
"_ c #72E274",
|
||||
": c #89878B",
|
||||
"< c #967A34",
|
||||
"[ c #E7E7E8",
|
||||
"} c #06EA04",
|
||||
"| c #624E34",
|
||||
"1 c #747473",
|
||||
"2 c #272B2C",
|
||||
"3 c #39393A",
|
||||
"4 c #B8B8B9",
|
||||
"5 c #121210",
|
||||
"6 c #E67674",
|
||||
"7 c #CA4644",
|
||||
"8 c #4AC24C",
|
||||
"9 c #A20204",
|
||||
"0 c #BC2C2A",
|
||||
"a c #07DE04",
|
||||
"b c #1E5E1C",
|
||||
"c c #FEA2A4",
|
||||
"d c #F8F4FC",
|
||||
"e c #F6FE04",
|
||||
"f c #B11B1A",
|
||||
"g c #82623C",
|
||||
"h c #C63A3C",
|
||||
"i c #C2BA1C",
|
||||
"j c #1ADE6C",
|
||||
"k c #159618",
|
||||
"l c #2A7E24",
|
||||
"m c #D65A5C",
|
||||
"n c #0FBB0C",
|
||||
"o c #02FE04",
|
||||
"p c #7E7E7C",
|
||||
"q c #5E5E5C",
|
||||
"r c #821A1C",
|
||||
"s c #D6D214",
|
||||
"t c #6E5E34",
|
||||
"u c #7A663C",
|
||||
"v c #A28E2C",
|
||||
"w c #DCDCDA",
|
||||
"x c #1E1E1C",
|
||||
"y c #2A3E3C",
|
||||
"z c #CBCBCC",
|
||||
" ",
|
||||
" !(q>xx>{!( !(q>xx>{!( !(q>xx>{!( !(q>xx>{!( ",
|
||||
" (~=nn,,k{( (~tv-i$@{( (~r07mm%{( (~>x>22>{! ",
|
||||
" ~=/n,a}ak{ ~|<-is;s@{ ~&fhm6*6%{ q>x>22''21 ",
|
||||
" >k/na}o},~ >g@-i;e;i~ >9f7m*c*m~ xx>>2'y'2~ ",
|
||||
" xk/n,}}},{ xg<-is;si{ >9fhm6*6m{ xxxx2''22{ ",
|
||||
" xk/nn,,,np xg<v-i$i-p x9f07mmm7p >x>x>222>p ",
|
||||
" >+k/nnnnn( >gg<v---v( x99f0h7h0( >>xxxx>>x( ",
|
||||
" ~b+k////+! ~|gg<<@<u! ~&99ffff]! ~x>>xxxx~: ",
|
||||
" {~b+kkkl(1 1~|ugggt!1 1~&9999r(1 1~>xx>x~!1 ",
|
||||
" {{q~{:(:{{ {{qq{:(({{ {{qq{p(!{{ {{qq{p(!{{ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"{1{1~{1{1{1{~{1:!)))):))))))):4z(( ",
|
||||
"11{>5{1p1p1{5x{!!zz4#>4zzzzz4>2444 ",
|
||||
"1!2x>~(((((3xx>[[z!2x>q(((((3xx2q{ ",
|
||||
"1('xx2((((qxxx{[[)('xx2((((qxxx{1p ",
|
||||
"1(!xxx{((:xxxp([[z(!xxx{((:xxxp(1{ ",
|
||||
"1(!qxx'!(2x51!([[)(!qx>2((2x51!({{ ",
|
||||
"1!!!3xxq#xx1!!![[z!!!3>xq#xx1!!!1{ ",
|
||||
"1!!!p>x2x>:!!!![wz!!!p>x2x>:!!!!{q ",
|
||||
"1::!:{xx>p:::::wwz::!:{xx2p:::!:qq ",
|
||||
"1:::::'x>{:::::[^zp:::p'xx{:::::q~ ",
|
||||
"1ppppqx2x2p:p1pwwzppppqx2x2ppp1p~~ ",
|
||||
"11p1qxq{>x3ppp1^zz1p1{x~{>x3ppp1~~ ",
|
||||
"11{{>#11{>x~{11^zz1{{>#11{>x~{11## ",
|
||||
"1{{>3{{{{#xxq{{^z){{>3{{{{#xxq{{~# ",
|
||||
"1{3'q{{q{{#>>q{zzz{3'q{{{{{~x2q{## ",
|
||||
"1~|~~qqqq~q3#~~z)zq#~qqqqq~q'#~~## ",
|
||||
"q))))))4)z4))))))(333#3'333333##33 ",
|
||||
"{))4))))))))))))4433333333#3333333 ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"...........p...........pdddddddddddpdddddddddddp ",
|
||||
".(((.((.(((d.((((((((((dd(((.((.(((.d((((((((((. ",
|
||||
".((..((..((d.(........(dd((..((..((.d(........(. ",
|
||||
".(.:.((.~.(d.(.dddddd.([d(.:.((.~.(.d(.dddddd.(. ",
|
||||
".(.:.((.~.(d.(.d5..5d.(dd(.:.((.~.(.d(.d5..5d.(. ",
|
||||
".(.!:..:~.(d.4.dddddd.(dd(.!:..:~.(.d(.dddddd.(. ",
|
||||
".((.:!:q.((d.(.d5..5d.(dd((.:!:q.((.d(.d5..5d.(. ",
|
||||
".(((.:~.(((d.4.dddddd.(dd(((.:~.(((.d4.dddddd.(. ",
|
||||
".(((.!~.(((d.(.d5..5d.(dd(((.!~.(((.d(.d5..5d.(. ",
|
||||
".(((.:~.(((d.4.dddddd.(dd(((.:~.(((.d4.dddddd.(. ",
|
||||
":dddddddddddpdddddddddd[:...........p...5..5.... ",
|
||||
" ",
|
||||
"...........:...........:dddddddddddpdddddddddddp ",
|
||||
".((((((((((d.((((((((((dd((((((((((.d((((((((((. ",
|
||||
".((((((..((d.(..(((..(([d((((((..((.d(..(((..((. ",
|
||||
".(((((...((d.(...(...((dd(((((...((.d(...(...((. ",
|
||||
".(..(...(((d.((.....(((dd(..(...(((.d((.....(((. ",
|
||||
".(.....((((d.(((...(((([d(.....((((.d(((...((((. ",
|
||||
".(....(((((d.((.....(((dd(....(((((.d((.....(((. ",
|
||||
".(...((((((d.(...(...((dd(...((((((.d(...(...((. ",
|
||||
".(..(((((((d.(..(((..((dd(..(((((((.d(..(((..((. ",
|
||||
".((((((((((d.((((((((((dd((((((((((.d((((((((((. ",
|
||||
":ddddddddddd:dddddddddd[p...........p........... ",
|
||||
" ",
|
||||
"...........p...........:dddddddddddpdddddddddddp ",
|
||||
".((((((((((d.(((((((((([d((((((((((.d((((((((((. ",
|
||||
".(((((.((((d.((((.(((((dd(((((.((((.d((((.(((((. ",
|
||||
".((((..((((d.((((..((((dd((((..((((.d((((..((((. ",
|
||||
".(((...((((d.((((...(((dd(((...((((.d((((...(((. ",
|
||||
".((....((((d.((((....(([d((....((((.d((((....((. ",
|
||||
".(((...((((d.((((...(((dd(((...((((.d((((...(((. ",
|
||||
".((((..((((d.((((..((((dd((((..((((.d((((..((((. ",
|
||||
".(((((.((((d.((((.(((((dd(((((.((((.d((((.(((((. ",
|
||||
".((((((((((d.((((((((((dd((((((((((.d((((((((((. ",
|
||||
":dddddddddddpdddddddddddp...........p........... _'8k_ ",
|
||||
"xxxxxx>x>x>xxxxxxxx>xxx>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
|
||||
"yyy8x8__8x8__8>83y8>8__8>8__8>8__8>8__8>8__8>8__8>yyyy>yyyy>yyyy",
|
||||
"yx>_x3>>_>3>x_>_x>_>_>>yx_>>yxy>>_>_>>_x_>>_x_>>_xyxxyxyxxyxyxxy",
|
||||
"yxx_xyxx_>y>>_>_x>_>_x>3>_xxyxyx>_>_x>_>_x>_>_x>_x_xx_x_xx_xyxxy",
|
||||
"3yy8x8__8x8__8>8__8x8__8>8__8>yyy8>8__8>8__8x8yy8>_y_y>____xyyyy",
|
||||
"yx>_x_x>yx'>x_xyx>_x3x>_x_x>_xyxx_x_x>_xyxx_>_xx_x__xy>_>>_xyxxy",
|
||||
"y>x_>_xxyxy>x_xyxx_xy>x_>_>x_xyxx_>_xx_xyx>_x_x>_x_x_'x_>x_xyxxy",
|
||||
"yyy_x8__8x8__8xyyy8>8__8x8__8xyyy8x8__8>8__8x8__8>_yy_>_yy_xyyyy",
|
||||
"xxx>>>x>x>x>>x>xx>xxx>x>x>xx>xxxx>>>x>xx>>x>>x>x>xxxxxxxx>>>xxxx",
|
||||
">x>xx>x>x>x>x>x>x>x>xx>x>x>xx>x>xx>x>x>>x>x>x>x>x>x>>>x>xxx>xx>>",
|
||||
"8__8>8__8>8__8x8__8>8__8>x>xyyyyxyyyyxyyyy>x>x>xyyyy>x>x>>>x>>xx",
|
||||
"_>xyx_>>_x_>>_>_>x_>_>>_x>x>yxxyxyxxyxyxxyx>x>xxyxxy>x>xxx>xx>>>",
|
||||
"_>xy>_x>_>_x>_>_>>_>_>x_>xxx'>xyxy>xyxyxxyxy>xyxyxx'>x>>>>x>>xxx",
|
||||
"8__yx8__>x8__>x8yy8x8__>x>x>3yyyxyyyyxyyyyxyxyxxyyyyx>xxx>xx>>>>",
|
||||
"_>xy>_x>_>_x>_>_xx_>_x>_x>xxyxxyxyxxyxyxxyxyy>xxyxxy>x>>>x>>xxxx",
|
||||
"_x>yx_>x_>_>x_>_>x_>_>x_>x>>yxxyxyxxyxyxxyxyxyxxyxxyxxxx>xx>>>>>",
|
||||
"8__8>8yy8>8yy8>8__8>8yy8>x>xyyyyxyyyyxyyyyxyxxyxyy''>>>>x>>xxxxx",
|
||||
">x>>x>xx>x>x>x>x>>x>x>x>x>xxxxxxxxxxxxxxxx>x>x>xx>x>xxx>xx>>>>>>",
|
||||
"xxyyyx>xyyyx>x>x>xyyyx>xyyyx>xx>x>xx>x>x>x>x>xx>x>x>>>>x>>xxxxxx",
|
||||
">yxx>yxyxx>yx>yx>yxx>yxyxx>yx>>xx>x>x>x>x>x>x>>x>x>xxx>xx>>>>>>>",
|
||||
"xy>xxyxy>xxyxxyxxy>xxyxy>xxyxx>x>x>x>x>x>x>x>x>x>>x>>>x>>xxxxxxx",
|
||||
"xxyyyxxxyyyx>xx>xxyyyxxxyyyx>x>x>x>x>x>x>x>x>x>x>x>xx>xx>>>>>>>>",
|
||||
"xyxxxyxyxxxyx>x>xyxxxyxyxxxy>x>x>x>x>x>x>x>x>x>>x>x>>x>>xxxxxxxx",
|
||||
">yx>>yxyx>>yx>yxxyx>xyxyx>xyx>x>x>x>x>x>x>x>xx>xx>xx>xx>>>>>>>>>",
|
||||
"xxyyyx>xyyyxxxyx>xyyyx>xyyyx>x>x>x>x>x>x>x>x>x>>x>>>x>>xxxxxxxxx",
|
||||
">xxxx>xxxx>x>>x>xxxx>x>xxxx>x>x>x>x>x>x>x>x>x>xx>xx>xx>>>>>>>>>>",
|
||||
"x>x>x>x>x>x>x>x>x>>x>xx>>x>x>x>x>x>x>x>x>x>x>x>>x>>x>>xxxxxxxxxx",
|
||||
">x>x>x>x>x>x>x>x>xx>x>>xx>x>x>x>x>x>x>x>x>x>x>xx>x>xx>>>>>>>>>>>",
|
||||
" ",
|
||||
" ",
|
||||
"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ",
|
||||
">y__y>___y>y__y>___y>____>____>y__y>_yy_>y_yy>yyy_>_yy_>_yyyx ",
|
||||
"x_>>_x_>>_x_>>_x_>>_>_>>yx_>>yx_>>yx_xx_xy_xyxyxx_x_xx_x_xxy> ",
|
||||
"x_x>_>_xx_x_x>y>_xx_>_xxy>_x>y>_xxy>_>>_xy_xyxyx>_>_>_y>_xxyx ",
|
||||
">____x___y>_y''x_yy_x___'x___'x_y__>____x'_yyxyyy_>__''>_yyyx ",
|
||||
">_xx_>_x>_x_>x'>_xx_x_x>yx_xxyx_xx_x_xx_xy_xyxyxx_x_>_'x_xxyx ",
|
||||
">_x>_>_xx_x_xx_x_x>_>_x>y>_>xyx_>x_>_x>_xy_xyx_xx_>_xx_>_>xyx ",
|
||||
">_yy_x___y>y__y>___yx____x_yyyxy__yx_yy_xy_''xy__yx_yy_x____x ",
|
||||
"x>xx>>>xx>xx>>>x>x>x>>xx>>xxxxxx>x>x>xx>xxxx>x>xx>x>x>x>x>x>> ",
|
||||
">_yy_>_yy_>y__yx___yxy__yx___y>y__yxy___>_y'_x_yy_>_yy_x_yy_x ",
|
||||
"x____>__x_x_x>_>_>x_>_x>_>_x>_x_x>_xy>_y>_>x_>_>x_x_>x_x_xx_> ",
|
||||
">_x>_x_>__>_>x_>_>x_>_>x_>_>x_>_>xyxyx_yx_>>_x_>x_>_>x_>y__'x ",
|
||||
"x_yy_>_yy_>_yy_>___y>_yy_>___yxy__yxyy_y>_yy_>_yy_>_yy_x'__yx ",
|
||||
">_x>_x_>x_x_>x_>_>xyx_x>_x_>_yxyx>_xyx_yx_xx_>_x>_x____>y__yx ",
|
||||
"x_x>_>_>>_>_x>_>_>xy>_>_y>_>x_>_x>_xyx_yx_>>_xy__y>____x_xx_> ",
|
||||
">_yy_x_yy_xy__yx_yyyxy_y_x_yy_xy__yxyy_yx____>y__yx_yy_>_yy_x ",
|
||||
"xx>xx>x>xx>x>x>>xxxxx>xx>>x>x>x>x>x>xx>xx>>x>xx>x>x>>x>>xxxx> ",
|
||||
">_yy_x____>yyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyyx ",
|
||||
"x_y>_xy>>_xyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxy>xyx ",
|
||||
">_yy_>yx_yxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyx'xxyx ",
|
||||
"xy__yxy_yyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyy>yyyy> ",
|
||||
"xyx_yxy_xyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyx ",
|
||||
"x'>_yx_xxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxyxyxxy>'>xyx ",
|
||||
">y_yyx____xyyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyyyyxyy''xyy''x ",
|
||||
"x>xxx>>>x>xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>xxx>>> ",
|
||||
">y__yx_yyyxyyyyxyyy_>____>y__yxy__yx_yyyxyyyyxyyy_>yyyyx_yyyx ",
|
||||
"x_x>_>_xxyxyxxyxyxx_>_>xyx_x>_x_>xy>_xxyxy_xyxyxx_x_x>_x_xxyx ",
|
||||
">_>x_>_>xyxy__yxyx>_x_>xyx_>xy>_x>yx_>xyxyyxyxyx>_>_x_yx_xxyx ",
|
||||
"x____x___yx_yy_xy___x___y>__yy>_y__>___yxy_yyxyyy_>__yyx_yyy> ",
|
||||
">_>>_>_>x_>_xxy>_>>_>_>xyx_xxyx_x>_>_>x_xy_xyxyxx_>_x_yx_xxyx ",
|
||||
"x_>x_x_x>_x_x>_x_>x_x_>xy>_>xy>_>x_x_>x_xy_xyx_>>_>_x>_x_>xyx ",
|
||||
">_yy_>___y>y__yxy___2____x_yyyxy__y>_yy_xy_yyxy__yx_yy_>'__'x ",
|
||||
">xxx>>>x>xx>x>x>>x>xx>x>>x>xxxx>x>x>xxx>xx>xxxx>x>x>x>x>>x>>x ",
|
||||
">_yy_xyyyyxyyyyx___yxy__yxyyyyxy__yxyyyyxyyyyx_yy_>_yy_x_yy_x ",
|
||||
"x____xyyxyxyxxy>_>x_>_x>_xyxxy>_x>_xyx_yxyxxy>_xx_>_xx_>_xx_> ",
|
||||
">_>x_xyxyyxyxxyx_>>_x_>x_>yxxyx_>xyxyx_yxyxxyx_>>_x_>>_xy__yx ",
|
||||
"x_yy_x_y__xy__y>___y>_yy_x_y_y>y__yxy___x_yy_>_yy_>_yy_xy__yx ",
|
||||
">_x>_x__x_>_>x_x_>xyx_x>_>__y_xyx>_>yx_y>_xx_x_x>_x____xy__yx ",
|
||||
">_x>_x_>>_x_x>_>_>xy>_x_yx_xxyx_>x_xy>_yx_>>_xy__y>____x_x>_> ",
|
||||
"x_yy_>_yy_>y__yx_yyyxy_y_>_yyyxy__yxyy_yxy__y>y__yx_yy_>_y'_x ",
|
||||
">>xx>x>xxx>x>x>x>xxx>x>x>x>xxxx>x>>xxx>xx>>xx>xx>x>>x>>x>xx>> ",
|
||||
"x_yy_>yyyyx8__8>yyy8x8__8>8__8>8yy8>8__8>8__8>8__8>8__8>8__8x ",
|
||||
">_yx_xyxxy>_>>_xyx__xy>>_xy>>_x_xx_x_x>yx_>xyxy>>_x_x>_>_x>_> ",
|
||||
"x_yy_x____>_x>_xyx>_>yxx_>yxx_>_>>_>_>xy>_>>yxyxx_>_>x_>_xx_x ",
|
||||
"xy__yxyyy_>8yy8xyyy8>8__8>8__8x8__8x8__8x8__8xyyy8>8__8>8__8> ",
|
||||
">yx_yxy__yx_x>_xyxx_>_>>yxy>>_2yx>_>y>>_>_>>_>yxx_>_x>_>yxx_x ",
|
||||
"xy>_yx_>xy>_x>_xy>>_x_xxyxy>x_xy>x_xy>x_x_>x_xy>>_>_x>_xy>x_> ",
|
||||
"xy_yyx____x8__8xyyy_>8__8>8__8xyyy8>8__8>8__8xyyy8x8__8>8__8x ",
|
||||
"xxxxxx>x>>>>>>x>xxx>x>>x>x>x>>xxxx>x>x>>x>x>x>xxx>>>>>x>x>x>> ",
|
||||
">x>>x>>x>xx>xx>x>x>x>>x>x>x>xx>>x>x>x>>x>>>x>x>x>x>x>xx>x>xxx ",
|
||||
">xx>x>x>x>x>>x>x>x>xx>x>x>x>>xx>x>x>>xx>xx>x>x>x>x>x>>x>xx>>> ",
|
||||
" ",
|
||||
">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>xxxxxxx",
|
||||
"xxjjjxxx'''=x=jjj=x=jjj=x='''=x=jjj=x=jjj=x=jjj=x=jjj=x=jjj=>>>>",
|
||||
">jx>xj>y>>xjx'xxxjxyxxxjxjx>xjxjxxxyxjxxx'>'xxxjxjxxxjxj>>>jxxjx",
|
||||
">jx>xjxy>x>jxy>x>jxyx>>j>j>>>jxj>>xyxjx>x'xyxx>jxj>>>jxjxx>j>x=>",
|
||||
"x=yyy=xxyyy=x=jjj=xxjjj=>=jjj=x=jjj=>=jjj=>xyyy=>=jjj=>=jjj=x>>x",
|
||||
">jxxxj>yxxxj>j>x>yxyxx>jxy>x>j>yxxxjxj>x>j>yxxxjxjxx>jxyx>>jxx>>",
|
||||
"xj>x>jxyx>>j>j>xxyxy>x>jxy>x>jxyx>>j>j>x>j>'>x>j>jx>xjxyxx>j>>jx",
|
||||
">>jjj>xxyyy=x=jjj=x=jjj=>xyyy=x=jjj=>=jjj=x>yyy=x=jjj=>=jjj=xx=>",
|
||||
"xxx>x>x>xxx>>>>x>>x>>>>x>xxxx>>x>>x>x>x>>>x>xxx>>>>>x>x>x>x>>>>x",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
1085
yawmppp/src/thinppp/thinppp.c
Normal file
1085
yawmppp/src/thinppp/thinppp.c
Normal file
File diff suppressed because it is too large
Load diff
153
yawmppp/src/thinppp/thinppp.h
Normal file
153
yawmppp/src/thinppp/thinppp.h
Normal file
|
@ -0,0 +1,153 @@
|
|||
|
||||
/* DEFINES */
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
|
||||
#define MAX_ISPS 40
|
||||
|
||||
#define START_ACTION (NULL)
|
||||
#define STOP_ACTION (NULL)
|
||||
#define SPEED_ACTION (NULL)
|
||||
#define IFDOWN_ACTION (NULL)
|
||||
|
||||
#define STAMP_FILE "/var/run/ppp0.pid"
|
||||
|
||||
/* leds */
|
||||
|
||||
#define LED_PWR_X (226)
|
||||
#define LED_PWR_Y (5)
|
||||
#define LED_SND_X (255)
|
||||
#define LED_SND_Y (5)
|
||||
#define LED_RCV_X (242)
|
||||
#define LED_RCV_Y (5)
|
||||
|
||||
#define LED_PPP_RX (1)
|
||||
#define LED_PPP_TX (2)
|
||||
#define LED_PPP_POWER (3)
|
||||
|
||||
#define LED_ON_X (1)
|
||||
#define LED_ON_Y (1)
|
||||
#define LED_OFF_X (34)
|
||||
#define LED_OFF_Y (1)
|
||||
#define LED_ERR_X (23)
|
||||
#define LED_ERR_Y (1)
|
||||
#define LED_WTE_X (12)
|
||||
#define LED_WTE_Y (1)
|
||||
#define LED_SZE_X (10)
|
||||
#define LED_SZE_Y (10)
|
||||
|
||||
#define LED_GREEN (1)
|
||||
#define LED_RED (2)
|
||||
#define LED_YELLOW (3)
|
||||
#define LED_DARK (4)
|
||||
|
||||
/* buttons */
|
||||
|
||||
#define BUT_V (1)
|
||||
#define BUT_X (2)
|
||||
#define BUT_REW (3)
|
||||
#define BUT_FF (4)
|
||||
#define BUT_CONF (5)
|
||||
#define BUT_LOG (6)
|
||||
#define BUT_KILL (7)
|
||||
#define BUT_DRAG (8)
|
||||
|
||||
#define BUT_V_X (112)
|
||||
#define BUT_V_Y (5)
|
||||
#define BUT_X_X (124)
|
||||
#define BUT_X_Y (5)
|
||||
#define BUT_R_X (53)
|
||||
#define BUT_R_Y (5)
|
||||
#define BUT_F_X (65)
|
||||
#define BUT_F_Y (5)
|
||||
#define BUT_C_X (273)
|
||||
#define BUT_C_Y (5)
|
||||
#define BUT_L_X (285)
|
||||
#define BUT_L_Y (5)
|
||||
|
||||
#define BUT_K_X (302)
|
||||
#define BUT_K_Y (1)
|
||||
|
||||
#define BUT_K_SRC_X (0)
|
||||
#define BUT_K_SRC_Y (30)
|
||||
|
||||
/* displays */
|
||||
|
||||
#define TIMER_SRC_Y (176)
|
||||
#define TIMER_DES_Y (6)
|
||||
#define TIMER_DES_X (141)
|
||||
#define TIMER_SZE_X (6)
|
||||
|
||||
#define ISP_BASE_X (82)
|
||||
#define ISP_BASE_Y (6)
|
||||
|
||||
#define ERR_DEST_X (195)
|
||||
#define ERR_DEST_Y (6)
|
||||
|
||||
#define ERR_SRC_X (0)
|
||||
#define ERR_SRC_Y (94)
|
||||
|
||||
#define UPPER_ABC_BASE_X (1)
|
||||
#define UPPER_ABC_BASE_Y (124)
|
||||
#define LOWER_ABC_BASE_X (1)
|
||||
#define LOWER_ABC_BASE_Y (148)
|
||||
#define DIGIT_BASE_X (11)
|
||||
#define DIGIT_BASE_Y (164)
|
||||
#define SPACE_BASE_X (11)
|
||||
#define SPACE_BASE_Y (140)
|
||||
|
||||
#define HIST_SRC_X (58)
|
||||
#define HIST_SRC_Y (92)
|
||||
|
||||
#define BUT_V_SRC_X (0)
|
||||
#define BUT_V_SRC_Y (70)
|
||||
#define BUT_X_SRC_X (12)
|
||||
#define BUT_X_SRC_Y (70)
|
||||
|
||||
#define BUT_R_SRC_X (0)
|
||||
#define BUT_R_SRC_Y (82)
|
||||
#define BUT_F_SRC_X (12)
|
||||
#define BUT_F_SRC_Y (82)
|
||||
|
||||
#define BUT_C_SRC_X (0)
|
||||
#define BUT_C_SRC_Y (58)
|
||||
#define BUT_L_SRC_X (12)
|
||||
#define BUT_L_SRC_Y (58)
|
||||
|
||||
#define BUT_UP_INC (24)
|
||||
|
||||
#define ORANGE_LED_TIMEOUT (60)
|
||||
|
||||
void create_thinppp(void);
|
||||
gboolean exposed(GtkWidget *w,GdkEventExpose *gee,gpointer data);
|
||||
gboolean bpress(GtkWidget *w,GdkEventButton *geb,gpointer data);
|
||||
gboolean brelease(GtkWidget *w,GdkEventButton *geb,gpointer data);
|
||||
gboolean bmotion(GtkWidget *w,GdkEventMotion *geb,gpointer data);
|
||||
gboolean wdestroy(GtkWidget *w,GdkEvent *ev,gpointer data);
|
||||
|
||||
void refresh(void);
|
||||
|
||||
void setled(int index,int type);
|
||||
void paste_xpm(int dx,int dy,int sx,int sy,int w,int h);
|
||||
void DrawISPName (void);
|
||||
void draw_isp_char (int pos, char letter);
|
||||
void DrawTime (int i, int j);
|
||||
void DrawStats (int num, int size, int x_left, int y_bottom);
|
||||
void PrintLittle (int i, int *k);
|
||||
void DrawSpeedInd (char *speed_action);
|
||||
void DrawLoadInd (int speed);
|
||||
|
||||
void init_ppp(void);
|
||||
gint thinppp(gpointer data);
|
||||
|
||||
void sigusr_handler(int signum);
|
||||
void make_delayed_update(void);
|
||||
void usage (void);
|
||||
void printversion (void);
|
||||
|
||||
void grab_me(void);
|
||||
void ungrab_me(void);
|
||||
gboolean inbox(int x,int y,int bx,int by,int bw,int bh);
|
||||
|
||||
void read_initial_position(void);
|
||||
void save_initial_position(void);
|
167
yawmppp/src/yawmppp.1x
Normal file
167
yawmppp/src/yawmppp.1x
Normal file
|
@ -0,0 +1,167 @@
|
|||
.TH YAWMPPP 1x "22 Feb 2001" "Free Software" "User Manuals"
|
||||
.SH NAME
|
||||
yawmppp \- Window Maker dock front end for pppd and chat
|
||||
.SH SYNOPSIS
|
||||
yawmppp [\fB\-h\fR] [\fB\-i\fR \fIdevice\fR] [\fB-t\fR]
|
||||
[\fB\-u\fR \fIupdate rate\fR] [\fB\-v\fR]
|
||||
[\fB\-caution\fR | \fB-paranoid\fR]
|
||||
|
||||
yawmppp.thin [\fB\-h\fR] [\fB\-i\fR \fIdevice\fR] [\fB-t\fR]
|
||||
[\fB\-u\fR \fIupdate rate\fR] [\fB\-v\fR]
|
||||
[\fB\-caution\fR | \fB-paranoid\fR]
|
||||
|
||||
.SH DESCRIPTION
|
||||
This man page documents version 2.0.2 of \fByawmppp\fR.
|
||||
|
||||
.B "yawmppp"
|
||||
is \fBY\fRet \fBA\fRnother \fBW\fRindow \fBM\fRaker
|
||||
\fBPPP\fR dock applet.
|
||||
|
||||
.B "yawmppp"
|
||||
runs docked in Window Maker's dock (or clip), swallowed in
|
||||
AfterStep's wharf or as a iconic shaped window on other
|
||||
window managers. If you are not using a dock-capable
|
||||
window manager (Window Maker and AfterStep) then you may
|
||||
prefer to run \fByawmppp.thin\fR instead, which is
|
||||
the same applet shaped as an horizontal bar, designed
|
||||
for use without a dock.
|
||||
|
||||
It provides a front end for the programs chat and pppd, in
|
||||
a way that you probably shouldn't ever need to edit
|
||||
directly these programs' scripts.
|
||||
|
||||
The \fBv\fR button starts a connection to the currently
|
||||
selected ISP entry (whose handle is shown in the bottom
|
||||
left corner of the display). The \fBx\fR button closes
|
||||
the current connection. The arrow buttons let you
|
||||
select a dialing entry.
|
||||
|
||||
To create and edit dialing entries you should use the
|
||||
\fByawmppp.pref\fR program, which can be run by clicking the
|
||||
left mouse button in yawmppp's display area.
|
||||
|
||||
You can see a log of your connections with the \fByawmppp.log\fR
|
||||
program, which can be run by clicking yawmppp's display area
|
||||
with any mouse button but the left.
|
||||
|
||||
.SH DISPLAY
|
||||
Yawmppp's display has a connection timer at the top left corner,
|
||||
three LEDs at the top right meaning RX,TX and POWER. The RX/TX
|
||||
leds blinking upon the receive/send of PPP packets. The
|
||||
POWER led is dark when you're offline, yellow when dialing,
|
||||
green when connected, red when an error has ocurred with the
|
||||
connection.
|
||||
|
||||
In the middle of the display is an auto-scaling load graph. The
|
||||
bottom left corner shows the current ISP's handle and the
|
||||
bottom right corner displays the CONNECT speed in the first
|
||||
10 seconds of connection, then starts showing the
|
||||
characters-per-second rate.
|
||||
|
||||
.SH "COMMAND-LINE OPTIONS"
|
||||
.IP "\-caution"
|
||||
.IP "\-paranoid"
|
||||
these options will change the way yawmppp touches the PPP interface.
|
||||
Caution will keep associated structures open while
|
||||
the connection is up only. Paranoid will open and close the
|
||||
structures LOTS of times to keep them closed as much as possible.
|
||||
These options are meant for PCMCIA & APM (notebooks, maybe PDAs) users
|
||||
who run into trouble with cardctl commands. Don't use these options unless
|
||||
you really need them. And if you need, check if caution is enough,
|
||||
be paranoid only when absolutely necessary. When none is
|
||||
specified, \fB-caution\fR is default.
|
||||
.IP "\-i device"
|
||||
use a ppp device other then ppp0.
|
||||
.IP "\-h"
|
||||
shows a brief help message
|
||||
.IP "\-t"
|
||||
set timer to MM:SS instead of HH:MM
|
||||
.IP "\-u update\-rate"
|
||||
sets the interval for statistics update (load graph and cps rate).
|
||||
If not set, defaults to 5 seconds.
|
||||
.IP "\-v"
|
||||
shows version and exits.
|
||||
|
||||
.SH "PPPD OPTIONS"
|
||||
yawmppp.pref provides a good set of options from pppd, but if need
|
||||
any other that isn't (yet) directly supported, put it in
|
||||
/etc/ppp/options. Per-ISP options are placed in /etc/ppp/peers,
|
||||
as newer pppd versions require (since 2.3.7 at least). Whenever
|
||||
YAWMPPP needs to write some file there, it will ask for the
|
||||
superuser password on an xterm. Configuration files must go
|
||||
under /etc/ppp/peers or the noauth option, usually required to
|
||||
connect to ISPs, won't be allowed.
|
||||
|
||||
.SH "DNS Handling"
|
||||
In the past, YAWMPPP changed the named(8) configuration files to
|
||||
set DNS up, but nowadays pppd has taken over this task with the
|
||||
usepeerdns option. From pppd 2.3.11 up, DNS should work out of the
|
||||
box. pppd 2.3.10 and some earlier versions may require working
|
||||
/etc/ppp/ip-up and /etc/ppp/ip-down files. Some distributions
|
||||
provide these files worked out (Red Hat), others
|
||||
don't (Slackware). Here is a sample minimalist set of these files:
|
||||
|
||||
\fB/etc/ppp/ip-up\fR
|
||||
.br
|
||||
#!/bin/sh
|
||||
.br
|
||||
echo "search mydomain.org" > /etc/resolv.conf
|
||||
.br
|
||||
echo "nameserver $DNS1" >> /etc/resolv.conf
|
||||
.br
|
||||
|
||||
\fB/etc/ppp/ip-down\fR
|
||||
.br
|
||||
#!/bin/sh
|
||||
.br
|
||||
echo "search mydomain.org" > /etc/resolv.conf
|
||||
.br
|
||||
echo "nameserver" >> /etc/resolv.conf
|
||||
.br
|
||||
|
||||
.SH "FILES"
|
||||
|
||||
.IR ~/.yawmppp2
|
||||
.br
|
||||
.IR ~/.yawmppp2/yawmppprc
|
||||
.br
|
||||
.IR ~/.yawmppp2/logfile
|
||||
.br
|
||||
|
||||
.SH "BUGS"
|
||||
.BR "yawmppp "
|
||||
You must set your PAP/CHAP secrets directly in the /etc/ppp/chap-secrets
|
||||
and /etc/ppp/pap-secrets files. For security reasons, yawmppp cannot do
|
||||
it for you.
|
||||
|
||||
If you run more than one copy of yawmppp or yawmppp.thin you'll get
|
||||
repeated log entries.
|
||||
|
||||
.SH "PORTABILITY"
|
||||
.BR "yawmppp "
|
||||
has been reported to run on Linux, NetBSD and FreeBSD. Your
|
||||
mileage may vary on Linux, as pppd configuration can vary wildly from
|
||||
distribution to distribution.
|
||||
|
||||
On Slackware Linux 7.0 you must set up /etc/ppp/ip-up and /etc/ppp/ip-down
|
||||
on your own to get DNS resolution working.
|
||||
The minimalist sample given in this man page works.
|
||||
|
||||
.SH "CREDITS"
|
||||
.BR "yawmppp "
|
||||
was written by Felipe Bergo <bergo@seul.org>. The dock applet
|
||||
is based on wmppp 1.3.0, which was written by Martijn Pieterse and
|
||||
Antoine Nulle.
|
||||
|
||||
.SH "UNRESTRICTIONS"
|
||||
.BR "yawmppp "
|
||||
is free; anyone may redistribute copies of \fByawmppp\fR to anyone under the
|
||||
terms stated in the GNU General Public License. A copy of the license accompanies
|
||||
each copy of \fByawmppp\fR.
|
||||
|
||||
.SH "WEB SITE"
|
||||
http://yawmppp.seul.org
|
||||
|
||||
.SH "SEE ALSO"
|
||||
\fBpppd\fR(8), \fBchat\fR(8), \fBresolver\fR(5), \fBsetserial\fR(8),
|
||||
\fBttys\fR(4)
|
410
yawmppp/src/ycommon.c
Normal file
410
yawmppp/src/ycommon.c
Normal file
|
@ -0,0 +1,410 @@
|
|||
/*
|
||||
|
||||
YAWMPPP - PPP dock app/helper for WindowMaker
|
||||
Copyright (C) 2000,2001:
|
||||
|
||||
Author: Felipe Bergo (bergo@seul.org)
|
||||
|
||||
based on the wmppp application by
|
||||
|
||||
Martijn Pieterse (pieterse@xs4all.nl)
|
||||
Antoine Nulle (warp@xs4all.nl)
|
||||
|
||||
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
|
||||
|
||||
$Id: ycommon.c,v 1.1.1.1 2001/02/22 07:15:59 bergo Exp $
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <string.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <ctype.h>
|
||||
#include <signal.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>
|
||||
|
||||
#ifdef LINUX
|
||||
#define _LINUX_SOCKET_H
|
||||
#endif
|
||||
|
||||
/* guessworks for critters beyond the realm of Linux and FreeBSD */
|
||||
|
||||
#ifdef OPENBSD
|
||||
#define FREEBSD
|
||||
#endif
|
||||
|
||||
#ifdef NETBSD
|
||||
#define FREEBSD
|
||||
#endif
|
||||
|
||||
#ifdef BSDISH
|
||||
#define FREEBSD
|
||||
#endif
|
||||
|
||||
#ifdef LINUX
|
||||
#include <asm/types.h>
|
||||
#include <linux/if.h>
|
||||
#include <linux/ppp_defs.h>
|
||||
#include <linux/if_ppp.h>
|
||||
#endif
|
||||
|
||||
#ifdef FREEBSD
|
||||
#include <net/if.h>
|
||||
#include <net/ppp_defs.h>
|
||||
#include <net/if_ppp.h>
|
||||
#endif
|
||||
|
||||
#include "ycommon.h"
|
||||
#include "isprc.h"
|
||||
|
||||
|
||||
extern struct LogStruct logconn;
|
||||
|
||||
extern int ppp_h;
|
||||
extern int ppp_open;
|
||||
|
||||
extern struct YAWMPPP_ISP_INFO IspData[MAX_ISPS];
|
||||
extern int num_isps;
|
||||
extern int current_isp;
|
||||
|
||||
extern char *active_interface;
|
||||
|
||||
/* LOGS = ~/.yawmppp2/log */
|
||||
|
||||
void
|
||||
clean_guards(void)
|
||||
{
|
||||
char *p;
|
||||
char temp[128],aux[128];
|
||||
FILE *f;
|
||||
|
||||
p = getenv ("HOME");
|
||||
strcpy (temp, p);
|
||||
strcat (temp, "/.yawmppp2/.floatlog");
|
||||
f=fopen(temp,"r");
|
||||
if (!f)
|
||||
return; /* fine: no crash file */
|
||||
if (!fgets(aux,128,f)) return;
|
||||
if ((p=strtok(aux,"\n"))==NULL) return;
|
||||
logconn.start=atoi(p);
|
||||
if (!fgets(aux,128,f)) return;
|
||||
if ((p=strtok(aux,"\n"))==NULL) return;
|
||||
logconn.end=atoi(p);
|
||||
if (!fgets(aux,128,f)) return;
|
||||
if ((p=strtok(aux,"\n"))==NULL) return;
|
||||
logconn.status=atoi(p);
|
||||
if (!fgets(aux,128,f)) return;
|
||||
if ((p=strtok(aux,"\n"))==NULL) return;
|
||||
strcpy(logconn.longname,p);
|
||||
if (!fgets(aux,128,f)) return;
|
||||
if ((p=strtok(aux,"\n"))==NULL) return;
|
||||
strcpy(logconn.shortname,p);
|
||||
if (!fgets(aux,128,f)) return;
|
||||
if ((p=strtok(aux,"\n"))==NULL) return;
|
||||
strcpy(logconn.phone,p);
|
||||
if (!fgets(aux,128,f)) return;
|
||||
if ((p=strtok(aux,"\n"))==NULL) return;
|
||||
strcpy(logconn.user,p);
|
||||
fclose(f);
|
||||
logconn.status=2; /* CRASH */
|
||||
write_log();
|
||||
}
|
||||
|
||||
void
|
||||
make_guards(void)
|
||||
{
|
||||
char *p;
|
||||
char temp[128];
|
||||
FILE *f;
|
||||
|
||||
p = getenv ("HOME");
|
||||
strcpy (temp, p);
|
||||
strcat (temp, "/.yawmppp2/.floatlog");
|
||||
f=fopen(temp,"w");
|
||||
if (!f) return;
|
||||
|
||||
logconn.end=time(NULL);
|
||||
fprintf(f,"%lu\n%lu\n%d\n",logconn.start,logconn.end,logconn.status);
|
||||
fprintf(f,"%s\n%s\n%s\n",logconn.longname,logconn.shortname,logconn.phone);
|
||||
fprintf(f,"%s\n",logconn.user);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
void
|
||||
write_log(void)
|
||||
{
|
||||
char *p;
|
||||
char temp[128];
|
||||
FILE *f;
|
||||
int i,s;
|
||||
|
||||
p = getenv ("HOME");
|
||||
strcpy (temp, p);
|
||||
strcat (temp, "/.yawmppp2/logfile");
|
||||
f=fopen(temp,"a");
|
||||
if (!f) return;
|
||||
|
||||
s=strlen(logconn.phone);
|
||||
for(i=0;i<s;i++)
|
||||
if (logconn.phone[i]=='\t')
|
||||
logconn.phone[i]=' ';
|
||||
s=strlen(logconn.shortname);
|
||||
for(i=0;i<s;i++)
|
||||
if (logconn.shortname[i]=='\t')
|
||||
logconn.shortname[i]=' ';
|
||||
s=strlen(logconn.longname);
|
||||
for(i=0;i<s;i++)
|
||||
if (logconn.longname[i]=='\t')
|
||||
logconn.longname[i]=' ';
|
||||
s=strlen(logconn.user);
|
||||
for(i=0;i<s;i++)
|
||||
if (logconn.user[i]=='\t')
|
||||
logconn.user[i]=' ';
|
||||
|
||||
fprintf(f,"%lu\t%lu\t%d\t%s\t%s\t%s\t%s\n",
|
||||
logconn.start,
|
||||
logconn.end,
|
||||
logconn.status,
|
||||
logconn.longname,
|
||||
logconn.shortname,
|
||||
logconn.phone,
|
||||
logconn.user);
|
||||
fclose(f);
|
||||
|
||||
chmod(temp,0600);
|
||||
|
||||
p = getenv ("HOME");
|
||||
strcpy (temp, p);
|
||||
strcat (temp, "/.yawmppp2/.floatlog");
|
||||
unlink(temp);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
warn_pref(void)
|
||||
{
|
||||
char *p;
|
||||
char temp[128];
|
||||
FILE *f;
|
||||
|
||||
p=getenv("HOME");
|
||||
strcpy (temp, p);
|
||||
strcat (temp, "/.yawmppp2/.delayedupdate");
|
||||
|
||||
f=fopen(temp,"w");
|
||||
if (!f) return;
|
||||
fprintf(f,"This file shouldn't last more than a few millisecs...\n");
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
/* PPP */
|
||||
|
||||
void
|
||||
open_ppp(void)
|
||||
{
|
||||
/* Open the ppp device. */
|
||||
|
||||
if (ppp_open)
|
||||
return;
|
||||
|
||||
if ((ppp_h = socket (AF_INET, SOCK_DGRAM, 0)) >= 0)
|
||||
ppp_open = 1;
|
||||
}
|
||||
|
||||
void
|
||||
close_ppp(void)
|
||||
{
|
||||
if (!ppp_open)
|
||||
return;
|
||||
close(ppp_h);
|
||||
ppp_open=0;
|
||||
}
|
||||
|
||||
/* other stuff */
|
||||
|
||||
void
|
||||
write_pid_file(void)
|
||||
{
|
||||
char *p;
|
||||
char temp[128];
|
||||
FILE *f;
|
||||
|
||||
p = getenv ("HOME");
|
||||
strcpy (temp, p);
|
||||
strcat (temp, "/.yawmppp2/yawmppp.pid");
|
||||
|
||||
f=fopen(temp,"w");
|
||||
if (f) {
|
||||
fprintf(f,"%d",getpid());
|
||||
fclose(f);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
remove_pid_file(void)
|
||||
{
|
||||
char *p;
|
||||
char temp[128];
|
||||
|
||||
p = getenv ("HOME");
|
||||
strcpy (temp, p);
|
||||
strcat (temp, "/.yawmppp2/yawmppp.pid");
|
||||
|
||||
unlink(temp);
|
||||
}
|
||||
|
||||
void
|
||||
make_config_dir(void)
|
||||
{
|
||||
struct stat ss;
|
||||
char tmp[256];
|
||||
|
||||
sprintf(tmp,"%s/.yawmppp2",getenv("HOME"));
|
||||
|
||||
if (stat(tmp,&ss)<0)
|
||||
mkdir(tmp,0700);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
grab_isp_info(int rof)
|
||||
{
|
||||
char *p;
|
||||
char temp[128];
|
||||
|
||||
p = getenv ("HOME");
|
||||
strcpy (temp, p);
|
||||
strcat (temp, "/.yawmppp2/yawmppprc");
|
||||
|
||||
num_isps=GetISPInfo(temp,&IspData[0],MAX_ISPS);
|
||||
|
||||
if ((!num_isps)&&(rof)) {
|
||||
run_pref_app();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
run_pref_app(void)
|
||||
{
|
||||
if (!fork()) {
|
||||
execlp("yawmppp.pref","yawmppp.pref",NULL);
|
||||
execlp("/usr/local/bin/yawmppp.pref","yawmppp.pref",NULL);
|
||||
execlp("/usr/bin/yawmppp.pref","yawmppp.pref",NULL);
|
||||
exit(2);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
run_log_app(void)
|
||||
{
|
||||
if (!fork()) {
|
||||
execlp("yawmppp.log","yawmppp.log",NULL);
|
||||
execlp("/usr/local/bin/yawmppp.log","yawmppp.log",NULL);
|
||||
execlp("/usr/bin/yawmppp.log","yawmppp.log",NULL);
|
||||
exit(2);
|
||||
}
|
||||
}
|
||||
|
||||
/* essential */
|
||||
|
||||
|
||||
/* get_statistics */
|
||||
|
||||
int
|
||||
get_statistics (char *devname, long *ip, long *op, long *is, long *os)
|
||||
{
|
||||
|
||||
struct ifpppstatsreq req;
|
||||
struct ppp_stats ppp_cur;
|
||||
|
||||
memset (&ppp_cur, 0, sizeof (ppp_cur));
|
||||
|
||||
open_ppp();
|
||||
if (!ppp_open)
|
||||
return(-1);
|
||||
|
||||
memset(&req,0,sizeof(req));
|
||||
|
||||
#ifdef LINUX
|
||||
req.stats_ptr=(caddr_t) & req.stats;
|
||||
strcpy(req.ifr__name, active_interface);
|
||||
#endif
|
||||
|
||||
#ifdef FREEBSD
|
||||
strcpy(req.ifr_name, active_interface);
|
||||
#endif
|
||||
|
||||
if (ioctl(ppp_h,SIOCGPPPSTATS,&req) >= 0)
|
||||
ppp_cur=req.stats;
|
||||
|
||||
*op = ppp_cur.p.ppp_opackets;
|
||||
*ip = ppp_cur.p.ppp_ipackets;
|
||||
*is = ppp_cur.p.ppp_ibytes;
|
||||
*os = ppp_cur.p.ppp_obytes;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* stillonline */
|
||||
|
||||
int
|
||||
stillonline (char *ifs)
|
||||
{
|
||||
|
||||
#ifdef LINUX
|
||||
FILE *fp;
|
||||
char temp[128];
|
||||
#endif
|
||||
#ifdef FREEBSD
|
||||
struct ifreq req;
|
||||
#endif
|
||||
int i=0;
|
||||
|
||||
#ifdef LINUX
|
||||
fp = fopen ("/proc/net/route", "r");
|
||||
if (fp)
|
||||
{
|
||||
while (fgets (temp, 128, fp))
|
||||
{
|
||||
if (strstr (temp, ifs))
|
||||
{
|
||||
i = 1; /* Line is alive */
|
||||
}
|
||||
}
|
||||
fclose (fp);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef FREEBSD
|
||||
strcpy(req.ifr_name,active_interface);
|
||||
open_ppp();
|
||||
if (!ppp_open)
|
||||
return 0;
|
||||
if (ioctl(ppp_h,SIOCGIFFLAGS,&req)>=0) {
|
||||
if (req.ifr_flags&IFF_UP)
|
||||
i=1;
|
||||
}
|
||||
#endif
|
||||
return i;
|
||||
}
|
36
yawmppp/src/ycommon.h
Normal file
36
yawmppp/src/ycommon.h
Normal file
|
@ -0,0 +1,36 @@
|
|||
|
||||
#ifndef YAWMPPP_COMMON_H
|
||||
#define YAWMPPP_COMMON_H
|
||||
|
||||
#define MAX_ISPS 40
|
||||
|
||||
struct LogStruct {
|
||||
time_t start;
|
||||
time_t end;
|
||||
int status; /* 0=ok 1=error 2=crash */
|
||||
char longname[128];
|
||||
char shortname[16];
|
||||
char phone[32];
|
||||
char user[32];
|
||||
};
|
||||
|
||||
void clean_guards(void);
|
||||
void make_guards(void);
|
||||
void write_log(void);
|
||||
void warn_pref(void);
|
||||
|
||||
void open_ppp(void);
|
||||
void close_ppp(void);
|
||||
|
||||
void write_pid_file(void);
|
||||
void remove_pid_file(void);
|
||||
void make_config_dir(void);
|
||||
void grab_isp_info(int rof);
|
||||
void run_pref_app(void);
|
||||
void run_log_app(void);
|
||||
|
||||
int get_statistics (char *devname, long *ip, long *op, long *is, long *os);
|
||||
int stillonline (char *ifs);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in a new issue