#~~syntax:changelog

>> To 1.24 (released November 18 2004)
>> ===================================
## (kpatch NOT NEEDED if updating from >= 1.13)

  rpld:

  * internal: device number fixup has been moved to rpldev
  + support for /sys/module/rpldev has been added
  + added compat-style dev_t support (COMPAT_* in include/dev.h)
  + better device number differentiation for different kernel versions \
    (i.e. only minor 128 for 2.6, while 128...143 for 2.4 (for ptms))
  + unlink() before mknod()

  rpldev:

  * its Makefile has been changed to also take a variable KERNEL_DIR and \
    MODULES_DIR
  + using new module_param() for 2.6 environment
  + added check for endianesses which are neither little nor big
  + added the WOverrun flag controlling warning messages about buffer overrun

  kpatch:

  + added kpatch/2.0.40.diff and kpatch/2.2.26.diff, maybe it is not useful \
    but it is there for completeness

  doc:

  Countless minor (sometimes major) adjustments.
  + desc: Staying in sync with the short desc and trove cat'gz. set on SF
  + desc: Listing the four core components
  + install: building notes for 2.4 and before
  + rpldev(4): mentioning /sys things
  * support: largely rewritten to include the new things: FRS/SF, Patches and \
    Feature Request Tracker, Mailing Lists


>> To 1.21 (released November 23 2004)
>> ===================================
## (kpatch NOT NEEDED if updating from >= 1.13)

  rpld:

  * corrected G_skip(): do_wait branch did not wait, and the other \
    branch did wait.
  + redesigned the locking scheme (which is needed between rpld <-> infod).  \
    There is now only one big tty list lock (our "BKL"), so we need to lock  \
    less gates, and can complete ops in less CPU time. Albeit, it might take \
    some more real time (in the ns range) because the locked code segments   \
    are longer. Since infod acquires the locks a lot less than rpld does,    \
    this is acceptable
  * log_write() now uses a one-shot read
  + will now automatically create parent directories if needed \
    (like `mkdir -p`)
  + sets umask so that the maximum permissions are -wx------
  + added -i option (counter -I)

  infod:

  - FLUSH request has been dropped, entries are automatically flushed by rpld
  - display of file descriptor has been removed

  rplctl:

  * option change: -D => -S (close until session ends / tty is \
    deinitialized), -J => -D (deactivate total)

  rpldev:

  * (big-endian only) fixed my_swab() [had count=={16,32,64} \
    instead of {2,4,8}]

  ttyreplay:

  - outsourced the EVT_WRITE branch from replay_file() into e_proc()
  + added the echo key to also show EVT_READ packets
  * fixed a possible loss of precision in the "i->factor != 1.0" branch \
    (added (double) explicit conversion)
  * replaced "packet skipping" with read_through() because otherwise screen \
    initializations might be missing

  doc:

  * rpl(4) moved to rpl(5) -- now it's in the appropriate category
  * fixed some spellings, constructs and etc.
  - took out some old paragraphs and
  - removed doc/design.txt, it was already in ttyrpld(7)
  + updated docs with new stuff, check it out!
  + new design

  Makefile:

  - MARCH and MCPU variables have been taken out, superseded by EXT_CFLAGS
  * "kmod" target will now `rmmod rpldev` before reloading it


