aboutsummaryrefslogtreecommitdiffstats
path: root/ChangeLog.txt
blob: e0c66fc3a87819d83e760aa809ea2af15ca7cbe0 (plain)
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
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
2018-09-20:
	* (seebs) coerce inodes to signed int64_t range when shoving
	  them into sqlite.
	* (seebs) add another /*fallthrough*/ comment to make gcc7 happy.
	* (seebs) also make sure inodes are handled as 64-bit, not
	  32-bit, which probably matters more. Thanks to <Jack.Fewx@dell.com>
	  for catching this.

2018-04-13:
	* (seebs) Reduce spamminess of path mismatches.
	  Don't log path mismatches with multiple links unless you've
	  requested path+verbose debugging. Also allow pseudo_debug
	  to take a 0 to indicate "always debug", because we want that
	  message unconditionally, and I don't want near-identical
	  calls to diag() and debug().
	* (seebs) Fix a lurking stray slash that could happen while
	  resolving absolute symlinks.
	* (seebs) fix mishandled flags for symlink following.

2018-04-02:
	* (seebs) Change default copyright notice in guts to
	  say "Peter Seebach" rather than "Wind River" as I haven't
	  worked there in over a year.

2018-03-31:
	* (seebs) keep pseudo_fix_path from changing errno, because
	  *some* people think they should check errno to find out
	  whether an error occurred, even if no call has returned
	  a status indicating an error, and this is completely wrong
	  but we can't fix them all.
	* (seebs) check for wrapper initialization in syscall wrapper,
	  because what if it was the *first* call someone made. (Thanks
	  to Joshua Watt <jpewhacker@gmail.com> for diagnosing this
	  before I got a chance.)

2018-03-30:
	* (seebs) fix path stuff more thoroughly.
	* (seebs) Merge suggested README change from Richard Tollerton
	  <rich.tollerton@ni.com> pointing to oe-core list.
	* (seebs) Merge suggested setuid/etc bit change from
	  Richard Tollerton, and associated test case.

2018-03-29:
	* (seebs) wrap syscall, and if SYS_renameat2 exists, try to
	  reject it with ENOSYS, because coreutils started using a
	  new syscall. An actual renameat2 wrapper will be a major
	  effort ("changing the pseudo_ipc data structure") and is
	  pointless when glibc hasn't got a wrapper so we have no
	  viable test cases.

2018-03-06:
	* (seebs) Update path handling a bit to correctly fail if a path
	  tries to have a slash after a plain file name, even in cases
	  like "foo/.", which were previously ignored (or in the case of
	  "..", resolved as though it had been a directory).

2018-03-01:
	* (seebs) If you get a CREAT for an existing file, and it matches
	  both path and inode, don't delete the entry because the inode
	  matched and then not create it because the path used to match
	  before you delete it.

2018-02-26:
	* (seebs) implement mkstemps, mkostemp, and mkostemps. Actually,
	  move implementation all to mkostemps, then implement the others
	  in terms of it.

2018-02-19:
	* (seebs) fix using index of request rather than request's value

2018-02-16:
	* (seebs) allow closing client #0.

2018-02-15:
	* (seebs) O_TMPFILE is actually some other flag AND O_DIRECTORYy,
	  so a test for (flags & O_TMPFILE) does not actually test that
	  O_TMPFILE is set.

2018-01-20:
	* (seebs) merge patch from <joshua.g.lock@linux.intel.com> to fix
	  open/openat flags.

2018-01-16:
	* (seebs) rework the LINKAT case significantly but now
	  it's actually probably right.
	* (<zboszor@pr.hu>) handle extremely long group names
	  in getgrnam and similar functions.
	* (seebs) drop the diagnostic for a missing "real" function
	  as it turns out to be counterproductive at best.
	* (seebs) merge epoll support from <alexander.kanavin@linux.intel.com>
	* (seebs) add wrapper for statvfs (based on patch from
	  <dan.dedrick@gmail.com>)
	* (seebs) Call this 1.9.0.
	* (seebs) Experimental-ish: Require a response even for FASTOP
	  just to confirm delivery of message/server availability.

