+Fri Feb 23 15:54:00 CET 2001 Wichert Akkerman <wakkerma@debian.org>
+
+ * utils/start-stop-daemon.c: Add OpenBSD support
+ * utils/md5sum.c: include unistd.h to things compile on OpenBSD
+ * configure.in: test to see if we need to link to kvm
+
Fri Feb 23 10:22:02 CET 2001 Wichert Akkerman <wakkerma@debian.org>
* scripts/dpkg-divert.pl: fix typo in usage message
Thu Feb 15 11:24:46 EST 2001 Ben Collins <bcollins@debian.org>
- * utils/Makefile.in: Do not use libopt.a, since libdpkg.a not includes those
+ * utils/Makefile.in: Do not use libopt.a, since libdpkg.a now includes those
objects
* optlib/Makefile.in: do not generate libopt.a
* lib/Makefile.in: build libdpkg.a to include the objects from optlib
* scripts/dpkg-genchanges.pl: also upload full source if version is *-0.1
* doc/ja/dpkg.8: updated with patch from Hiroshi KISE <fuyuneko@ryukyu.ne.jp>
-Tue Jan 11 18:32:52 CET 2000 Wichert Akkerman <wakkerma@debian.org>
-
- * configure.in: Fix include in test for alphasort
- * Makefile.in: add intl to subdirectory-list
- * dpkg-deb/Makefile.in: set top_builddir
- * dselect/Makefile.in: set top_builddir
- * main/Makefile.in: set top_builddir
- * lib/compat.c: add really simple snprintf (doesn't do range-checking)
- * lib/compat.c: add sys_siglist
- * configure.in: add tests for snprintf and sys_siglist
- * include/dpkg.h.in: don't include sys/sysinfo.h, filesdb.c is the only
- thing that needs it and it has its own include.
-
-Tue Jan 11 02:02:00 CET 2000 Wichert Akkerman <wakkerma@debian.org>
-
- * dselect/baselist.cc: don't specify SA_INTERRUPT, since it's
- not portable and the default behaviour
- * main/enquiry.c: include sys/termios.h (needed on Solaris)
- * lib/lock.c: use EACCESS instead of EWOULDBLOCK
- * dselect/main.cc: fix help for -D
- * dselect/main.cc: try to lock admindir instead of using readwrite
- * dselect/method.cc: switch to using fcntl for lock since that is more
- portable, and revamp lockingcode to reduce code duplication
-
-Mon Jan 10 20:55:45 CET 2000 Wichert Akkerman <wakkerma@debian.org>
-
- * Update Swedish and Russian translation
-
-Sun Jan 9 16:11:39 CET 2000 Wichert Akkerman <wakkerma@debian.org>
-
- * Merge patches from Josip Rodin:
- + various text and manpage updates
- + dselect/method.cc: don't abort if locking fails but give a
- warning
- + THANKS: fix various small errors
-
-Sun Jan 9 01:40:23 CET 2000 Wichert Akkerman <wakkerma@debian.org>
-
- * scripts/cl-debian.pl: Allow space between `#' and the bugnumber in the
- changelog scripts
- * scripts/start-stop-daemon.c: test for __sparc__ instead
- * scripts/Makefile.in: add optlib to CFLAGS
- * utils/start-stop-daemon.c: add option to chroot first, patch from Marco d'Itri
- * utils/start-stop-daemon.8: document chroot option
- * dselect/pkgtop.cc: use waddnstr to print package description instead of waddch
-
-Fri Jan 7 18:24:45 CET 2000 Wichert Akkerman <wakkerma@debian.org>
-
- * dselect/method.cc: pass admindir to dpkg
- * dselect/Makefile.in: fix rule to build helpmessages
- * dselect/curkeys.h: use curses.h instead of ncurses.h, since someone
- decided to play nasty and just remove that
- * scripts/: remove dpkg-safelist
- * dpkg-deb/build.c: remove dpkg-safelist calls
- * main/enquiry.c: redo formula to get fieldwidths for packages
-
-Wed Jan 5 17:09:45 CET 2000 Wichert Akkerman <wakkerma@debian.org>
-
- * Merge patch from Tom Lees <tom@lpsg.demon.co.uk>:
- + scripts/dpkg-buildpackage.sh: support debsign
- * scripts/update-alternatives.8: fix wrong order of parameters
- in ACTION section
- * Updated Polish translation
-
-Sun Dec 26 01:31:08 CET 1999 Wichert Akkerman <wakkerma@debian.org>
-
- * Update copyright for Swedish translation to SPI instead of Debian
-
-Sat Dec 25 04:04:48 CET 1999 Wichert Akkerman <wakkerma@debian.org>
-
- * dselect/pkgtop.cc: use waddnstr instead of waddch so we don't strip
- the 8th bit of characters
- * Replace `Debian Linux' with `Debian GNU/Linux' in some more places
- * Update Spanish translation
- * main/enquire.c: always use a minimum width of 80 in list1package
- * debian/rules: install dpkg-safefilelist
-
-Sat Dec 25 02:50:31 CET 1999 Wichert Akkerman <wakkerma@debian.org>
-
- * Oops, forgot to add scripts/dpkg-safefilelist.{1,pl}
- * debian/control: remove double empty line
- * dpkg-deb/main.c: Fix help-message
-
-Fri Dec 24 17:34:30 CET 1999 Wichert Akkerman <wakkerma@debian.org>
-
- * version-nr: update to 1.6.5
- * doc/Makefile.in: install THANKS
- * TODO: remove items that have been done
- * lib/showcright.c: exit(0) after showing the copyright since
- we don't exec cat anymore
- * Patch from David Huggins-Daines <dhd@eradicator.org>:
- + main/configure.c: add NULL to execlp() parameters; this fixes the random
- segfaults when showing the conffile-diff
-
-Fri Dec 24 15:35:29 CET 1999 Wichert Akkerman <wakkerma@debian.org>
-
- * debian/control: add Build-Depends
- * THANKS: new file which lists everyone who contributed to the code
- * Change `Debian Linux' to `Debian GNU/Linux' in a couple of manpages
+Tue Jan 11 18:32:52 CET 2000 Wichert Akkerman <wakkerma@d\81Þ\ 5\0\82Þ\ 5\0\83Þ\ 5\0\84Þ\ 5\0\85Þ\ 5\0\86Þ\ 5\0\87Þ\ 5\0\88Þ\ 5\0\89Þ\ 5\0\8aÞ\ 5\0\8bÞ\ 5\0\8cÞ\ 5\0\8dÞ\ 5\0\8eÞ\ 5\0\8fÞ\ 5\0\90Þ\ 5\0\91Þ\ 5\0\92Þ\ 5\0\93Þ\ 5\0\94Þ\ 5\0\95Þ\ 5\0\96Þ\ 5\0\97Þ\ 5\0\98Þ\ 5\0\99Þ\ 5\0\9aÞ\ 5\0\9bÞ\ 5\0\9cÞ\ 5\0\9dÞ\ 5\0\9eÞ\ 5\0\9fÞ\ 5\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0of manpages
* main/enquiry.c: modify list1package to use the full width of the tty
* main/main.c: fix wrong call to fputs
* Merge patches from Adam Heath:
*
* Changes by Ben Collins <bcollins@debian.org>, added --chuid, --background
* and --make-pidfile options, placed in public domain aswell.
+ *
+ * Port to OpenBSD by Sontri Tomo Huynh <huynh.29@osu.edu>
+ * and Andreas Schuldei <andreas@schuldei.org>
*/
#include "config.h"
#if defined(linux)
-#define OSLinux
+# define OSLinux
#elif defined(__GNU__)
-#define OSHURD
+# define OSHURD
#elif defined(__sparc__)
-#define OSsunos
+# define OSsunos
+#elif defined(OPENBSD)
+# define OSOpenBSD
#else
-#error Unknown architecture - cannot build start-stop-daemon
+# error Unknown architecture - cannot build start-stop-daemon
#endif
-#ifdef OSHURD
-#include <hurd.h>
-#include <ps.h>
+#if defined(OSHURD)
+# include <hurd.h>
+# include <ps.h>
+#endif
+
+#if defined(OSOpenBSD)
+#include <sys/param.h>
+#include <sys/user.h>
+#include <sys/proc.h>
+#include <sys/stat.h>
+#include <sys/sysctl.h>
+#include <sys/types.h>
+
+#include <err.h>
+#include <kvm.h>
+#include <limits.h>
#endif
#include <errno.h>
#include <fcntl.h>
#ifdef HAVE_ERROR_H
-#include <error.h>
+# include <error.h>
#endif
#ifdef HURD_IHASH_H
-#include <hurd/ihash.h>
+ #include <hurd/ihash.h>
#endif
static int testmode = 0;
};
const struct sigpair siglist[] = {
- { "ABRT", SIGABRT },
- { "ALRM", SIGALRM },
- { "FPE", SIGFPE },
- { "HUP", SIGHUP },
- { "ILL", SIGILL },
- { "INT", SIGINT },
- { "KILL", SIGKILL },
- { "PIPE", SIGPIPE },
- { "QUIT", SIGQUIT },
- { "SEGV", SIGSEGV },
- { "TERM", SIGTERM },
- { "USR1", SIGUSR1 },
- { "USR2", SIGUSR2 },
- { "CHLD", SIGCHLD },
- { "CONT", SIGCONT },
- { "STOP", SIGSTOP },
- { "TSTP", SIGTSTP },
- { "TTIN", SIGTTIN },
- { "TTOU", SIGTTOU }
+ { "ABRT", SIGABRT },
+ { "ALRM", SIGALRM },
+ { "FPE", SIGFPE },
+ { "HUP", SIGHUP },
+ { "ILL", SIGILL },
+ { "INT", SIGINT },
+ { "KILL", SIGKILL },
+ { "PIPE", SIGPIPE },
+ { "QUIT", SIGQUIT },
+ { "SEGV", SIGSEGV },
+ { "TERM", SIGTERM },
+ { "USR1", SIGUSR1 },
+ { "USR2", SIGUSR2 },
+ { "CHLD", SIGCHLD },
+ { "CONT", SIGCONT },
+ { "STOP", SIGSTOP },
+ { "TSTP", SIGTSTP },
+ { "TTIN", SIGTTIN },
+ { "TTOU", SIGTTOU }
};
static int parse_signal (const char *signal_str, int *signal_nr)
}
#endif /* OSLinux */
+
#if defined(OSHURD)
static int
pid_is_user(int pid, int uid)
{
- struct stat sb;
- char buf[32];
- struct proc_stat *pstat;
-
- sprintf(buf, "/proc/%d", pid);
- if (stat(buf, &sb) != 0)
- return 0;
- return (sb.st_uid == uid);
- pstat = proc_stat_list_pid_proc_stat (procset, pid);
- if (pstat == NULL)
- fatal ("Error getting process information: NULL proc_stat struct");
- proc_stat_set_flags (pstat, PSTAT_PID | PSTAT_OWNER_UID);
- return (pstat->owner_uid == uid);
+ struct stat sb;
+ char buf[32];
+ struct proc_stat *pstat;
+
+ sprintf(buf, "/proc/%d", pid);
+ if (stat(buf, &sb) != 0)
+ return 0;
+ return (sb.st_uid == uid);
+ pstat = proc_stat_list_pid_proc_stat (procset, pid);
+ if (pstat == NULL)
+ fatal ("Error getting process information: NULL proc_stat struct");
+ proc_stat_set_flags (pstat, PSTAT_PID | PSTAT_OWNER_UID);
+ return (pstat->owner_uid == uid);
}
static int
pid_is_cmd(int pid, const char *name)
{
- struct proc_stat *pstat;
- pstat = proc_stat_list_pid_proc_stat (procset, pid);
- if (pstat == NULL)
- fatal ("Error getting process information: NULL proc_stat struct");
- proc_stat_set_flags (pstat, PSTAT_PID | PSTAT_ARGS);
- return (!strcmp (name, pstat->args));
+ struct proc_stat *pstat;
+ pstat = proc_stat_list_pid_proc_stat (procset, pid);
+ if (pstat == NULL)
+ fatal ("Error getting process information: NULL proc_stat struct");
+ proc_stat_set_flags (pstat, PSTAT_PID | PSTAT_ARGS);
+ return (!strcmp (name, pstat->args));
}
#endif /* OSHURD */
error_t
check_all (void *ptr)
{
- struct proc_stat *pstat = ptr;
+ struct proc_stat *pstat = ptr;
- check (pstat->pid);
- return (0);
+ check (pstat->pid);
+ return (0);
}
static void
do_procinit(void)
{
- struct ps_context *context;
- error_t err;
+ struct ps_context *context;
+ error_t err;
- err = ps_context_create (getproc (), &context);
- if (err)
- error (1, err, "ps_context_create");
+ err = ps_context_create (getproc (), &context);
+ if (err)
+ error (1, err, "ps_context_create");
- err = proc_stat_list_create (context, &procset);
- if (err)
- error (1, err, "proc_stat_list_create");
+ err = proc_stat_list_create (context, &procset);
+ if (err)
+ error (1, err, "proc_stat_list_create");
- err = proc_stat_list_add_all (procset, 0, 0);
- if (err)
- error (1, err, "proc_stat_list_add_all");
+ err = proc_stat_list_add_all (procset, 0, 0);
+ if (err)
+ error (1, err, "proc_stat_list_add_all");
- /* Check all pids */
- ihash_iterate (context->procs, check_all);
+ /* Check all pids */
+ ihash_iterate (context->procs, check_all);
}
#endif /* OSHURD */
+
+#if defined(OSOpenBSD)
+int
+pid_is_cmd(int pid, const char *name)
+{
+ kvm_t *kd;
+ int nentries, argv_len=0;
+ struct kinfo_proc *kp;
+ char errbuf[_POSIX2_LINE_MAX], buf[_POSIX2_LINE_MAX];
+ char **pid_argv_p;
+ char *start_argv_0_p, *end_argv_0_p;
+
+
+ kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, errbuf);
+ if (kd == 0)
+ errx(1, "%s", errbuf);
+ if ((kp = kvm_getprocs(kd, KERN_PROC_PID, pid, &nentries)) == 0)
+ errx(1, "%s", kvm_geterr(kd));
+ if ( ( pid_argv_p = kvm_getargv(kd, kp, argv_len)) == 0)
+ errx(1, "%s", kvm_geterr(kd));
+
+ start_argv_0_p = *pid_argv_p;
+ /* find and compare string */
+
+ /* find end of argv[0] then copy and cut of str there. */
+ if ( (end_argv_0_p = strchr(*pid_argv_p, ' ')) == 0 )
+ /* There seems to be no space, so we have the command
+ * allready in its desired form. */
+ start_argv_0_p = *pid_argv_p;
+ else {
+ /* Tests indicate that this never happens, since
+ * kvm_getargv itselfe cuts of tailing stuff. This is
+ * not what the manpage says, however. */
+ strncpy(buf, *pid_argv_p, (end_argv_0_p - start_argv_0_p));
+ buf[(end_argv_0_p - start_argv_0_p) + 1] = '\0';
+ start_argv_0_p = buf;
+ }
+
+ if (strlen(name) != strlen(start_argv_0_p))
+ return 0;
+ return (strcmp(name, start_argv_0_p) == 0) ? 1 : 0;
+}
+
+int
+pid_is_user(int pid, int uid)
+{
+ kvm_t *kd;
+ int nentries; /* Value not used */
+ uid_t proc_uid;
+ struct kinfo_proc *kp;
+ char errbuf[_POSIX2_LINE_MAX];
+
+
+ kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, errbuf);
+ if (kd == 0)
+ errx(1, "%s", errbuf);
+ if ((kp = kvm_getprocs(kd, KERN_PROC_PID, pid, &nentries)) == 0)
+ errx(1, "%s", kvm_geterr(kd));
+ if ( kp->kp_proc.p_cred )
+ kvm_read(kd, (u_long)&(kp->kp_proc.p_cred->p_ruid),
+ &proc_uid, sizeof(uid_t));
+ else
+ return 0;
+ return (proc_uid == (uid_t)uid);
+}
+
+int
+pid_is_exec(int pid, const char *name)
+{
+ kvm_t *kd;
+ int nentries;
+ struct kinfo_proc *kp;
+ char errbuf[_POSIX2_LINE_MAX], *pidexec;
+
+ kd = kvm_openfiles(NULL, NULL, NULL, O_RDONLY, errbuf);
+ if (kd == 0)
+ errx(1, "%s", errbuf);
+ if ((kp = kvm_getprocs(kd, KERN_PROC_PID, pid, &nentries)) == 0)
+ errx(1, "%s", kvm_geterr(kd));
+ pidexec = (&kp->kp_proc)->p_comm;
+ if (strlen(name) != strlen(pidexec))
+ return 0;
+ return (strcmp(name, pidexec) == 0) ? 1 : 0;
+}
+
+
+static void
+do_procinit(void)
+{
+ /* Nothing to do */
+}
+
+#endif /* OSOpenBSD */
+
+
/* return 1 on failure */
static int
do_stop(void)
close(fd);
chdir("/");
umask(022); /* set a default for dumb programs */
- setpgrp(); /* set the process group */
+ setpgid(0,0); /* set the process group */
fd=open("/dev/null", O_RDWR); /* stdin */
dup(fd); /* stdout */
dup(fd); /* stderr */