             Technical notes on version 3.9.10
                       2 June 2002
                       Kern Sibbald

General:
- Made shared memory implementation use shared memory
  pointer rather than copying.
- I did not test the master/slave code under the new scheme.
- The tab characters in a number of files had been removed, so the diffs
  for some files are larger than really necessary.  Use diff -b if you
  want to see the real differences.
- The Makefile dependencies are not correct. E.g. changing apc_extern.h
  will not cause all the appropriate files to rebuild.  I did not
  fix this.

Changes submitted this submission:
- Modified the ./configure process so that the output
  summary report is saved in config.out. Thus at a 
  later time, you can see how apcupsd was configured.
- Corrected a problem with configure.in where the
  AC_DEFINE(HAVE_CYGWIN) was inside a test rather than
  at the top level.
- Removed the install of the examples. This is something important
  to have in the source, but it should not be loaded into the
  system files.
- Removed an inappropriate #ifdef in hid-ups.c. This prevented it
  from building properly.
- Major cleanup and reorganization of the shared memory implementation.
  The shared memory image is no longer copied to local storage but
  referenced directly by the shared memory pointer. This makes the
  shared memory scheme much more similar to the pthreads implementation.
- Added a number of write_lock(ups) that were missing.
- Eliminated read_shmarea() and write_shmarea(). Use memcpy() if you
  need to do this.
- NOTE!!! init_ups_struct() must NOT clear memory as the shared memory
  structures or the pthreads structures are already setup.
- The test for no NISIP configuration statement was incorrect causing
  apcupsd to always report an error. I fixed it.
- The test for NISIP was placed before the attach to shared memory in
  apcnis.c, which means it would not have worked on a shared memory
  configuration. I corrected this.