2017-12-22:
	* (seebs) handle the pathological case of LINKAT with
	  AT_SYMLINK_FOLLOW on /proc/self/fd/N.

2017-12-18:
	* (seebs) Add a list of clients as a handler for SIGUSR2. (Useful
	  for debugging, maybe.)

2017-04-13:
	* (seebs) don't unset LD_PRELOAD or the like, because if you
	  do that, bash can segfault because it "knows" how many
	  fields are in environ.

2017-02-24:
	* (seebs) import posix_acl_default fix from Anton Gerasimov
	  <anton@advancedtelematic.com>
2017-02-03:
	* (gportay) contributed fix to Makefile (fix binaries rebuild).

2017-02-01:
	* (seebs) handle xattr deletion slightly more carefully.
	* (seebs) tag this as 1.8.2

2016-12-12:
	* (seebs) contributed fix to makewrappers (fix space/tab issues)
	* (seebs) contributed fixes for Python 3 print support
	* (seebs) contributed fixes for Python 3 support
	* All of these from: Gaƫl PORTAY <gael.portay@savoirfairelinux.com>
	* (seebs) import fix from Rabin Vincent for test case
	* (seebs) import fix from Rabin Vincent for pthread mutexes
	* (seebs) import fix from George McCollister for capset.
	* (seebs) import fix from Igor Gnatenko for man page sections.

2016-11-23:
	* (seebs) actually wait on server shutdown for pseudo -S [cmd]

2016-11-04:
	* (seebs) clarify usage message on missing --prefix

2016-10-31:
	* (seebs) drop silly if

2016-10-29:
	* (seebs) handle x32

2016-10-13:
	* (seebs) handle commas in CFLAGS

2016-09-30:
	* (seebs) Fix rename at, matching fix from ee00f63d for rename. Bug
	  and fix provided by Anton Gerasimov <anton@advancedtelematic.com>.

2016-09-28:
	* (seebs) Send errors to log when daemonizing, but do that a lot
	  sooner to prevent startup messages which can show up spuriously
	  with multiple clients.
	* (seebs) return file descriptor from pseudo_logfile, so we set
	  pseudo_util_debug_fd to the right value instead of to stdin.
	  Nice bug.

2016-09-22:
	* (seebs) don't send SIGUSR1 to init.

2016-07-29:
	* (seebs) Don't clear bindings for a statement with no bindings.

2016-07-28:
	* (seebs) Fix performance issue on deletion with xattr changes.

2016-07-08:
	* (RP) release 1.8.1
	* (joshuagl) Fix log table creation issue
	* (joshuagl) Fix sqlite usage pseudo segfault
	* (joshuagl) Fix directory permissions for build

2016-05-18:
	* (seebs) move syncfs to a subport so it can be enabled only on
	  systems which have it.
	* (seebs) make pseudo_foo() wrappers for mknod/mknodat, similar to
	  the ones for stat/fstat, because Linux doesn't actually have mknod
	  (or stat) in glibc.
	* Post diagnostic for missing real_foo() functions even when dlerror
	  doesn't give a specific error.
	* All of this because ld.so started giving dlerror results for
	  missing functions with RTLD_NEXT. It turns out we were failing to
	  notice some missing functions. None of them actually mattered, but
	  it's worth fixing.

2016-05-12:
	* (seebs) merge kergoth's fix to respect $(LDFLAGS) from environment.
	* (seebs) call this 1.8.0

2016-03-25:
	* (seebs) handle deletion of xattrs, renames, and so on. Eww.

2016-03-24:
	* (seebs) make xattr db use {dev, ino}. this includes an in-place
	  migration of the tables for existing databases.

2016-03-22:
	* (seebs) extract variable name from message for remove_xattr so it
	  actually works.

2016-03-11:
	* (seebs) set sane umask in server, just in case.

2016-03-10:
	* (seebs) make bind work (so userspace NFS server can handle pseudo)

2016-03-09:
	* (seebs) workaround for bash redefining getenv/unsetenv/etc.

2016-03-02:
	* (seebs) more server launch rework and updates
	* (seebs) make dup/dup2 less verbose in client
	* (seebs) cleanup client spawning code a bit

2016-03-01:
	* (seebs) server launch reworking