>> To 1.13.1 (released November 03 2004)
>> =====================================

  - Removed stray .orig file in kpatch/*
  + added kpatch/2.6.9-vanilla
  * added a workaround for GCC >= 3.4 which has problems with inline


>> To 1.13 (released November 02 2004)
>> ===================================
## (kpatch NEEDED)

  Ttys still were not closed for some reasons, so that once opened ttys dev
  numbers would never be logged again, or at least <...> anyway something was
  wrong. And it was due some bad code in UML... I relied on, sigh.

  Anyway, it's corrected now. And it was painstaking to find the right spots
  myself, because actually UML placed a CLOSE where an OPEN should have been.
  OTOH, UML already had a OPEN, so I had two of them. Which lead me to the
  conclusion to redesign it a little bit.

  rpld/rpldev:

  * changed the EV_ constants to EVT_ to avoid clashes with ELF code
  + new EVT_{INIT,OPEN,CLOSE,DEINIT} event types
  * the event type and magic bytes have not been touched since the on-disk \
    format (as generated by rpld) remains the same, it's just a change \
    between rpldev=>rpld. (Ya like the modular-ness of ttyrpld? Good.)
  + .dev2 member has been added to the struct rpld_packet
  * struct {rpld,mem,disk}_packet are now overall tagged with PACKED

  rpldev:

  + new krn_{init,deinit}()
  + tagged certain vars as __user
  + properly including <linux/compiler.h> or defining __user to nothing
  - removed unnecessary byteswap operations (only relevant for big-endian)

  kpatch:

  + new patch against 2.6.9-rc2


>> To 1.01 (never actually released)
>> =================================

  infod:

  * changed the protocol to allow requests with "void", "int" and "string" \
    parameters

  rplctl:

  * option parser behavior changed: -tL (-t -L) is now different from -Lt \
    (-L -t) in that the order is significant... in -Lt, -L is executed before \
    -t so it would still show readable text rather than parseable.

  other:

  + added one more block to the legal statement
  + added ETCINITD_QUIET to rpld.conf
  * corrected the make clean target for "kernel-2.6" directory so that it \
    continues to work when something changes in the kernel tree


>> To 1.00 (released 2004-09-26)
>> =============================

  New edict: if I don't explicitly say "you need to/should upgrade the rpldev
  kernel module" under "rpldev:" in this Changelog, then you don't need to!
  (Though, you always can. It's just a module and a cheap recompile without
  reboot.)

  rpld:

  + will continue starting rpld even if config file could not be read
  + warning message if the RPL device returns EBUSY
  * fixed: /var/run/.rpldev was not unlinked if it could not be opened

  infod:

  * the parsetext (rplctl -t) "status field" has been changed: \
    from (A, D, S) to (A, J, D) to reflect the rplctl switches
  + will now print a '?' as status character if something got us corrupted

  ttyreplay:

  + will now assume to play STDIN if no filenames are given and STDIN really \
    is a pipe/file/etc. (anything but terminal)
  + jumping to a given position (-J and -j) will now print the packets' \
    contents to properly display e.g. graphical applications
  + added play controls (forward 10/60 sec, pause, slower/faster playback, \
    prev/next file, see DOCS!)
  + displays the timestamp during replay! (-t option)

  rpldev:

  * worked around: the device driver could not be opened with 2.6.8 due to \
    2.6.8's new seeking design
  - removed the debugging messages "RPL device opened" and .."closed"

  etc-init.d-ttyrpld:

  * now uses the "install paths", i.e. /usr/local/sbin/ rather than \
    /usr/lib/ttyrpld
  + can work independent of /etc/rc.status (sometimes only to be found on \
    SUSE Linux)

  other:

  + added "install" and "uninstall" targets to Makefile
  * START_INFOD in the default distribution is now "yes"
  * (all): big endian was never selected due to a typo in __BYTE_ORER (see?)
  + supporting Kernel 2.6.8-14 (SUSE) and 2.6.8 (vanilla)
  * Kernel patches moved into their own folder "kpatch"


>> To 0.88 (released 2004-09-09)
>> =============================

  rpld:

  * fixed a race condition in log_close(), where everything above \
    pthread_mutex_lock() should have been while the lock is held
  + user changes on tty device (such as on vc-*) will be detected and now \
    correctly put into separate files. (See doc/rpld.html for details.)
  * fixed: a REMOVE request (rplctl -X) also triggered FLUSH (-F)

  infod:

  * changed IFP_GETINFO into IFP_GETINFO_T (readable text output) and
  + added IFP_GETINFO (parseable text output, e.g. sscanf())

  rplctl:

  + added the -L switch to make rplctl ask a IFP_GETINFO/_T even if there are \
    other arguments like -ADFJX
  + added the -t switch to use IFP_GETINFO instead of IFP_GETINFO_T
  * fixed: `rplctl -X tty1 tty2` actually did not show info for tty2 \
    (normal arguments ignored if any option switches were found)
  + added the -Z switch to zero all stats counters


>> To 0.87 (released 2004-09-06)
>> =============================

  rpld:

  * notify() will now print to stderr and syslog if both of -s and -v are \
    given (before, -v overrode -s)
  * fixed: /proc/misc was not closed
  * temporary device node path is now /var/run/.rpldev (was ./.rpldev)

  + added a subcomponent infod (socket is /var/run/.rplinfod_socket)
  + added the respective gather tool "rplctl"

  * fixed: ttys were not removed from the tree in log_close()

  rpldev:

  + added RPL_IOC_GET[RW]AVAIL ioctl calls
  * fixed: a deadlock would occur if kmalloc() returned NULL and you tried to \
    reload the module

  + using vmalloc() to be able to allocate more than 64KB (GI_bufsize)

  ttyreplay:

  + added the -m option to specify a maximum delay
  + added the -j (skip packet count) and -J (skip time) options to start \
    playing at a given position in the logfile

  etc-init.d-ttyrpld:

  * rpld will now be detached from the current session (but keep the current \
    stdout/err to report errors).

  other:

  * stepped once more through in theory and checked for necessary swab()s, \
    both rpldev (added a lot) and rpld (more thought)
  + logging on-the-fly-over-network has been tested and works well the two \
    minutes I tested it


>> To 0.85 (released 2004-08-27)
>> =============================

  * trying to make the different situations work (read/seek on file/pipe/dev)

  rpld:

  * the on-disk packet format has been changed in that the device field has \
    been removed; rpld was designed to analyze this field and write the \
    buffer to a given file, which makes the dev field a space waster.
  + see above: now saving up to 10%

  + will now generate an EV_IDENT packet for log files
  + implemented the "text-only" output of logfiles (strip headers), \
    option is -T

  - superfluous: removed the BSIZE, FBSIZE options. The device hands out its \
    buffer size through an ioctl.
  + include/rpl_packet.h: added an EV_IGNORE type

  * fixed: EV_CLOSE events only happen on pty master sides, so log files did \
    not get closed for ptys
  + added a debug option -Q to suppress creating files
  + added a check to stop reading from non-rpldev when EOF is reached
  * some endianess fixes, untested though
  * fixed: exclusion of pty masters only worked for major 128

  + BSD pty master fixup as it just went with Unix98 pty master \
    (i.e. to catch the fact that the close is reported on the master side)

  ttyreplay:

  - --std option has been removed, Overhead Correction is also needed on 2.6 \
    when using high values with -S

  rpldev kernel module:

  + uif_llseek() will now not lock if it is not actually seeking

  other:

  + etc-init.d-ttyrpld: added missing "kick" help to (*) case
  + include/rpl_packet.h: new event type: EV_IDENT
  * include/rpl_packet.h: struct log_packet has been renamed to struct \
    disk_packet to remove ambiguity
  + new doc outfit and manual pages


>> To 0.83 (released 2004-08-05)
>> =============================

  rpld:

  + automatically determines what minor number the rpl device is bound to \
    and dynamically create a node

  ttyreplay:

  + added follow modes (-F, -f options)
    -F: live feed (directly see what a user is typing), à la `tail -f`
    -f: play file as normal and switch into -F when EOF is encountered
  + added error recovery

  rpldev:

  * the default minor number is now MISC_DYNAMIC_MINOR (see automatic minor \
    number detection below for rpld)
  + added an info upon module loading telling us what minor number the misc \
    subsystem finally gave rpldev


>> To 0.82 (released 2004-08-03)
>> =============================

  rpld:

  * a one-time variable was not freed (minimal impact)
  + added -v option to interactively show statistics
  + a new option "OFMT" has been added which combines (and thus obsoletes) \
    the LOGDIR and SBTTY variables
  + added "%t" (time in "%H%M%S" format) as a specifier for OFMT
  * "%d" has been degraded to only provide the date ("%Y%M%d") rather than \
    date-and-time

  ttyreplay:

  + finally implemented the "time warp" function (e.g. replay the log twice \
    as fast as the original user on typed), it's the -S option ("speed"). \
    It takes a multiplication factor (2.0 = double, 0.5 = half speed, etc.)
  * the time correction algorithm has been redone (the one before still had a \
    time skew); the main calculation unit is now µsec

  rpldev:

  + the user may now choose the minor number upon module loading

  other:

  + more precise error control in etc-init.d-ttyrpld
  * user/shared.c: added defintions for BSD pty slaves, changed pty-% into \
    proper ptyp%%
  * kernel-2.6/rpl-kernelpatch.diff: the file has been replaced with patch \
    which works for 2.6.5 and up


>> Initial Release 0.80 (released 2004-07-19)
>> ==========================================


>> Legend
  + [green] added
  * [yellow] changed
  - [red] removed or really important
