-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathChangeLog
485 lines (440 loc) · 22.2 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
From 1.1.4 to 1.1.5
-------------------
reset(): Changed struct from direct to dirent to comply with recent deprecation
configure.in: Removed --enable-ipv6 and made IPv6 support the default. Build with
--disable-ipv6 to compile without.
icpld.conf.sample: Fixed typo and clarified a few things
From 1.1.3 to 1.1.4
-------------------
contrib/: Added init.d script from Klaus-J
README: Added credits
configure.in: Made IPv6 support the default, disabled with --disable-ipv6
From 1.1.1 to 1.1.3
-------------------
* main(): Added reading from the popen() ptr in the fallback checking as well, seems
to be required on some systems.
* reset(): Oops: Removed my trace output in -reset
* parseargs(): Added -err and -err6 which displays the error log, much like the -log option
* help(): Fixed typo at -errFile6
* help(): Added -err and -err6
* help(): Fixed typo
* dispErrs(): New function and file, takes a mode and a string. The mode tells us if it's -err6
or -err that's calling us, and the string holds the corresponding filename.
Simple and straight forward
* man/icpld.1: Added -err and -err6 as well as some other minor adjustments
* reset(): Slight modification to get rid of some redundancy
* icpld.conf.sample: Rewrote some comments to clarify things which may have been a tad fuzzy
From 1.1.0 to 1.1.1
-------------------
* killProc(): Fixed typo
* killProc(): Replaced hard coded signal numbers in the output section with
it's definition
* killProc(): Fixed output (-s now goes for -detach as well)
* getCwdir(): Forgot to free 4096 bytes of allocated memory. This has been
fixed. I'm so sorry for wasting your precious resources with
my inadequate coding and I humbly ask for your forgiveness and ask
you to spend your newly found 4 kb wisely.
* README: Added credits to Tom Angle for providing the slackware packages
* src/cuc.h: Changed function definitions to include the variables errors and errors6
which holds the path to the errors file. The functions in question
are; checkInp, parseargs and parseconf
* src/cuc.h: Added inclusion of sys/param.h for Net- and OpenBSD to get MAXPATHLEN
* parseconf(): Added config file option for errors file
* parseargs(): Added argument option for errors file
* help(): Added output for -errors and -errors6
* main(): Now using std::ios::app instead of std::ios_base::app for backwards
compability with gcc
* main(): Fixed the bug which made command line supplied paths not being expanded
* getcwdir(): Fixed the NetBSD-bug by using the Darwin-specific code
* reset(): This function has gone through a major remake (not to say rewrite)
mainly to comply better with older compilers
* logturn(): Rewrite and C:ified code for the above mentioned reason
* wlogs(): Fixed the bug which wrote the logfile header to the IPv6 logfile
if you specified a logfile on the commnad line
From 1.0.9 to 1.1.0
-------------------
* signal_handler(): Added the SIGUSR1 (10) signal which will detach
an icpld process currently running in the foreground
* help(): Added the -detach option
* parseArgs(): Same same
* killProc(): Added another argument to pass wanted signal to
be able to reuse the function for sending SIGUSR1
(the signal which detaches icpld) as well.
Also added various things needed for this to work
* man/icpld.1 Updated version field
* main(): Corrected a lingual mistake in the syslog message
concerning a failed pipe
* getCwdir(): Removed the deleting of tempbuf, so it works on newer compilers
as well.
The following is brown-paper-bag stuff
* src/signals.cpp: Altered a deprecated include (sys/signal.h -> csignal)
as well as added SIGUSR1 to the file header
* src/cuc.h: Altered deprecated includes (stdlib.h -> cstdlib, errno.h -> cerrno)
* src/fork.cpp: See above (assert.h -> cassert, signal.h -> csignal), also removed
duplicate inclusion of cstdio
* src/getcwd.cpp: See above (assert.h -> cassert)
* src/displog.cpp: See above (signal.h -> csignal)
* src/Makefile.in/am: Removed -Wmissing-prototype due to new gcc stuff
From 1.0.8 to 1.0.9
-------------------
* man/icpld.1: Updated version field
* general: Fixed the autoconf deal from 1.0.8, as well as solved the
no ping6 on solaris issue
* TODO: Removed entry about above mentioned issue
* main(): Instead of hard coded ping commands, configures result is used
From 1.0.6 to 1.0.8
-------------------
* help(): Changed the output of --help depending on wheter IPv6 support is
enabled or not.
* general: Extended and clarified commenting
* main(): MacOSX support is back! Altered the command variable as well as
added the same "fix" as available for Solaris. This is the main
issue that lead to this release
From 1.0.5 to 1.0.6
-------------------
* verip(): Altered the somewhat unclear output given if the IPv6 ip doesn't
resolve
* verip(): Added more verbose error reporting
* wlogs(): Added the startup info to the HTML exporting as well. Terrible that
this hasn't generated a single bug-report! Shame on you
open source community!
* icpld.conf.sample: Fixed spelling error
* configure.in: Fixed versioning
* configure.in: Moved several templates from acconfig.h to configure.in according
to the new ways of doing such things
* man/icpld.1: Fixed version in footer
* README: Added MacOS X as a "known to work" system
* configure: Fixed the versioning bug for non-IPv6 users. icpld now reports the
correct version
* checkinp(): Fixed the bug which broke the HTML exporting. The variable wasn't
passed as a reference which always made it false in main()
* checkinp(): Closing all open streams
* checkinp(): Removed some redundant code. This is a forgotten chapter of icpld
which had grown out of proportion. It needed a cleanup badly. It was
incremented as the bug fixing grew, without iterating over previously
added code, hence containing duplets of a few checks etc.
* checkinp(): Rephrased some user dialogs
From 1.0.0 to 1.0.5
-------------------
* logTurn(): Instead of overwriting log.old with the newly turned log, it
names them log.0, log.1 etc. Also fixed poor intendation
* reset(): When -reset is given, icpld also removes the above mentioned files
* main(): The -status command does no longer show IPv6 info when running
in IPv4-only mode and vice versa.
* parseArgs(): Added -rotate as an 'alias' for -turn for no apparent reason
* getCwd(): C++-ized and rewrote the memory allocation, to get prettier
valgrind output :-)
* BUGS: Fixed typo
* src/cuc.h: Rewrote the PACKAGE redefinition
* configure: PACKAGE* definitions is now set properly
From 0.6.3 to 1.0.0
-------------------
* main(): Added a workaround for the fact that a 'Broken pipe'-error
is produced unless the pointer which is used with popen()
is in some way used under Solaris. Version 0.6.3 unfortunately
broke Solaris support. But it should be working again.
* src/cuc.h: Rewrote the PACKAGE definition if HAVE_IPV6 is defined
* parseargs(): Removed the failing-text, since icpld removes the pid-file
even if there's no process, the user might just as well
believe it was killed. (Thanks to Jameson Burt
<jameson at coost dot com> for this somewhat obvious
suggestion
* killProc(): Same as above. However, kill() errors other than ESRCH are
shown
* killProc(): Closing the readPid stream
* main(): Altered the text that's displayed if a pid-file exists.
It does no longer tell the user to remove ~ /.icpld/icpld.pid,
but to run icpld -quit instead (which does just that)
* help(): Added -fbip6 after I realized this should have been added
in the 0.6.0 release
man/icpld.1: A lot of cosmetic fixes, especially line-breaking alterations.
man/icpld.1: Changed 'sound' to 'beeping', since people may be under the
impression that sound includes external processes spawned
when a connection goes up or down.
README: Added Darwin as a "known to run icpld"
TODO: ...
From 0.6.1 to 0.6.3
-------------------
* parseconf(): Added cmd*up/dn parsing
* dispLog(): Implemented the -m option. Huge changes here. See NEWS for
further info on -m
* dispLog(): Changed from reading binary to ios::in for MacOS X compliance
* parseargs(): Added the -m option, which outputs the log in full, without
breaks, in combination with -log
* parseargs(): Added exit() calls after --help and "bad argument"
(see below in help())
* parseargs(): Ugly (though working) fix which cancels config file options
if command line options are found. For instance, if icpld is
started with -ip, it won't use the IPv6 ip from the config file
* killProc(): Same as above
* signal_handler(): Added the SIGPIPE signal, even though it shouldn't get that far
* signal_handler(): The return code is 0 for all signals except SIGPIPE
* help(): Changed function return type to void
* help(): Removed the exit() call, since the return code
should be different depending on wheter an unknown
argument was given, or the user actually supplied
--help. The return codes are 1 respectively 0
* wrongArg(): This function is located in parseargs.cpp and is called
whenever an option which requires an argument, is provided
without one. Exits with return code 1
* logTurn(): Fixed the bug which made log turning impossible, since ~
wasn't expanded to the user's home dir.
* logTurn(): ICPLD now exits with return code 1 if the turn fails
* main(): Added the calls for cmd*up/dn in the proper places
* main(): Replaced a few if-statements with assertions since no
actions are needed if those tests fails
* main(): Now deleting savepwd2 (yay 4 bytes of memory gained!)
* main(): Removed the ugly fix for compilation warning without IPv6
enabled
* main(): Removed the redundant fread() calls <- OUCH!
* main(): Removed the empty initializing of std::strings since this
is the default on most (all?) platforms
* main(): Removed some redundant permission checking which is done
in checkinp() as well
* main(): Changed exit() calls with raise() in order to clean up
properly from within signal_handler()
* main(): Moved the "Forking into background as.." to daemonize() since we want the
pid of the forked child, not the to-be exited parent process
* daemonize(): The parent process now writes the PID of the child before
it _exit():s. This fixes the bug which had the wrong PID
written to the user (the one of the parent process, not the child)
* getCwd(): Since MacOS X has some issues with my malloc(), there's been a
rewrite of getCwd() for MacOS, the old one stays for the rest of the os:s
* cuc.h: If ICPLD was configured with --enable-ipv6 the string
"+ipv6" is added to the output of --version. This was
mainly implemented in order to let me know that IPv6
is used if someone files a bug-report.
* cuc.h: Now including string.h or strings.h, depending on which
one exists. string.h has priority over strings.h if
both exists. Purely out of portability reasons.
* wlogs(): Fixed the condition checking, since a few situations
could suit several conditions
* wlogs(): Rewrote the HTML section totally, less confusing now hopefully
* man/icpld.1: Added info on the -m switch
* man/icpld.1: Added cmd*up/dn information
* src/fork.cpp: Altered header quote
* configure.in: Added OS detection for MacOS X as well, in order to get
by the malloc() disagreement in getCwd()
* icpld.conf.sample: Added cmd*up/dn examples
From 0.6.0 to 0.6.1
-------------------
* general: Extended source code commenting
* README: Altered 'release specific comments, upgraded 'obtaining
icpld' and fixed a typo in 'thanks to'
* parseconf(): Removed the variable resetting. See below
* parseargs(): Now you can use incomplete configuration files
with -config. Before parseconf() is called, the
values are reset to default. IE you can have only
ip=192.168.0.2 and logFile=~/.icpld/log in your config,
the rest will be taken from default
* man/icpld.1 Fixed formatting error on the 'ip6' option
* verip(): Fixed the compilation error under Solaris
(someone, please provide me a solaris testbed)
* signals(): Changed integers to the definitions of the
signals to avoid platform differences
* main(): Fixed the bug which wouldn't set the time to
when the connection actually were broken
* main(): Removed some debugging output
* main(): Removed the warning given if the $HOME variable
is not found
* main(): icpld does not give the warning about another process
running, if -s is specified, but dies silently
* wlogs(): Fixed the bug which left the IPv6 ip out of the
log generating if both IPv4 and IPv6 logging is set
to the same file
* wlogs(): Code cleanup, redundant if-statements removed
* firstr(): icpld now checks for, and creates the tot6 file, since
most users probably don't have it since the IPv6
implementation came last version
* reset(): Now icpld also removes IPv6 specific files
and restores them (see entry above)
* reset(): Removed the availability checking for the html files
since messages due to ENOENT are suppressed anyway
From 0.5.4 to 0.6.0
-------------------
* verip(): Total rewrite, now using gethostbyname2() except
when building on Solaris where getipnodebyname()
* verip(): Added validity checking for IPv6 ips.
* help(): Added all necessary arguments to help output
* daemonize(): Added exception control for chdir() and open()
* parseconf(): Removed excessive comments
* parseconf(): Added the possibility of 'ipv6' in the config file
* parseconf(): icpld now tells you which post is wrong, instead of
just which line it is on
* checkinp(): New function and source file. This file contains all
the input checking which previously was made in main()
* parseargs(): New function and source file. This file contains all
the argument parsing which previously was made in main()
This and the above change has cut memory usage upon
compiling with optimization in half
* main(): *Major* code cleanup. Excessive comments removed
comment formatting altered, code blocks removed
and replaced by extended use of fixPath() etc.
* main(): Moved the passwd struct initiation into the else
block, since it's not used if $HOME is found
* main(): Altered output given if the environment variable
$HOME fails to be used.
* main(): Removed development output from command line parsing
* main(): Fixed the path-related bug for -htmlfile as well
* main(): Added permission checking for -logfile
* main(): Altered various output. Mainly permission error messages
* main(): The header of the HTML formatted log is now included
in HTML files specified with -htmlfile
* main(): Removed all of the path-fixing code and pass the variables
through fixPath() instead
* main(): Duplicated the original main loop into IPv6 as well
* firstRun(): Added extended permission exceptions handling
* help(): Altered return code to 2 upon wrong argument passed
* fileCheck(): Removed exit() on ENP. Abortion is desided depending
on which file is being checked
* fixPath(): *Major* code cleanup/rewrite. Removing unneccesary
variables and code blocks
* killProc(): icpld may now exit silently as well
* killProc(): icpld now returns 1 if the PID file is missing when trying
to terminate a running(?) process
* contrib/icpld.sh.sample: Added the -s to the 'stop' option as well
* man/icpld.1 Added the -4, -6 options, and updated the config file post
* README: Updated URL in the 'Getting icpld' section
* README: Rewrote smaller pieces of the Usage section to be
more understandable, as well as added notes on IPv6
* README: Added some comments on the new release
* TODO: Removed the post about IPv6 porting
From 0.5.3 to 0.5.4
-------------------
* main(): Fixed the path-related bug with -logfile.
icpld -logfile log works now. No absolute path
is longer necessary. See code comments for further info
* main(): Altered output given when running in foreground
* main(): Fixed the missing space in the definition of command2
which led to an error in command2 (probing fallback ip)
(Couldn't have been that bad since it's been there since
0.5.0 and no one noticed)
* fork.cpp: Altered quote in the file header
* TODO Removed the html template entry
* README Altered version number in the 'Getting icpld' section
* BUGS Removed the entry concerning the path issue (see above)
* man/iclpld.1: Changed path to configuration file in CONFIG FILE
as well as author email address
From 0.5.2 to 0.5.3
-------------------
* verip(): Fixed the brown-paper-bag-bug, which resulted in several ips
not passing through the verification routine.
From 0.5.0 to 0.5.2
-------------------
* main(): Altered path to search for configuration file in, it is now
/usr/local/etc, rather than /etc. /etc is however kept as
a fallback path, to keep backwards compability.
* main(): Removed some of the code surrounding the -quit switch, since
that code segment got obsolete in the changes of killProc()
in version 0.4
* main(): Added the -s option which makes icpld completely silent.
This was mainly added since it comes in handy when one is
starting icpld from startup-script, and don't want the
output.
Perhaps this should be made default, and a -verbose option
should be added to revert the default silent mode? Drop me
an e-mail with your 2 cents on this issue.
* main(): Fixed grammatic error in the log output. Totally -> Total
* killProc(): ICPLD now returns 0 on signal 15 and 2. Thanks to
Jonas Olsson for pointing this out.
* killProc(): Writing errors to stderr instead of stdout. Same as above
* help(): Added the -s option and an explanation. Also removed trailing
dot after the explanation for the -d switch
* fork.cpp: Altered the quote in the file header (very clever words indeed)
* fork.cpp: Removed some outdated comments
* General: Added Jonas Olssons startup-scripts (see contrib/)
* README: Extended credits for Jonas Olsson to include startup-scripts
* NEWS: Added announcement for this version
* fork.cpp Altered Author email address
From 0.4.5 to 0.5.0
-------------------
* parseConf(): Entered "1.0" as default 'pint' value. Was earlier set to ""
which resulted in pint becoming NULL if the ping option was missing
from the config file, which isn't acceptable.
* main(): Altered the malloc() call in the if() statement to get
rid of the annoying warning message when running in a BSD environment,
about the high junk value. Also altered the free() segment.
* README: Changed author e-mail address
* README: Added credits for Martin Nilsson <[email protected]>
* icpld.conf: Removed example ips from the config file.
From 0.4 to 0.4.5
-----------------
* main(): Removed output of number of arguments when none is
given (forgotten debug flag)
* main(): Added the -pint option. See manpage for further info
* main(): Altered configuration parsing element from strncmp
(confVar, "something", 9)
to strncmp (confVar, "something", strlen("something")
* main(): Expanded ./ to current directory in -logfile as well
(necessary since fork() chdirs do /. Hence icpld
-logfile ./log, ended up in /log, and not
/the/directory/icpld/was/started/from
* main(): Corrected diverse spelling errors
* main(): If getenv() fails (missing variables eg.) icpld will
fall back to trying the passwd struct.
* main(): If htmlFile is left empty, skip writeability checking
to prevent "It appears as if you do not have the proper
permissions to write to (note the void) Please gain
proper user level, or alter the path and try again."
* main(): Changed command availability statement to else if (argc <= 1)
Since else covers non existent or readable config files.
HUGE bug? Indeed.
* main(): Applied existance checking on -config specified config files
* main(): Moved the -reset option to a source file of its own
(src/reset.cpp)
* main(): Breaking if homedir is unretrieveable by any of the two
above methods (highly unlikely though)
* help(): Added brief info on -pint in help function
* reset(): Added errno display exception for ENOENT
* reset(): Moved the deletion of html-file to before attempt to remove
~/.icpld, since the dir can't be removed if html file resides
within.
* dispLog(): Corrected spelling errors
* general: Moved the ip verification bit to a source file of its own
* general: Moved the help() function to a source file of its own
* killProc(): Added perror() if kill() fails
* signal_handler(): Added signal QUIT (3), and applied the
getpwent() fallback method here as well.
* AUTHORS: Changed e-mail address for author
* README: Updated version and corrected some grammatics
* README: Refomratted linebreaks for terminal compability
* INSTALL: Added missing ) to last row (d0h)
* man/icpld.1: Updated manpage, included -pint information
From 0.3 to 0.4
---------------
* main(): Checks for getenv() exception (lacking variables etc.)
* logTurn(): Added permission control for reading and writing the log-file
* fileCheck(): Moved to a source file of its own
* fileCheck(): Added existance checking with stat(), and not just
readability checking, but also permission.
* main(): Extended checking of 'ping' permissions, to 'command
not found' as well as 'permission denied'
* main(): Added if (logFile == htmlFile).. Just in case
* main(): Fixed ./ and ~ extension for -config argument as well
* general: ICPLD now marks a connection as available if the
fallback ip replies when down, and not only the
main ip (horrible bug, I know (but hey, check the
version numbers))
* general: Fixed some general and standard English language issues
* general: Removed the bug which generated the following confusement:
Fallback ip 127.0.0.1 seems available. Connection back up!
Got ICMP reply from 192.168.0.2.. Connection available!
<- Even though that ip was still down
Sending ICMP request to 192.168.0.2...
192.168.0.2 isn't responding. Trying fallback ip...
From 0.1 to 0.3
----------------
* main(): Added stamp to HTML log
* main(): Altered HTML formatting
* main(): Command line parsing;
Fixed bug which made -log read the logfile specified in the
config file, even if -logfile was given at the command line,
unless -log came after -logfile,
* main(): Rewrote the get_current_dir_name() to comply to even more compilers.
Even them old pesky ones.
* main(): Fixed the directory confusement if one for example did
-logfile ./log. Since the function firstr()
chdirs to ~/.icpld pwd was dito. Hence ./log actually
meant ~/.icpld/log anyways.
* main(): Fixed the html formatting, even on files set by
-htmlfile or from the config.