2016-02-24:
	* (seebs) event logger cleanup, improved diagnostics for client
	  spawning, server exit cleanup.

2016-02-23:
	* (seebs) event logger initial implementation

2016-02-16:
	* (seebs) don't try to force pseudo's debug fd to fd 2 in clients.
	  Also, don't allow server to end up with a client on fd 2, whether
	  or not fd 2 is already in use.

2016-02-09:
        * (seebs) 1.7.5 release

2016-02-08:
        * (seebs) require -S to shutdown server when running a command.
        * (seebs) improve logic for server shutdowns, increase short timeout
        * (seebs) rework client server-spawning logic significantly
        * (seebs) make abort messages make it out, display message on abort

2016-02-05:
	* (seebs) don't abort search for server on first try.
        * (seebs) new clients cancel a shutdown request.
        * (seebs) sort xattrs when returning list.
        * (seebs) add retry interval, rather than instant retries.

2016-01-22:
        * (seebs) Mask in S_IFREG when mknod called with no S_IFMT bits.

2015-09-22:
	* (seebs) Fix modes after fopen/fopen64.

2015-09-04:
	* (seebs) add return value printing to wrapper debug!
	* (seebs) make mkdirat() restore errno, also don't pass
	  AT_SYMLINK_NOFOLLOW to fchmodat() since it is ignored, and
	  we know that if the thing exists at all, it is a directory
	  and thus AT_SYMLINK_NOFOLLOW would be irrelevant anyway.
	* (seebs) and 1.7.3, of course.

2015-09-03:
	* (seebs) Use original mode, not 0600, for the chmods used to
	  ensure that an 0700 umask didn't prevent writing.
	* (seebs) remove the comment saying that 0700 umasks were expected
	  to break things.
	* (seebs) and call this 1.7.2.

2015-09-02:
	* (seebs) call this 1.7.1, since that seems to be all the bugs
	  I can immediately find.

2015-09-01:
	* (seebs) use PSEUDO_STATBUF and base_lstat in path resolution, because
	  plain lstat can fail on XFS if an inode number is out of the 32-bit
	  range.
	* (seebs) if no pointer was provided to realpath, provide allocated
	  dup.

2015-08-24:
        * (seebs) drop unused/unimplemented "picky_fchmodat", since I
          currently have no systems which implement it, and the implementation
          for NO_REAL_AT_FUNCTIONS was difficult to define.
        * (seebs) drop unused "doing_link" in fchownat, which I think predates
          the current database entirely.
        * (seebs) drop unused "old_trailing_slash".
	* (seebs) tag this as 1.7.0.

2015-08-22:
	* (seebs) Prevent files from getting created with real filesystem
	  mode 0, even with umask.
	* (seebs) xattrdb logic fixes.
	* (seebs) Debugging messages.

2015-08-21:
	* (seebs) don't put incorrect host UIDs in dummy entries in db.
	* (seebs) merge existing values for chown/chmod with xattrdb.

2015-08-20:
        * (seebs) don't send open/exec messages unless server is logging.

2015-08-19:
        * (seebs) Reduce alloc/free cycles in path computations.

2015-08-17:
	* (seebs) profiling improvements

2015-08-14:
	* (seebs) profiling cleanup, add profiler to gitignore
	* Start using 1.7.0 version for internal work.

2015-08-13:
	* (seebs) client profiling stuff (first pass)

2015-07-17:
	* (seebs) allow actually making fifos without randomly closing fd 0
	* 1.6.7

2015-07-16:
	* (seebs) don't truncate xattr attributes that end with a slash.
	* (seebs) allow actually making fifos
	* 1.6.6

2015-05-04:
	* (seebs) don't give spurious trailing slash diagnostics
	* 1.6.5

2015-01-22:
	* (seebs) work when --prefix doesn't exist yet
	* 1.6.4

2015-01-15:
	* (seebs) Rework PSEUDO_PASSWD path allocation for clarity,
	  I hope.
	* 1.6.3

2015-01-14:
	* (seebs) Merge pabigot's fix for a missing antimagic() in
	  etc_file code.
	* (seebs) Make configure reject a "prefix" of the current
	  directory. It fails in strange ways and is easy to detect.
	* (seebs) handle colon-separated lists in PSEUDO_PASSWD.
	  Derived in part from contribution from pabigot.
	* (seebs) change allocation order in password file locking.

2015-01-05:
	* (seebs) First try at handling trailing slashes in path names
	  correctly. (Which is to say, a trailing slash on a file name
	  which is not a directory name should yield ENOTDIR from a lot
	  of things.)

2014-10-03:
	* (seebs) in fact, suppress a lot of sanity checks entirely for
	  did_unlink.
	* (seebs) merge get_file_path functionality into find_file_dev,
	  since you never call find_file_dev unless you want to do that.
	* (seebs) If a file is in the database by inode but not path,
	  don't try to create a new link for it.
	* (seebs) when renaming, the link of the "old" file name should be
	  contingent on whether *it* was in the database, not whether
	  the *new* name was in the database. Whoops.
	* (seebs) 1.6.2

2014-10-02:
	* (seebs) use sqlite3_bind_int64 for inodes.
	* (seebs) suppress path mismatch warnings for did_unlink.

2014-07-18:
	* (seebs) Make "server already offline" message into a debugging
	  message (PDBGF_INVOKE).
	* (seebs) 1.6.1

2014-07-17:
	* (seebs) Restrict symbol version restrictions to x86-64 and i386
	  rather than x86-64 and any old thing. Fixes build problems on ARM.

2014-07-11:
	* (seebs) merge in symbol version restrictions (slightly tweaked)
	  for Linux.

2014-07-10:
	* (seebs) Don't pass -L/usr/lib* for sqlite, because that's probably
	  the default.
	* (seebs) include sys/xattr.h explicitly for Darwin, also fix things
	  up so we aren't relying on seeing a declaration for our dummy
	  wrapper for fgetgrent_r which doesn't exist here.
	* (seebs) fix typo in xattr message
	* (seebs) make xattr work on Darwin, too.

2014-06-13:
	* (seebs) don't follow symlinks for lutimes.
	* (seebs) Use sizeof instead of strlen to initialize static value.

2014-05-27:
	* (seebs) start noticing umask, mask it out from open or mkdir
	  calls rather than relying on underlying open/mkdir to do it.
	* (seebs) add a test for umask and filesystem-vs-db modes.

2014-05-16:
	* (seebs) fchmodat: don't drop flags, report failures, to improve
	  compatibility/consistency. Cache the knowledge that
	  AT_SYMLINK_NOFOLLOW gets ENOTSUP.
	* (seebs) mask out group/other write bits in real filesystem to
	  reduce risks when assembling a rootfs including world-writeable
	  directories.
	* (seebs) send a round-trip message to the server before exiting
	  if any messages have been sent, so the program won't exit before
	  the server processed those messages.
	* (pabigot) Don't memory-leak on checks for PSEUDO_UNLOAD, also
	  check the correct environment when spawning new things. (Contributed
	  by Peter A. Bigot).
	* (seebs) mask 022 back in too, when restoring a database mode.

2014-05-15:
	* (seebs) drop flags when calling fchmodat() to appease GNU tar.

2014-04-24:
	* (seebs) extended attribute support

2014-01-23:
	* (seebs) mknod wasn't calling mknodat.
	* (seebs) mkdirat wasn't recording the logical DB mode for directories

2014-01-22:
	* (seebs) notes on some Futures planning.
	* (seebs) Typo/formatting issue in man page.
	* (seebs) message formatting/clarity cleanup and typo fixes.
	* (seebs) First draft of passwd_fallback implementation.
	* (seebs) bump this all to 1.6.0.

2014-01-15:
	* (seebs) performance test/test case updates.

2013-06-20:
	* (seebs) refactor debugging code
	* (seebs) start using 1.5.2 numbering

2013-06-18:
	* (seebs) Fix bug in oldclone (reported by rich@noir.com).

2013-02-27:
	* (seebs) Oh, hey, what if I took out my debug messages?
	* (seebs) update docs a bit to reduce bitrot

2013-02-26:
	* (seebs) When built -DNDEBUG, completely drop pseudo_debug calls.
	* (seebs) Add PSEUDO_ALLOW_FSYNC to allow temporary re-enabling of
	  fsync to work around filesystem bugs.
	* (seebs) call that 1.5.1.

2013-02-17:
	* (seebs) Fix uninitialized variable in unlink, fix force-fsync for
	  Darwin (off64_t is not a distinct type there).

2013-02-16:
	* (seebs) Add wrapper setting which automatically returns a fixed
	  value from some wrappers. Add fixed-value wrappers for all the
	  *sync() functions. These are all contingent on --enable-force-async.

2013-02-15:
	* (seebs) Add support for in-memory DB. This, plus upcoming
	  fsync-related changes, are expected to be big enough to justify
	  calling this 1.5.

2013-02-13:
        * (seebs) calling link while chrooted could in some cases result
          in the root path not being prepended at all. One more try!
        * (seebs) 1.4.5.

2013-02-12:
        * (seebs) calling link while chrooted could in some cases result
          in the root path being double-appended.
        * (seebs) and tag 1.4.4 so that can get out as a clean update.

2013-01-31:
        * (seebs) tag 1.4.3 (to avoid any problems with the changes since
          1.4.2 and old tarballs)

2013-01-30:
        * (seebs) Subtle tweaks to avoid GLIBC_2.7 dependencies which
          can cause trouble trying to copy libpseudo.so to older hosts.
        * (seebs) add "with-sqlite-lib" to simplify cases where sqlite's
          libdir computation differs from what we otherwise want; for
          instance, with bitbake, we often end up wanting $lib = lib64,
          but $sqlite_lib = lib.

2012-12-13:
        * (seebs) tag 1.4.2.

2012-12-12:
        * (seebs) Remove extra tab from the path alloc code in
          makewrappers. (Which has no effect since I changed my mind about
          the implementation which would have made it show up.)
        * (seebs) linkat() implementation. as a side effect, clear up
          the documentation and behavior of link(2) to reflect host
          OS semantics: Linux will hardlink symlinks, Darwin will only
          hardlink their targets.
	* (seebs) make linkat() implementation compile/run on Darwin,
	  fix header bitrot for Mountain Lion.

2012-08-09:
	* (seebs) base_stat should be real_stat64, not stat64
	* (seebs) add stat64/lstat64/fstat64 wrappers to Linux (not
	  previously needed because the libc versions call stuff we
	  already wrap).

2012-08-02:
	* (seebs) fix some Darwin-specific bitrot for clang/llvm.
        * (seebs) Drop the _plain thing, convert unix/guts/* to use
          PSEUDO_STATBUF.
        * (seebs) Tag 1.4.1.

2012-07-27:
	* (seebs) Convert from .tgz to tar.bz2 since that's handier for
	  Yocto.

2012-07-24:
	* (seebs) Fix a couple of bitrots from the update.

2012-07-20:
	* (seebs) Add --cflags, deprecate --arch.
	* (seebs) tag 1.4 (since this should now work on arbitrary targets)

2012-06-28:
        * (seebs) Tag 1.3.1.

2012-06-27:
        * (seebs) Fix chroot coredump with long root path.

2012-04-30:
	* (seebs) Update README about new upstream.

2012-04-09:
	* (seebs) Improvements to rpath logic for sqlite, etc.
	* (seebs) Improvements to the logic for picking options
	  like -m32, -m64 (which is to say, on ARM:  Don't.)

2012-03-28:
	* (seebs) Cleanup unused variables, stray semicolons, add
	  comments to some unused functions which exist because the
	  wrapper generator makes them anyway.
	* (seebs) Make system() drop environment if PSEUDO_UNLOAD is
	  set.

2012-03-27:
	* (seebs) Merge in:
	* (mhatle) Improve configuration compatibility with OE-Core.
	* (seebs) Provide option to statically link libsqlite.
	* (seebs) 1.3 branch

2012-03-26:
	* (seebs) Add popen() call to set up environment.

2012-02-06:
	* (seebs) Merge O_LARGEFILE into flags, not mode (thanks to Lei
	  Liu at Wind River for the fix).

2012-02-02:
	* (seebs) stash dir name for DIR * from opendir using dirfd.
	* (seebs) add closedir.
	* (seebs) add initial pass at renameat()
	* (seebs) update makewrappers with smarter *dirfd handling.
	* (seebs) in base_path, don't try to strlen the result if
	  fd_path() returns NULL.

2011-11-02:
	* (seebs) Call this 1.2 because the UNLOAD change is moderately
	  significant, and so's the clone change.

2011-11-01:
	* (mhatle) Stop valgrind from reporting use of uninitialized
	  memory from pseudo_client:client_ping()

2011-10-26:
	* (mhatle) update clone wrapper to add an intermediate function
	  to avoid setting environment variables in the parent.

2011-10-20:
	* (mhatle) change from internal PSEUDO_RELOADED to external
	  PSEUDO_UNLOAD environment variable.  Enable external programs
	  to have a safe and reliable way to unload pseudo on the next
	  exec*.  PSEUDO_UNLOAD also will disable pseudo if we're in a
	  fork/clone situation in the same way PSEUDO_DISABLED=1 would.

2011-07-19:
	* (seebs) initialize a variable in that "realpath" code.

2011-06-08:
	* (seebs) Get the modern realpath from glibc instead of the old
	  one inexplicably proferred by RTLD_NEXT.  Fixes realpath(path, NULL)
	  when PSEUDO_DISABLED=1.

2011-06-06:
	* (seebs) revise system() handler substantially.  It now
	  pollutes the environment but works.
	* (seebs) Call it "1.1.1" so the nice folks doing Yocto
	  can have an official branch and not need to use git.
	* (seebs) add "tarball" make target.

2011-06-02:
	* (seebs) intercept system() so the pseudo environment is
	  properly set for it.
	* (seebs) call this "1.1" since the cumulative result of all
	  of these changes is pretty big.

2011-05-31:
	* (seebs) Don't mask in 0100 to filesystem modes for things which
	  are not actually directories, because this breaks the special
	  logic in euidaccess for X_OK.

2011-05-25:
	* (seebs) fix for ulckpwdf()

2011-04-21:
	* (seebs) don't use strerror in wrappers, because it can
	  lead to malloc deadlocks if part of setting up a malloc
	  operation falls into strerror which uses locale... Curse
	  you, Fedora 13.  You and your perfectly reasonable and
	  standards-conforming behavior which happened to inconvenience
	  me.

2011-04-16:
	* (seebs) remove duplicate definition of real_clone() from
	  the oldclone port.

2011-04-13:
	* (seebs) base_path of an empty string should be an empty string,
	  not $pwd.

2011-04-04:
	* (seebs) whitespace cleanup for Python code

2011-04-01:
	* (seebs) update README

2011-03-25:
	* (seebs) don't try to search path when you don't have one
	* (seebs) merge in ports branch
	* (seebs) fix permissions on subports/preports
	* (seebs) try to force debug fd to 2

2011-03-24:
	* (seebs) more work on OS X port.
	* (seebs) include errno in the verbose debug output
	* (seebs) fix darwin fcntl.
	* (seebs) fix *xattr for darwin (they take more arguments)

2011-02-18:
	* (seebs) moving things to Unix port, cleanup for Darwin

2011-02-14:
	* (seebs) first pass on splitting out ports
	* (seebs) various cleanup
 
2011-02-10:
	* (seebs) pseudo_client_shutdown(), and the pseudo server, have to
	  be smart enough to make the local state directory in case the
	  pseudo binary is invoked directly by a user before being spawned
	  by the client.

2011-02-09:
	* (seebs) the long-awaited cleanup of the database initialization
	  code.  it's not really beautiful but it's quite a bit better.

2011-02-08:
	* (seebs) Get full paths for exec*()

2011-01-24:
	* (mhatle) Revert last result cache and related commits.
	  caching proved to be unreliable.

2011-01-14:
	* (seebs) Automatically create prefix/state directories.
	* (mhatle) Avoid caching OP_EXEC calls

2011-01-13:
	* (seebs) Subtle cache fixup.

2010-12-17:
	* (mhatle) Disabled additional early setup if pseudo is disabled

2010-12-16:
	* (mhatle) change the journal from PERSIST to OFF
	* (seebs) update docs now that fakeroot and password support are in,
	  this being long overdue
	* (seebs) fix parallel build issue introduced with maketables

2010-12-15:
	* (mhatle) add sqlite call profiling, enable with NPROFILE
	* (mhatle) as a result of profiling, optimize inode search
	* (mhatle) rearrange the pseudo_op file data operations to reduce
		   the number of selects.
	* (mhatle) add the ability to cache the last select result
	* (mhatle) change the indexing in pseudo_db.c

2010-12-14:
	* (mhatle) restructure wrapfuncs.c

2010-12-09:
	* (mhatle) Add doc/program_flow to attempt to explain startup/running
	* (mhatle) guts/* minor cleanup
	* (mhatle) Reorganize into a new constructor for libpseudo ONLY
		   pseudo main() now manually calls the util init
		   new / revised init for client, wrappers and utils
	* (mhatle) Add central "reinit" function
	* (mhatle) Add manul execv* functions
	* (mhatle) rename pseudo_populate_wrappers to pseudo_check_wrappers

2010-12-08:
	* (mhatle) Add guts/clone.c to cleanup the clone support
	* (mhatle) guts/clone.c only run setupenv and reinit when NOT PSEUDO_RELOADED
	* (mhatle) guts/execve.c whitespace fixe
	* (mhatle) guts/fork.c similar to guts/clone.c change
	* (mhatle) pseudo_client.c add reinit function
	* (mhatle) pseudo_client.c revise client reset, include code from pseudo_wrappers.c
	* (mhatle) pseudo_server.c move the pid writing to the parent
	* (mhatle) pseudo_wrappers.c clone cleanup and populate cleanup

2010-12-07:
	* (seebs) whitespace fixes
	* (seebs) improve fork and PSEUDO_DISABLED
	* (seebs) add support for clone(2)
	* (mhatle) rework/improve clone(2) support
	* (mhatle) add test code for PSEUDO_DISABLED

2010-12-02:
	* (seebs) rework of fork/exec, add PSEUDO_DISABLED

2010-11-30:
	* (seebs) move *_t types to a separate file.
	* (seebs) remove unused tables from pseudo_db.c
	* (seebs) cleanup .gitignore

2010-11-17:
	* (seebs) add "Futures.txt" notes about future development plans
	* (seebs) split some of the templating code out of makewrappers

2010-11-16:
	* (seebs) database move functionality (first pass)

2010-10-25:
	* (seebs) various makewrappers cleanups (pylint, mostly)

2010-10-12:
	* (seebs) add missing copyright to Python makewrappers.
	* (seebs) detab makewrappers

2010-10-11:
	* (seebs) do the other *xattr() wrappers.
	* (seebs) Replace makewrappers with Python implementation and some
	  template files.

2010-10-06:
	* (mhatle) Add the fsetxattr wrapper to return ENOTSUP
          (note: workaround gnu coreutils 'cp')

2010-09-16:
	* (seebs) change exec*() to use file, rather than path or filename,
	  also add OP_EXEC where it was missing.

2010-09-15:
	* (seebs) allow setting default RPATH entry distinct from sqlite3
	  directory.

2010-09-08:
	* (seebs) handle mkfifo without guaranteeing an EINVAL response.

2010-09-02:
	* (seebs) fix errno for getcwd() with insufficient size
	* (seebs) Add an RPATH entry to the pseudo binary to find the sqlite3
	  library.

2010-09-01:
	* (seebs) add missing casts to even more printf arguments

2010-08-31:
	* (seebs) add missing casts to printf arguments, after being warned
	  about them a mere twenty or thirty thousand times.

2010-08-27:
	* (seebs) fix a bug caused by memcmp with wrong length
	* (seebs) stop hand-coding lengths of memcmp (torek was right...)

2010-08-26:
	* (seebs) make offsets.c slightly less useless
	* (seebs) don't overwrite LD_LIBRARY_PATH values that include us

2010-08-25:
	* (seebs) fix the signal mask restore

2010-08-24:
	* (seebs) try to restore signal mask before calling exec()
	* (seebs) move errno restoration after code which could set errno

2010-08-19:
	* (seebs) handle insane edge case involving regcomp/regexec

2010-08-17:
	* (seebs) create speculative-deletion logic
	* (seebs) remove crackpot theories about cross-device renames

2010-08-16:
	* (rp) Fix ld_preload/ld_library_path mixup.
	* (seebs) Handle failed allocations.
	* (seebs) Fix logic for dropping empty LD_PRELOAD.

2010-08-12:
	* (seebs) Fix install of libpseudo so the plain library is created
		when using $(SUFFIX), this is needed so pseudo daemons don't
		need to know $(SUFFIX) so you can use prebuilts.
	* (seebs) Remove spurious "const" from modifiable table.

2010-08-11:
	* (seebs) document the new variables.

2010-08-10:
	* (mhatle) add execl, execle, execlp, execv, and execvp wrappers
	* (seebs) handle ... for execl, etc.
	* (mhatle) add a local cache of variables, instead of using environ
	* (mhatle) rewrite pseudo_setupenv, pseudo_dropenv routines
		we now support running "/usr/bin/env -i env" in pseudo!

2010-08-06:
	* (mhatle) Fix an exec program with an empty environment

2010-08-03:
	* (mhatle) Fix parallel build problem
	* (mhatle) allow both environment CFLAGS and internals CFLAGS
	* (mhatle) add PSEUDO_BINDIR, PSEUDO_LIBDIR, PSEUDO_LOCALSTATEDIR
	  to allow specific overrides above and beyond PSEUDO_PREFIX

2010-07-30:
    * (kscherer) added .gitignore file
    * (kscherer) added sqlite version check to configure script
    * (kscherer) added basic test harness
    * (kscherer) fixed bug that when moving a directory the contents
       of the dir were removed from the db

2010-06-29:
	* (seebs) handle the other half of the suffix case -- when
	  libpseudo is in LD_PRELOAD under another name.
	* (seebs) remove a couple of debugging messages.

2010-06-28: 0.3
	* (seebs) back out PSEUDO_SUFFIX -- it causes problem when
	  rebuilding the library but not the server, but this is
	  a permissible use case.

2010-06-21:
	* (seebs) add mkstemp64

2010-06-02:
	* (seebs) add PSEUDO_NOSYMLINKEXP feature and documentation.

2010-04-30:
	* (seebs) rework pdb_history
	* (seebs) small cleanups and bulletproofing.
	* (seebs) fix up PSEUDO_DEBUG_FILE, use it for server as well.

2010-04-27:
	* (seebs) fix -P in pseudolog
	* (seebs) document PSEUDO_DEBUG_FILE

2010-04-26:
	* (seebs) many bug fixes and updates
	* (seebs) allow deleting entries in pseudolog
	* (seebs) correct race conditions and related bugs

2010-04-20:
	* (seebs) add quick sanity-check option for pseudo
	* (seebs) report on rows deleted
	* (seebs) unlink after removing db entry to reduce race conditions

2010-04-19:
	* (seebs) fix crash if xstat() or similar routine called with null path
	* (seebs) fix list of client processes still running
	* (seebs) fix pathname mismatches introduced by chroot() support

2010-04-16:
	* (seebs) add tracking of program names
	* (seebs) track message types
	* (seebs) small bug fixes and improvements galore

2010-04-06:
	* (seebs) implement various passwd-related utilities, various
	  bugfixes.

2010-03-25:
	* (seebs) fix return values.

2010-03-24:
	* (seebs) add chroot syscall
	* (seebs) add chroot handling to path canonicalization
	* (seebs) add many calls just to get path fixups
	* (seebs) handle virtualizing rootness of absolute symlinks

2010-03-24:
	* (seebs) regenerate wrappers when makewrappers is changed.
	* (seebs) begin prep for chroot
	* (seebs) standardize path expansion
	* (seebs) extend makewrappers to handle function pointer args

2010-03-17:
	* (seebs) fixup help options
	* (seebs) use strerror() in a couple more places
	* (seebs) mention ^ specification in pseudolog -h output.

2010-03-16:
	* (seebs) Fix missing error checking noted by comp.lang.c reader.

2010-03-16: 0.2
	* first public release

(There's no changelog before that, sorry.)