Compare commits

...

1246 Commits

Author SHA1 Message Date
Jim Meyering
7f490dad0e . 1997-06-30 03:53:28 +00:00
Jim Meyering
3e81211212 . 1997-06-30 01:58:23 +00:00
Jim Meyering
3f0b15ac80 *** empty log message *** 1997-06-29 22:26:54 +00:00
Jim Meyering
41faa55aed (base_name_strip_trailing_slashes): Remove. 1997-06-29 22:26:18 +00:00
Jim Meyering
04c0cd59a5 (base_name_strip_trailing_slashes): new function. 1997-06-29 22:25:54 +00:00
Jim Meyering
6ad0d51107 (copy): Add FIXME comment. 1997-06-29 22:24:26 +00:00
Jim Meyering
bc8c5033e3 *** empty log message *** 1997-06-29 22:21:51 +00:00
Jim Meyering
dc404c4107 (copy_reg): New parameter, SOURCE_STATS.
(do_move): Update caller.
(movefile): Take new boolean parameter, DEST_IS_DIR,
to save a stat per moved file when the destination is a directory.
(main): Call movefile with additional argument.
(strip_trailing_slashes_2): New function.
(movefile): Remove trailing slashes from dest.  Otherwise, stat ("b/")
fails with ENOTDIR on systems including Linux w/libc 2.0.30.
Reproduce with `rm -rf a b; mkdir a; touch b; ./mv a b/'.
(do_move): Fix misleading comment.
1997-06-29 22:21:42 +00:00
Jim Meyering
e44678aac2 *** empty log message *** 1997-06-29 21:24:26 +00:00
Jim Meyering
42a63be148 *** empty log message *** 1997-06-29 21:13:33 +00:00
Jim Meyering
1226259896 Remove _sys_putenv cruft and just rename the function itself. 1997-06-29 21:05:05 +00:00
Jim Meyering
cabc10b909 *** empty log message *** 1997-06-29 20:26:38 +00:00
Jim Meyering
90e9fd9c77 . 1997-06-29 20:24:27 +00:00
Jim Meyering
0935e2ce3f *** empty log message *** 1997-06-29 20:21:38 +00:00
Jim Meyering
611cf8e97b *** empty log message *** 1997-06-29 20:19:45 +00:00
Jim Meyering
3d9239c750 fix it right 1997-06-29 20:18:58 +00:00
Jim Meyering
551c02f7b6 Define-away putenv only if it's not already defined. 1997-06-29 20:12:52 +00:00
Jim Meyering
90c131fa21 . 1997-06-29 13:52:16 +00:00
Jim Meyering
a6b6c95b83 *** empty log message *** 1997-06-29 13:50:57 +00:00
Jim Meyering
25c1d1dccd *** empty log message *** 1997-06-29 13:49:53 +00:00
Jim Meyering
d9741142c8 . 1997-06-29 13:34:51 +00:00
Jim Meyering
a84d2bada4 Set and export LANGUAGE, LC_ALL, and LANG
so tests get english strings.  From Ulrich Drepper.
1997-06-29 12:19:43 +00:00
Jim Meyering
9654920c40 . 1997-06-29 03:27:24 +00:00
Jim Meyering
a13135d09e Move the OPENOPTS def from end to beginning of else clause so it's closer
to the one in the then clause.
1997-06-29 01:56:36 +00:00
Jim Meyering
f657d65570 update from automake-1.2 1997-06-25 17:05:56 +00:00
Jim Meyering
9bcfe15afe . 1997-06-25 17:01:22 +00:00
Jim Meyering
4378dcecdf . 1997-06-25 16:08:03 +00:00
Jim Meyering
fa4894b30c . 1997-06-25 15:38:35 +00:00
Jim Meyering
6700c89ac7 Use variable width columns when printing in multi-column mode.
(init_col_info): New function.
(print_current_files): Call init_col_info if format is
`many_per_line' or `horizontal'.
(print_many_per_line): Calculate optimum column widths.
(print_horizontal): Likewise.
From Ulrich Drepper.
1997-06-22 19:52:24 +00:00
Jim Meyering
d18dc59619 *** empty log message *** 1997-06-22 04:04:07 +00:00
Jim Meyering
973f13ccb2 . 1997-06-22 04:01:43 +00:00
Jim Meyering
e148f6d293 . 1997-06-22 03:51:36 +00:00
Jim Meyering
3841b591c1 . 1997-06-22 03:50:14 +00:00
Jim Meyering
e8b0678fed . 1997-06-22 03:49:51 +00:00
Jim Meyering
08f074fb34 *** empty log message *** 1997-06-22 03:38:08 +00:00
Jim Meyering
2f91f08a79 . 1997-06-22 03:32:37 +00:00
Jim Meyering
9bf8c1c229 . 1997-06-16 18:02:08 +00:00
Jim Meyering
504b9fe47a . 1997-06-16 18:01:32 +00:00
Jim Meyering
57f7889059 comment 1997-06-16 17:50:23 +00:00
Jim Meyering
8b4d49fc79 . 1997-06-16 17:42:33 +00:00
Jim Meyering
a6526f2171 (eval6): Accept new unary operator, quote.
From Karl Heuer.
1997-06-16 17:01:24 +00:00
Jim Meyering
bfc9115ee5 *** empty log message *** 1997-06-16 16:58:28 +00:00
Jim Meyering
5e3188fba4 . 1997-06-16 16:57:55 +00:00
Jim Meyering
57c0f5cfff (EXTRA_DIST): Add putenv.m4. 1997-06-16 16:57:02 +00:00
Jim Meyering
19342feca7 . 1997-06-16 16:45:15 +00:00
Jim Meyering
7b097c0e37 add copyright 1997-06-16 16:15:30 +00:00
Jim Meyering
952a76e506 tweak error message 1997-06-16 16:12:04 +00:00
Jim Meyering
0dcca900cc (full_write): Add comment regarding failure due to bug in
Linux Slackware 1.2.13 kernel.
1997-06-15 15:06:52 +00:00
Jim Meyering
ab029fd3e5 . 1997-06-15 13:35:02 +00:00
Jim Meyering
acdc74dbf5 Rewrite using save-cwd.c and chdir to remove quadratic component of complexity.
Before, it processed O(n^2) directory name components via stat and mkdir.
Now it's O(n).  This makes mkdir -p a lot more efficient when creating
directories with very many components.  On a Linux 2.0.30 ext2fs filesystem
this command: mkdir -p `perl -e 'print "a/" x 500'`  now runs in 0.77 seconds
(user+sys).  Contrast that with the 9.5(!) seconds it took before.
1997-06-15 13:34:47 +00:00
Jim Meyering
1830d29be9 Add test that -o 0 works. 1997-06-15 11:47:46 +00:00
Jim Meyering
3b4748d124 *** empty log message *** 1997-06-15 11:42:55 +00:00
Jim Meyering
50e65a424c (init_header) [T_BUF_FMT]: Output the 4-digit year (not the
2-digit abbreviation) in each page header.  Reported by Noah Friedman.
1997-06-15 11:40:47 +00:00
Jim Meyering
aca4091fae *** empty log message *** 1997-06-14 19:33:13 +00:00
Jim Meyering
2add756624 *** empty log message *** 1997-06-14 17:32:00 +00:00
Jim Meyering
2f1768f676 (cut_fields): Detect when the input is empty and handle
that special case.  Before `cut -f1 </dev/null' would improperly
output a single newline.  Reported by Phil Richards.
1997-06-14 17:31:40 +00:00
Jim Meyering
4f0bef5377 . 1997-06-14 16:45:00 +00:00
Jim Meyering
4dc1f7070b . 1997-06-14 16:36:22 +00:00
Jim Meyering
63ca47adfc proof reading from kb 1997-06-13 16:07:12 +00:00
Jim Meyering
c8460daf24 . 1997-06-12 16:40:53 +00:00
Jim Meyering
a6062bfb05 document expr's new quote operator 1997-06-12 16:32:08 +00:00
Jim Meyering
83461932b5 *** empty log message *** 1997-06-12 15:07:26 +00:00
Jim Meyering
23c6ab8674 *** empty log message *** 1997-06-12 15:07:05 +00:00
Jim Meyering
25f6a4a7c0 remove blank line at end and add copyright
tweak cpp indentation
1997-06-12 12:58:47 +00:00
Jim Meyering
8eebff2029 *** empty log message *** 1997-06-12 11:51:11 +00:00
Jim Meyering
6ecad0839e (eval6): Accept new unary operator, quote. From Karl Heuer. 1997-06-12 11:50:58 +00:00
Jim Meyering
9fb965dfd8 Add comment for posixly_correct. 1997-06-12 11:47:34 +00:00
Jim Meyering
bcdaf2c1a5 fix typo in expr/index doc.
from kwzh
1997-06-12 11:27:04 +00:00
Jim Meyering
e737958ebb . 1997-06-11 20:19:30 +00:00
Jim Meyering
44df08ee55 *** empty log message *** 1997-06-11 20:19:23 +00:00
Jim Meyering
8406b91aba (docolon): Test (re_buffer.re_nsub > 0) rather than
searching for `\(' to determine whether to return 0 or the empty
string.  Before it would improperly return '' if the pattern
contained a substring like this: `\\('.  From Karl Heuer.
For example, running expr c : '\\(' should print `0'.
1997-06-11 20:18:15 +00:00
Jim Meyering
2078f2391e . 1997-06-06 14:30:11 +00:00
Jim Meyering
f442eb2941 . 1997-06-03 20:01:55 +00:00
Jim Meyering
f1390de4c3 [HAVE_UNISTD_H]: Include unistd.h.
John Gatewood Ham reported that this is necessary for DJGPP/Win95.
1997-06-03 20:01:47 +00:00
Jim Meyering
93ede2c8e1 *** empty log message *** 1997-06-03 20:01:14 +00:00
Jim Meyering
ae7a2a007a . 1997-06-02 14:29:50 +00:00
Jim Meyering
1f107588fa . 1997-06-01 18:47:56 +00:00
Jim Meyering
a45a7e3819 . 1997-06-01 17:59:08 +00:00
Jim Meyering
5f0bf654a4 (mk-script): Depend on ../../config.status. 1997-06-01 17:58:27 +00:00
Jim Meyering
985bd80461 . 1997-06-01 17:20:42 +00:00
Jim Meyering
8bb2bf5d28 *** empty log message *** 1997-06-01 17:20:31 +00:00
Jim Meyering
cc167bce98 *** empty log message *** 1997-06-01 17:16:30 +00:00
Jim Meyering
f5291be83e Add tests using `next'. 1997-06-01 17:16:23 +00:00
Jim Meyering
2c0e561933 (OtherTable): Interpret `next' as 1 (not 2) units.
Patch from Richard Sharman <rsharman@magmacom.com>.
1997-06-01 17:15:51 +00:00
Jim Meyering
a488983890 fix for abs pathnames 1997-05-30 14:00:47 +00:00
Jim Meyering
94468e0921 indent cpp directives 1997-05-29 13:20:25 +00:00
Jim Meyering
4377246ee3 update from automake-1.1p 1997-05-29 13:19:34 +00:00
Jim Meyering
6edc738156 correct/normalize indentation in cpp directives 1997-05-28 12:19:28 +00:00
Jim Meyering
4f690a51e3 update from FSF 1997-05-28 12:01:33 +00:00
Jim Meyering
7eaf75e3b1 *** empty log message *** 1997-05-28 11:43:25 +00:00
Jim Meyering
4354caa2d4 (read_filesystem_list): Add `|| defined (__OpenBSD__)'
to the NetBSD #if so OpenBSD also uses the f_fstypename member.
(fstype_to_string): Add `&& !defined (__OpenBSD__)' to the NetBSD #if
expression to exclude this function definition.  OpenBSD 2.1 beta
doesn't need it.  Patch from Hugh Daniel <hugh@ecotone.xanadu.com>
1997-05-28 11:42:29 +00:00
Jim Meyering
106775512b *** empty log message *** 1997-05-28 11:40:16 +00:00
Jim Meyering
72559c0e30 *** empty log message *** 1997-05-27 14:17:08 +00:00
Jim Meyering
437b98461e Don't include backupfile.h. 1997-05-27 14:16:49 +00:00
Jim Meyering
074c7edade *** empty log message *** 1997-05-27 13:55:45 +00:00
Jim Meyering
e4f25ca7b1 Use base_name, not basename. 1997-05-27 13:55:23 +00:00
Jim Meyering
dd547a84bf . 1997-05-27 12:50:39 +00:00
Jim Meyering
bc50ceb474 clean up for -Wall 1997-05-27 11:05:40 +00:00
Jim Meyering
4c2adcbd56 Use base_name, not basename. 1997-05-27 11:04:41 +00:00
Jim Meyering
f0c27dac9e Use base_name, not basename.
Use X, not CP_OPTIONS.
1997-05-27 11:00:50 +00:00
Jim Meyering
93e9fef09f (libfu_a_SOURCES): Add addext.c.
Remove getversion.c;  get_version is now in backupfile.c.
Add basename.c since it's no longer replacible.
1997-05-27 10:45:34 +00:00
Jim Meyering
187f712b73 *** empty log message *** 1997-05-27 10:39:22 +00:00
Jim Meyering
aa8b6cf83c Change dcl of program_name so it doesn't conflict with the ubiquitous char* one. 1997-05-27 10:39:10 +00:00
Jim Meyering
46a9863033 . 1997-05-27 10:31:04 +00:00
Jim Meyering
c213bae308 Update from patch-2.2.93. 1997-05-27 10:30:45 +00:00
Jim Meyering
ca55ba3715 Update from FSF via patch-2.2.93. 1997-05-27 09:41:25 +00:00
Jim Meyering
168eb7758e Update from FSF via patch-2.2.93. 1997-05-27 09:39:25 +00:00
Jim Meyering
96c4c01019 Update from glibc via patch-2.2.93. 1997-05-27 09:38:06 +00:00
Jim Meyering
926c6c3301 *** empty log message *** 1997-05-26 04:46:57 +00:00
Jim Meyering
8805ede31b (copy_internal): When preserving symlinks (--no-dereference) and the
destination file is a symlink, use stat (not xstat) to see if it points
back to the source.  Reported by James <james@albion.glarp.com>.
1997-05-26 04:46:47 +00:00
Jim Meyering
cd29ba84ab *** empty log message *** 1997-05-26 04:43:47 +00:00
Jim Meyering
a65a081656 declare strip_trailing_slashes 1997-05-25 21:25:28 +00:00
Jim Meyering
8b36f9cbcd *** empty log message *** 1997-05-25 21:24:44 +00:00
Jim Meyering
0cc1681a5b Remove global variable opt_human_readable.
(enum Output_units): Rename from output_size.
Rename size_* to Unit_*.
Add Unit_variable to correspond to --human-readable.
(convert_blocks): Remove now-unused definition.
(human_readable): Rename paramater n_bytes to n_blocks.
Adjust conversions to reflect fact that input is now number of
512-byte blocks, not bytes.
(print_size): New function.
(du_files): Use print_size instead of open coding it.
(count_entry): Always count in units of 512-byte blocks to delay.
This lets du accumulate totals corresponding to a terabyte before
overflowing 32-bit long int.
Use print_size instead of open coding it.
1997-05-25 21:23:15 +00:00
Jim Meyering
e3e8f658c4 *** empty log message *** 1997-05-25 15:17:31 +00:00
Jim Meyering
07876bcb5d (convert_blocks): Add definition. 1997-05-25 15:10:03 +00:00
Jim Meyering
11080b7544 (convert_blocks): Remove definition.
Indent cpp directives.
1997-05-25 14:22:55 +00:00
Jim Meyering
1b71b3372e (convert_blocks): Remove now-unnecessary #undef.
(du_files): Pass output_size unchanged to convert_blocks.  No need
to test output_size for size_bytes, convert_blocks handles that
correctly.
(count_entry): Likewise.
1997-05-25 14:21:41 +00:00
Jim Meyering
1bfb2c3ec7 *** empty log message *** 1997-05-25 14:11:59 +00:00
Jim Meyering
1ba34180d7 (main): Implement new --max-depth=N option.
Based on the idea and a patch from Torbjorn Lindgren.
(du_files): Likewise.
(count_entry): Likewise.
[AIX]: Remove unused #pragma alloca.
1997-05-25 14:11:50 +00:00
Jim Meyering
54a61c3cf6 Remove FIXME.
Add spurious curlies and an empty line.
1997-05-25 13:00:01 +00:00
Jim Meyering
f735e157e9 . 1997-05-25 03:47:31 +00:00
Jim Meyering
5708e7bba8 *** empty log message *** 1997-05-25 03:47:21 +00:00
Jim Meyering
6919955eb1 New options: --ignore-fail-on-non-empty and --verbose.
(remove_parents): Implement new options.
(main): Likewise.
1997-05-25 03:46:46 +00:00
Jim Meyering
4f99d359c8 . 1997-05-25 03:15:30 +00:00
Jim Meyering
6fd92cf72b *** empty log message *** 1997-05-24 18:27:46 +00:00
Jim Meyering
2ebfd210cd . 1997-05-24 18:26:59 +00:00
Jim Meyering
d5659aa5e1 . 1997-05-24 18:12:59 +00:00
Jim Meyering
9add219c87 . 1997-05-24 18:11:33 +00:00
Jim Meyering
4d347c9e1f *** empty log message *** 1997-05-24 14:43:51 +00:00
Jim Meyering
90721ff4a4 (read_filesystem_list): Show automount-related
duplicate filesystems only when --all specified.  With suggestions
from Stuart Kemp.
1997-05-24 14:43:21 +00:00
Jim Meyering
1024238089 Indent cpp directives. 1997-05-24 14:42:40 +00:00
Jim Meyering
b0f8e63615 . 1997-05-24 14:31:23 +00:00
Jim Meyering
c8062f789d . 1997-05-24 14:13:55 +00:00
Jim Meyering
3dc7a93409 . 1997-05-24 14:11:19 +00:00
Jim Meyering
59ed92cdcf . 1997-05-23 13:23:49 +00:00
Jim Meyering
d0a506b84b . 1997-05-02 04:02:17 +00:00
Jim Meyering
ccb48f46d6 indent cpp-directives 1997-05-01 20:53:59 +00:00
Jim Meyering
9080de09fc indent cpp-directives 1997-05-01 20:51:16 +00:00
Jim Meyering
44848c0887 update from automake-1.1o 1997-04-29 15:48:14 +00:00
Jim Meyering
f6a1207cf9 . 1997-04-29 15:22:05 +00:00
Jim Meyering
6c04dfc1e1 *** empty log message *** 1997-04-27 23:46:02 +00:00
Jim Meyering
795d254715 (STRTOX): Don't fail because of extra character(s) following a
character constant.  Give the *warning* only if !POSIXLY_CORRECT.
1997-04-27 23:45:57 +00:00
Jim Meyering
e5ce0d8b3e *** empty log message *** 1997-04-27 23:33:54 +00:00
Jim Meyering
9778fd673b (cfcc_msg): File-scope constant.
(STRTOX): Use new constant as error message format string in macro.
Suggestion from Andreas Schwab.
1997-04-27 23:33:49 +00:00
Jim Meyering
3a46eb9695 . 1997-04-27 23:12:01 +00:00
Jim Meyering
3a84136d8c . 1997-04-27 20:18:07 +00:00
Jim Meyering
a77bf7510f *** empty log message *** 1997-04-27 20:13:21 +00:00
Jim Meyering
afdfd95be8 *** empty log message *** 1997-04-27 20:12:16 +00:00
Jim Meyering
3f9d8ee21b . 1997-04-27 19:41:52 +00:00
Jim Meyering
480a5db227 . 1997-04-27 19:41:16 +00:00
Jim Meyering
9874f0eedf changes suggested by kb 1997-04-24 13:00:51 +00:00
Jim Meyering
39361c9d6e patch from Andreas S. 1997-04-21 14:55:26 +00:00
Jim Meyering
7f74dcb1a6 s/;/. in comment to placate francois 1997-04-10 03:46:01 +00:00
Jim Meyering
738818ee66 . 1997-04-07 16:59:43 +00:00
Jim Meyering
90e1281e8e *** empty log message *** 1997-04-07 15:24:38 +00:00
Jim Meyering
907f15c7d6 *** empty log message *** 1997-04-07 15:21:33 +00:00
Jim Meyering
258186e1ce . 1997-04-07 15:10:57 +00:00
Jim Meyering
2e1059b400 . 1997-04-07 15:08:56 +00:00
Jim Meyering
58a9554b17 . 1997-04-07 00:44:33 +00:00
Jim Meyering
ca70b66b72 (STRTOX): New macro to eliminate code duplication.
(xstrtod, xstrtol, xstrtoul): Remove functions.
Use the STRTOX instead.
1997-04-06 20:58:16 +00:00
Jim Meyering
b3f0804efd . 1997-04-06 20:42:00 +00:00
Jim Meyering
ebce57b0e6 *** empty log message *** 1997-04-06 20:36:48 +00:00
Jim Meyering
3426e7ca7a Change most char* dcls to const char*. 1997-04-06 19:32:19 +00:00
Jim Meyering
39b444e420 Reorder functions to obviate forward decls. 1997-04-06 19:30:07 +00:00
Jim Meyering
00ea088ccd . 1997-04-04 03:29:25 +00:00
Jim Meyering
cd45cc7335 (EXTRA_DIST): Update file list. 1997-04-04 03:27:35 +00:00
Jim Meyering
7ecf5ed43b . 1997-04-04 03:18:54 +00:00
Jim Meyering
6d648c45ed Add test from Phil Richards. 1997-04-04 03:18:04 +00:00
Jim Meyering
cc093a9945 (main): Implement new --max-depth=N option.
Based on the idea and a patch from Torbjorn Lindgren.
(du_files): Likewise.
(count_entry): Likewise.
1997-03-27 05:47:56 +00:00
Jim Meyering
3416bdb6e1 *** empty log message *** 1997-03-27 05:45:12 +00:00
Jim Meyering
a37da82c38 . 1997-03-23 21:27:46 +00:00
Jim Meyering
f101a9b57f *** empty log message *** 1997-03-23 21:22:14 +00:00
Jim Meyering
c7b5fd2423 . 1997-03-23 02:56:47 +00:00
Jim Meyering
f1c111d469 *** empty log message *** 1997-03-23 02:30:09 +00:00
Jim Meyering
24ffa56fd0 . 1997-03-22 19:54:32 +00:00
Jim Meyering
e269fcdb28 *** empty log message *** 1997-03-22 06:06:02 +00:00
Jim Meyering
61ac269c6e *** empty log message *** 1997-03-22 06:05:16 +00:00
Jim Meyering
e71f8cf087 *** empty log message *** 1997-03-22 06:03:31 +00:00
Jim Meyering
b524db4e87 *** empty log message *** 1997-03-22 05:58:50 +00:00
Jim Meyering
37e05875d5 *** empty log message *** 1997-03-22 05:58:26 +00:00
Jim Meyering
fcc31060fa . 1997-03-21 03:16:03 +00:00
Jim Meyering
e328e25bd1 . 1997-03-21 03:14:53 +00:00
Jim Meyering
bf435650e1 . 1997-03-21 03:11:55 +00:00
Jim Meyering
cd0aba1c14 . 1997-03-21 03:10:21 +00:00
Jim Meyering
a1e46876c6 . 1997-03-19 02:57:20 +00:00
Jim Meyering
66c246fc17 cpp-indent
Change a few #ifdef to #if.
Remove 3 spurious #ifdef that were guarding an #undef each.
1997-03-19 02:56:54 +00:00
Jim Meyering
fbe78f2ef6 . 1997-03-19 02:12:42 +00:00
Jim Meyering
33da7dcdda (check_format): Rename local, FORMAT_STRING, to avoid shadowing global.
(print_numbers): Likewise.
1997-03-19 02:12:36 +00:00
Jim Meyering
3f2ded808d (idle_string): Rename local, IDLE, to avoid shadowing global. 1997-03-18 23:34:23 +00:00
Jim Meyering
bcdeccb6a3 (log_su): Resort to getpwuid if getlogin fails.
If no tty name is found, use `none' in the log message.
Based on a patch from Galen Hazelwood.
1997-03-18 12:49:20 +00:00
Jim Meyering
808a6a2308 . 1997-03-14 04:14:37 +00:00
Jim Meyering
29e56fa096 . 1997-03-14 04:09:13 +00:00
Jim Meyering
f02b837782 (main): Allow use of 0 (zero) as the margin offset
argument to the -o option.  Patch from Gary Anderson.
1997-03-14 04:06:12 +00:00
Jim Meyering
294ea6ffc2 . 1997-03-14 04:00:19 +00:00
Jim Meyering
c127695e96 (main): Make sure c1 is not -1 before using it as an
array index.  Patch from Greg McGary.  Although this is truly a
bug, I believe it would not cause tr to misbehave on most systems.
I could not construct a test case with which this bug causes tr
to generate invalid output.
1997-03-14 03:59:21 +00:00
Jim Meyering
d713508802 Add test that -o 0 works. 1997-03-14 03:52:10 +00:00
Jim Meyering
c42ed1e1fb . 1997-03-14 03:30:22 +00:00
Jim Meyering
e64db863dd . 1997-03-14 03:30:02 +00:00
Jim Meyering
40b667e0e9 . 1997-03-14 03:29:41 +00:00
Jim Meyering
effc683cfc (TIME_T_MIN): Work around a bug in Cray C 5.0.3.0. 1997-03-14 03:28:09 +00:00
Jim Meyering
898fd10ec0 . 1997-03-13 05:21:23 +00:00
Jim Meyering
7017b8f67f (change_file_group): Use uid of -1 to indicate
we don't want to change the file's user ID.
1997-03-13 05:19:54 +00:00
Jim Meyering
c230f7db00 Update from gettext-0.10.27. 1997-03-13 05:17:50 +00:00
Jim Meyering
5ed7bf6069 . 1997-03-13 05:17:16 +00:00
Jim Meyering
a7cbdd04cd . 1997-03-13 05:16:47 +00:00
Jim Meyering
4e81181981 (EXTRA_DIST): Add chown.c. 1997-03-13 05:13:18 +00:00
Jim Meyering
1dc27001d5 Add chown.m4. 1997-03-13 05:12:13 +00:00
Jim Meyering
9034e099da . 1997-03-13 05:10:42 +00:00
Jim Meyering
78f4331cab . 1997-03-13 03:54:05 +00:00
Jim Meyering
a9616d4982 . 1997-03-12 01:26:15 +00:00
Jim Meyering
f1fbec95d5 . 1997-03-11 05:11:09 +00:00
Jim Meyering
dd2f783492 . 1997-03-11 05:02:11 +00:00
Jim Meyering
fac7cfba06 . 1997-03-10 04:47:59 +00:00
Jim Meyering
613357b0ab (decode_switches): Ignore value of COLUMNS envionment
variable when it is the empty string.  Suggestion from Ulrich Drepper.
1997-03-10 04:47:32 +00:00
Jim Meyering
de397548a8 comm's exit status 1997-03-10 03:47:13 +00:00
Jim Meyering
8a3180c8f0 . 1997-03-09 06:33:43 +00:00
Jim Meyering
73e03453df . 1997-03-09 06:18:33 +00:00
Jim Meyering
ea805db369 (usage): Fix typo in --help output. From Andreas Schwab. 1997-03-01 04:33:59 +00:00
Jim Meyering
d358cd813b . 1997-02-28 05:02:41 +00:00
Jim Meyering
571f4f4fde . 1997-02-28 05:01:39 +00:00
Jim Meyering
8c93627ccb (tYEAR_UNIT): Increase yyRelYear by $1, not just by 1.
From Andreas Schwab.
1997-02-27 05:53:15 +00:00
Jim Meyering
80409f292d . 1997-02-27 05:52:59 +00:00
Jim Meyering
8b2b45e172 . 1997-02-27 05:49:51 +00:00
Jim Meyering
94cab36432 (re_protect): When there is any potential for ambiguity in a diagnostic,
give explanatory diagnostic in addition to file name.
1997-02-27 05:49:44 +00:00
Jim Meyering
e1b834211b (copy_internal): When there is any potential for
ambiguity in a diagnostic, give explanatory diagnostic in addition
to file name.
1997-02-27 05:49:01 +00:00
Jim Meyering
a0400ec19b . 1997-02-26 13:01:45 +00:00
Jim Meyering
27237bfb10 . 1997-02-26 04:21:01 +00:00
Jim Meyering
df86f458a2 . 1997-02-26 02:21:34 +00:00
Jim Meyering
88c3a362e9 . 1997-02-23 05:47:16 +00:00
Jim Meyering
a4ccff96f9 . 1997-02-23 02:01:27 +00:00
Jim Meyering
6df1efb30c . 1997-02-22 20:41:21 +00:00
Jim Meyering
75bc50c6fc . 1997-02-22 20:34:30 +00:00
Jim Meyering
5cb0201730 . 1997-02-22 20:19:05 +00:00
Jim Meyering
db78b4797a (tMONTH_UNIT): Increase yyRelMonth by $1, not just by 1.
(tDAY_UNIT): Likewise for yyRelDay.
(tHOUR_UNIT): Likewise for yyRelHour.
(tMINUTE_UNIT): Likewise for yyRelMinutes.
(tSEC_UNIT): Likewise for yyRelSeconds.
1997-02-22 20:13:19 +00:00
Jim Meyering
9de7f6a024 . 1997-02-21 02:19:59 +00:00
Jim Meyering
4b0e6d0a33 update from FSF 1997-02-21 02:19:48 +00:00
Jim Meyering
a6ebe05733 . 1997-02-21 02:17:18 +00:00
Jim Meyering
e16668553e update from FSF 1997-02-21 02:16:54 +00:00
Jim Meyering
3b459d46bc . 1997-02-20 05:11:19 +00:00
Jim Meyering
2e31651a02 (factor): Rewrite inner loop to be more efficient.
Patch from Torbjorn Granlund.
1997-02-20 05:11:12 +00:00
Jim Meyering
9e2c86c67a . 1997-02-20 05:06:29 +00:00
Jim Meyering
4af2c36dfa (main): Remove trailing slashes from command line arguments.
Otherwise, running `mkdir x; chmod 644 x; ls -d x/' (note the trailing
slash) makes ls fail with permission denied on at least Linux 1.2.13
and 2.0.14 systems.
1997-02-20 04:54:56 +00:00
Jim Meyering
5234813a09 . 1997-02-19 03:38:52 +00:00
Jim Meyering
3b8313838c . 1997-02-19 03:27:18 +00:00
Jim Meyering
9b47c04ac1 . 1997-02-19 03:25:30 +00:00
Jim Meyering
11332e0c26 Add tests for %U, %V, and %W and for a bug fixed on 1996-03-05.
Remove misleading `-' from leap-1 test.
1997-02-19 03:23:16 +00:00
Jim Meyering
785168be90 . 1997-02-19 03:20:35 +00:00
Jim Meyering
91eb812c61 . 1997-02-19 02:54:43 +00:00
Jim Meyering
2be08dd6d3 . 1997-02-19 00:56:22 +00:00
Jim Meyering
6d09ea7b0d . 1997-02-18 17:46:56 +00:00
Jim Meyering
7bb258353f . 1997-02-18 17:46:04 +00:00
Jim Meyering
35ec0a08b5 . 1997-02-18 15:13:51 +00:00
Jim Meyering
1b1bca8a63 . 1997-02-18 15:13:12 +00:00
Jim Meyering
11e498679b . 1997-02-18 15:12:41 +00:00
Jim Meyering
30979f06d8 . 1997-02-18 02:47:49 +00:00
Jim Meyering
c321e5b51a . 1997-02-18 02:46:29 +00:00
Jim Meyering
bf8b53e78b . 1997-02-18 02:43:59 +00:00
Jim Meyering
1ee3e32c80 . 1997-02-17 04:18:26 +00:00
Jim Meyering
668010de9e . 1997-02-17 04:18:06 +00:00
Jim Meyering
24f79bb72c . 1997-02-17 04:17:09 +00:00
Jim Meyering
1bdee95e06 . 1997-02-17 04:12:20 +00:00
Jim Meyering
90bdeb65ca . 1997-02-17 04:11:19 +00:00
Jim Meyering
522f1f2f27 . 1997-02-17 01:33:48 +00:00
Jim Meyering
0d457a8063 . 1997-02-17 01:30:05 +00:00
Jim Meyering
5db942f46c . 1997-02-17 01:26:54 +00:00
Jim Meyering
80cccededc . 1997-02-17 01:26:13 +00:00
Jim Meyering
dd77d0602a Add missing paren. 1997-02-16 23:49:11 +00:00
Jim Meyering
4722a74bcf (Tests '7.*'): Reflect file-renaming. 1997-02-16 19:14:32 +00:00
Jim Meyering
16632f72fc . 1997-02-16 19:11:10 +00:00
Jim Meyering
be855de208 renamed from T- versions to avoid name-clashes on case-indep filesystems 1997-02-16 19:08:01 +00:00
Jim Meyering
feb2f918b3 (parse_obsolescent_option): Reverse order of args in diagnostic.
Remove `' quotes in diagnostic.
(parse_options): Remove `' quotes in diagnostic.
1997-02-16 14:31:39 +00:00
Jim Meyering
6bdbdae68c fixed off-by-one error 1997-02-12 16:31:01 +00:00
Jim Meyering
59f891e8b8 FIXME: major revamp to use FILE*; passed a few more tests 1997-02-12 16:25:40 +00:00
Jim Meyering
2be25646bd change wording in message 1997-02-09 16:07:38 +00:00
Jim Meyering
4ee12115f0 update copyright 1997-02-09 04:56:33 +00:00
Jim Meyering
7eb03c4372 update copyrights for 1997 1997-02-09 04:54:16 +00:00
Jim Meyering
b7ffe8cdaf update copyrights for 1997 1997-02-09 04:52:50 +00:00
Jim Meyering
dbc538f92b update copyrights for 1997 1997-02-09 04:46:02 +00:00
Jim Meyering
562488ee9c (parse_obsolescent_option): Give warning diagnostic for
(but now accept) obsolescent usage with more than one file argument.
1997-02-09 04:44:47 +00:00
Jim Meyering
3e9c9be49e . 1997-02-08 03:25:12 +00:00
Jim Meyering
9e2ad11286 . 1997-02-07 04:17:25 +00:00
Jim Meyering
5d159ca17a . 1997-02-07 04:04:24 +00:00
Jim Meyering
b7a12bb110 (quote_filename): Allocate two more bytes (for quotes)
when using --quote-name (-Q).
Feb 2 change wasn't complete.  Patch from Mark Harris.
1997-02-06 03:58:09 +00:00
Jim Meyering
155fa29f27 . 1997-02-05 04:20:20 +00:00
Jim Meyering
8257531353 . 1997-02-05 04:07:17 +00:00
Jim Meyering
49e3c8fee2 Bracket inclusion of termios.h with #if HAVE_TERMIOS_H.
Masami Takikawa reported that NeXTStep 3.0 doesn't have termios.h.
1997-02-05 04:06:53 +00:00
Jim Meyering
7a5980964b Dennis Biringer <biringer@textron.mhpcc.af.mil> writes:
| Please note that Hawaii has no daylight savings time (HDT - Hawaii
| Daylight) as stated on page 147 of the tar manual.  We are always on Hawaii
| Standard Time (HST).
|
| Also, on page 146, the Alaska-Hawaii Standard zone (AHST) is called
| Hawaii-Aleutian Standard Time by section 263 of the United States Code.
| (http://tycho.usno.navy.mil/260.html).
|
| Thanks for the effort on the manual,
| Dennis
|
| --
| Dennis Biringer                            535 Lipoa Parkway #149
| Dennis.Biringer@textron.mhpcc.af.mil       Kihei HI 96753
| biringer@mrtc.org                          VOICE: 808-874-3206
1997-02-05 02:35:46 +00:00
Jim Meyering
c1e4806502 [__GNUC__]: Don't define alloca to __builtin_alloca. 1997-02-04 03:52:16 +00:00
Jim Meyering
84ed9c3db9 . 1997-02-04 03:48:17 +00:00
Jim Meyering
3c97cf0102 libitize 1997-02-04 03:30:49 +00:00
Jim Meyering
9e61c5f51a . 1997-02-04 03:29:06 +00:00
Jim Meyering
a0aa288531 libitize 1997-02-04 03:27:13 +00:00
Jim Meyering
1235c944d2 libitize 1997-02-04 03:26:31 +00:00
Jim Meyering
05ff9c82a6 new obstack from libc 1997-02-04 03:20:29 +00:00
Jim Meyering
e4af7abbde . 1997-02-03 05:09:12 +00:00
Jim Meyering
e8bcfd934a Move alloca-related preprocessor code into system.h. 1997-02-03 05:08:19 +00:00
Jim Meyering
1b5a74d1a7 (parse_long_options): Compare getopt_long return
value against -1, not EOF.  Use NULL, not `(int *) 0' as last parameter
in getopt_long call.
1997-02-03 05:06:27 +00:00
Jim Meyering
a2ffd5db02 [__GNUC__]: Don't define alloca to __builtin_alloca. 1997-02-03 04:20:22 +00:00
Jim Meyering
704a69781e . 1997-02-03 03:22:52 +00:00
Jim Meyering
5f24ab538f . 1997-02-03 03:21:02 +00:00
Jim Meyering
6a203a2347 (quote_filename): Don't backslash-escape double quotes.
This fixes a problem whereby columns weren't aligned when some files
contained double quote characters and ls's --escape (-b) option was
used.  Reported by Mark Harris.
1997-02-03 00:10:40 +00:00
Jim Meyering
16e150496f . 1997-02-02 23:51:20 +00:00
Jim Meyering
44a82a9eb6 . 1997-02-02 22:22:37 +00:00
Jim Meyering
a15366696c * src/cp-hash.c (struct entry): Move dcl to this file from cp.h.
(struct htab): Likewise.
No longer include cp.h.  Instead, include the things it used to include.
1997-02-02 22:21:03 +00:00
Jim Meyering
c64a391bb2 . 1997-02-02 21:23:10 +00:00
Jim Meyering
1d286acd9a (hash_insert2): Rename local HTAB to HT to avoid shadowing global. 1997-02-02 20:44:10 +00:00
Jim Meyering
b63df62ce1 [obstack_chunk_alloc]: Define to malloc, not xmalloc
to work better with new obstack functions.
1997-02-02 20:11:54 +00:00
Jim Meyering
ff323743c5 [obstack_chunk_alloc]: Define to malloc, not xmalloc
to work better with new obstack functions.
1997-02-02 20:10:11 +00:00
Jim Meyering
50d2bb5b7b (main): Rename local I to C to avoid shadowing and to
be more consistent.  Declare I in inner scopes.
1997-02-02 20:09:02 +00:00
Jim Meyering
1a375e421b Gutted code -- pieces are in copy.[ch]. 1997-02-02 18:33:19 +00:00
Jim Meyering
09e2cc2fdf use $@, instead of literal `POTFILES' 1997-02-02 16:05:43 +00:00
Jim Meyering
d262a3cc82 (POTFILES): Redirect to an intermediate file and write-protect POTFILES. 1997-02-02 15:43:54 +00:00
Jim Meyering
badb35bdb7 . 1997-02-02 00:09:46 +00:00
Jim Meyering
3cca84e543 . 1997-02-02 00:09:25 +00:00
Jim Meyering
4ea19e3b31 . 1997-02-01 23:12:18 +00:00
Jim Meyering
118cbe89db . 1997-02-01 16:56:47 +00:00
Jim Meyering
f13f9c1936 Reflect renamings. 1997-02-01 16:56:32 +00:00
Jim Meyering
0bda501d01 rename 1997-02-01 16:55:41 +00:00
Jim Meyering
8e6d4e2d3e . 1997-02-01 16:53:08 +00:00
Jim Meyering
c859133450 . 1997-02-01 16:52:02 +00:00
Jim Meyering
1b4dfdc778 . 1997-02-01 16:51:33 +00:00
Jim Meyering
620317a6bf . 1997-02-01 16:51:11 +00:00
Jim Meyering
c1c6d5fa1f (test 10md): Reflect renaming. 1997-02-01 16:48:08 +00:00
Jim Meyering
576b49f9f0 . 1997-02-01 16:47:56 +00:00
Jim Meyering
f18a2cdcd6 . 1997-02-01 16:47:17 +00:00
Jim Meyering
b6aa3e6c17 . 1997-02-01 16:46:06 +00:00
Jim Meyering
2e2fe82afe (spec_to_list): Warn about all filenames that exceed max-length before dying. 1997-02-01 16:44:15 +00:00
Jim Meyering
67c5175138 . 1997-02-01 16:41:08 +00:00
Jim Meyering
bece4592b4 update for 20.1 patch from roland 1997-02-01 16:39:27 +00:00
Jim Meyering
0081aea9e1 . 1997-02-01 13:23:39 +00:00
Jim Meyering
fec37a7211 (init_parameters): For compatibility: use default
separator `TAB' with full length lines.  From Roland Huebner.
1997-02-01 13:23:27 +00:00
Jim Meyering
5d3c42ac61 . 1997-02-01 13:20:02 +00:00
Jim Meyering
cd0b33c839 (usage): Make parenthetical note on --no-dereference a little more general. 1997-02-01 04:49:51 +00:00
Jim Meyering
a7dbd3f5e4 . 1997-02-01 04:25:59 +00:00
Jim Meyering
e077b7593b bracket bug address with <> and append a period 1997-02-01 04:24:58 +00:00
Jim Meyering
a882d55b52 bracket bug address with <> and append a period 1997-02-01 04:24:08 +00:00
Jim Meyering
899a90bfd9 bracket bug address with <> and append a period 1997-02-01 04:23:31 +00:00
Jim Meyering
09f70cf63b Rename globals buffer and buffer_size to have G_ prefix
to avoid shadowing local variables.
1997-02-01 03:29:21 +00:00
Jim Meyering
d4efcf477e (add_line_number): Rename from `number' to avoid shadowing local variables. 1997-02-01 03:25:14 +00:00
Jim Meyering
0e291b59ed . 1997-02-01 03:13:22 +00:00
Jim Meyering
b8c82a8e39 Compare getopt_long return value against -1, not EOF. Use NULL, not '(int *) 0' as last parameter in getopt_long call. 1997-02-01 03:05:36 +00:00
Jim Meyering
4f51b86bfb Compare getopt_long return value against -1, not EOF. Use NULL, not '(int *) 0' as last parameter in getopt_long call. 1997-02-01 03:03:44 +00:00
Jim Meyering
c2d2dec516 Compare getopt_long return value against -1, not EOF. Use NULL, not '(int *) 0' as last parameter in getopt_long call. 1997-02-01 02:00:04 +00:00
Jim Meyering
1e40423be8 (maintainer-clean): Remove GMOFILES.
From Paul Eggert.
1997-01-30 05:28:37 +00:00
Jim Meyering
0c5ab92b59 . 1997-01-30 04:16:33 +00:00
Jim Meyering
b9278db095 . 1997-01-30 04:11:17 +00:00
Jim Meyering
944b08f293 Do each test twice: get input via REDIR and PIPE. 1997-01-30 03:38:47 +00:00
Jim Meyering
307b54a273 (test_vector): Do each (non-stdin-requiring) test three times. 1997-01-30 03:38:07 +00:00
Jim Meyering
795162649b . 1997-01-30 03:36:40 +00:00
Jim Meyering
3181551ddd . 1997-01-30 03:36:06 +00:00
Jim Meyering
4cbcb32a53 correctly compute number of tests 1997-01-30 03:31:40 +00:00
Jim Meyering
13a5e426f3 Remove common_option_prefix flag.
(test_vector): Prepend the common option here instead.
1997-01-30 03:27:35 +00:00
Jim Meyering
56557d787a Remove input_via_stdin flag.
Do each test twice: get input via REDIR and PIPE.
1997-01-30 03:26:27 +00:00
Jim Meyering
6b1d2c4de1 Do each test three times. 1997-01-30 03:25:16 +00:00
Jim Meyering
bca3705ac5 . 1997-01-30 03:22:44 +00:00
Jim Meyering
9fcda065b6 . 1997-01-30 03:14:43 +00:00
Jim Meyering
188edf1546 . 1997-01-30 03:01:15 +00:00
Jim Meyering
22922b8765 Allow each test to be run any or all of three different ways. Program
input may be specified via a file or files listed on the command line,
via input redirection (if there's only one file), or via a pipe.
1997-01-29 14:19:17 +00:00
Jim Meyering
e16812dea8 . 1997-01-29 13:03:05 +00:00
Jim Meyering
20580c3f25 . 1997-01-29 02:54:21 +00:00
Jim Meyering
a6871ebbce Remove `t' prefix on all generated test file names.
Change suffixes from (.in, .exp, .out, .err) to (.I, .X, .O, .E).
Ensure that no test file (generated or maintainer-supplied) has a
longer than 14 characters.
1997-01-28 21:22:34 +00:00
Jim Meyering
0ce61713d5 (usage): Remove one space in message to make colons line up. 1997-01-28 03:44:27 +00:00
Jim Meyering
d705b6c469 . 1997-01-28 03:43:05 +00:00
Jim Meyering
771ab6e1bf (print_long_format): Fix off-by-one problem in size being passed to strftime. 1997-01-28 03:40:18 +00:00
Jim Meyering
b103723acc . 1997-01-27 03:15:14 +00:00
Jim Meyering
03ebea3ec6 . 1997-01-27 03:10:22 +00:00
Jim Meyering
5f011471a3 really make the messages identical 1997-01-27 02:28:39 +00:00
Jim Meyering
6b3f36f935 . 1997-01-27 02:18:56 +00:00
Jim Meyering
1010c1f580 . 1997-01-26 20:01:11 +00:00
Jim Meyering
7490632078 . 1997-01-26 19:04:03 +00:00
Jim Meyering
537381d409 . 1997-01-26 19:03:30 +00:00
Jim Meyering
3a01be66d4 . 1997-01-26 19:02:52 +00:00
Jim Meyering
8a87c1a169 . 1997-01-26 19:01:54 +00:00
Jim Meyering
07b07ca07c . 1997-01-26 18:57:36 +00:00
Jim Meyering
26a10a8026 (usage): Fix typo (--writeable -> --writable) in help output 1997-01-26 18:51:44 +00:00
Jim Meyering
072c1efe39 (parse_options): Add quotes to make messages identical. 1997-01-26 18:50:33 +00:00
Jim Meyering
c38939be8e . 1997-01-26 07:03:50 +00:00
Jim Meyering
e48314ac1b bracket prototype with PARAMS 1997-01-26 06:23:06 +00:00
Jim Meyering
7c94dda02d . 1997-01-26 05:57:12 +00:00
Jim Meyering
fe6c711f48 Restore dcl of free. with obstacks, you need it. 1997-01-26 05:57:04 +00:00
Jim Meyering
2c7c121c13 Revert last change. With obstack, dcl of free is *required*. 1997-01-26 05:55:02 +00:00
Jim Meyering
7a8b837062 . 1997-01-26 05:13:26 +00:00
Jim Meyering
25eb22e88f . 1997-01-26 05:08:56 +00:00
Jim Meyering
7f798f5f4f (count_entry): Fix blatant bug (typo?) that made
--megabytes report numbers in units of kilobytes.
Reported by Galen Hazelwood.
1997-01-26 05:05:06 +00:00
Jim Meyering
9d502e7240 . 1997-01-26 05:04:35 +00:00
Jim Meyering
c1ecd3afea . 1997-01-26 04:52:42 +00:00
Jim Meyering
a95088a5ea (print_factors): Reflect changes to xstrtoul interface. 1997-01-26 04:52:32 +00:00
Jim Meyering
fb43ebcbae . 1997-01-26 04:48:39 +00:00
Jim Meyering
73ed11f2b7 (parse_options): Remove unnecessary goto and label. 1997-01-26 04:48:29 +00:00
Jim Meyering
6390686aab . 1997-01-26 04:44:03 +00:00
Jim Meyering
3e0c759c3a (parse_obsolescent_option): Comment. 1997-01-26 04:43:42 +00:00
Jim Meyering
10f565971b . 1997-01-26 04:30:49 +00:00
Jim Meyering
e1ea22da05 (is_ancestor): Add it. 1997-01-26 04:30:39 +00:00
Jim Meyering
1e71247ea0 . 1997-01-26 04:14:26 +00:00
Jim Meyering
46f650f6b0 . 1997-01-26 04:13:46 +00:00
Jim Meyering
74bca24efe . 1997-01-26 04:12:46 +00:00
Jim Meyering
e385fd1e4c . 1997-01-26 04:12:20 +00:00
Jim Meyering
239899ae58 Interpret `input arg is a hash
reference' as meaning that the tested program will read no input.
Most of the tests for the date program use this feature.
Also for date, the generated script now reflects specification
(in Test.pm) of default and per-test environment settings.
1997-01-26 03:12:41 +00:00
Jim Meyering
2a3863e2b8 . 1997-01-26 03:01:01 +00:00
Jim Meyering
bd30083472 . 1997-01-26 02:59:50 +00:00
Jim Meyering
01839f9f82 remove trailing blanks 1997-01-25 13:50:24 +00:00
Jim Meyering
6f807a8598 remove now-spurious junk 1997-01-25 13:45:55 +00:00
Jim Meyering
94439345f5 . 1997-01-25 13:38:54 +00:00
Jim Meyering
e9dc554349 (noinst_HEADERS): Add getdate.h. 1997-01-25 13:38:49 +00:00
Jim Meyering
68ed0308cf . 1997-01-25 06:59:56 +00:00
Jim Meyering
fb04070061 . 1997-01-25 06:54:19 +00:00
Jim Meyering
9200311684 . 1997-01-25 06:52:50 +00:00
Jim Meyering
dd374cd779 . 1997-01-25 06:46:53 +00:00
Jim Meyering
71076df2d8 . 1997-01-25 06:46:33 +00:00
Jim Meyering
a1a27df129 . 1997-01-25 06:45:38 +00:00
Jim Meyering
fd685e41d6 Move the code from configure.in into
this macro that resorts to looking for getgroups in -lbsd.
Set new shell variable, GETGROUPS_LIB (that callers should check),
if it is found there.
1997-01-25 06:45:32 +00:00
Jim Meyering
c672fc6df6 . 1997-01-25 06:43:47 +00:00
Jim Meyering
0a735b7b9e . 1997-01-25 06:43:16 +00:00
Jim Meyering
5aaadded9d . 1997-01-25 06:37:40 +00:00
Jim Meyering
a8bcd782c4 update for changed xstrtou?l 1997-01-25 06:21:24 +00:00
Jim Meyering
2be7ff8311 . 1997-01-25 06:17:20 +00:00
Jim Meyering
0894db7b3f (XSTRTOL_H): Undefine it. 1997-01-25 06:17:13 +00:00
Jim Meyering
d58a074dea . 1997-01-25 06:15:49 +00:00
Jim Meyering
d73bc3ca57 [!_STRTOL_ERROR]: Define the type `enum strtol_error'
only if it hasn't already been defined.
1997-01-25 06:15:18 +00:00
Jim Meyering
186d893f27 (__xstrtol): Change interpretation of
VALID_SUFFIXES == NULL vs VALID_SUFFIXES == "".  Use the former
when any suffix is valid, the later when no suffix is allowed.
1997-01-25 06:13:46 +00:00
Jim Meyering
edeada009c fix copyright filling 1997-01-25 06:11:48 +00:00
Jim Meyering
18195dd699 fix copyright filling 1997-01-25 06:11:22 +00:00
Jim Meyering
338b31ba60 . 1997-01-25 05:58:58 +00:00
Jim Meyering
562eb3d16d . 1997-01-25 05:56:52 +00:00
Jim Meyering
175fb661e0 (parse_long_options): Reset optind to zero
before just returning so that getopt internals get initialized from
the probably-new parameters when/if getopt is called later.
1997-01-25 05:37:15 +00:00
Jim Meyering
50c04a9d3e (parse_obsolescent_option): Recognize and fail for
more malformed obsolescent options.  Makes for better diagnostics.
1997-01-24 02:11:52 +00:00
Jim Meyering
8a66d0dd57 . 1997-01-24 01:16:39 +00:00
Jim Meyering
1f678023d5 . 1997-01-23 05:15:14 +00:00
Jim Meyering
b66a30133f . 1997-01-23 04:12:43 +00:00
Jim Meyering
598a7bda46 . 1997-01-23 04:03:50 +00:00
Jim Meyering
0800b55642 . 1997-01-23 04:01:58 +00:00
Jim Meyering
5ac433d292 . 1997-01-23 04:00:19 +00:00
Jim Meyering
b22469537b . 1997-01-23 03:55:50 +00:00
Jim Meyering
591844b387 . 1997-01-23 03:47:20 +00:00
Jim Meyering
2611844743 (parse_options): New function.
(parse_obsolescent_option): New function.
(main): Use the new functions instead of open-coding them.
This better fixes the bug in handling obsolescent `+Nc' options.
General cleanup.
1997-01-23 03:38:23 +00:00
Jim Meyering
c04fc60484 . 1997-01-23 03:22:16 +00:00
Jim Meyering
ffb626613a . 1997-01-23 03:02:56 +00:00
Jim Meyering
3452006a53 . 1997-01-23 03:02:17 +00:00
Jim Meyering
161422b9b2 . 1997-01-23 02:45:08 +00:00
Jim Meyering
2091adbbb1 Update from GNU via Uli 1997-01-23 02:45:02 +00:00
Jim Meyering
ccbf5f37f1 . 1997-01-23 02:25:26 +00:00
Jim Meyering
ef2b6836fd revert last change 1997-01-23 02:23:44 +00:00
Jim Meyering
44386ac6ff . 1997-01-23 02:21:03 +00:00
Jim Meyering
5c7e1b6bee . 1997-01-23 02:18:00 +00:00
Jim Meyering
3266134b2a . 1997-01-23 02:16:55 +00:00
Jim Meyering
63571532a2 (AM_FUNC_MKTIME): Run tests for each of a few values
for the TZ environment variable.  Andre Novaes Cunha provided the
hairy TZ setting that exercized the Solaris tzset bug.
1997-01-23 02:16:20 +00:00
Jim Meyering
82b01ee905 increment serial number 1997-01-23 00:39:19 +00:00
Jim Meyering
48569d6b98 [strftime]: Add parameters to macro definition. From Drepper. 1997-01-22 23:23:04 +00:00
Jim Meyering
211fe36692 (main): Use TZ=GMT0, not TZ=GMT, since only GMT0 is specified by Posix.1. 1997-01-22 22:45:47 +00:00
Jim Meyering
8dd8bb78b1 . 1997-01-22 22:43:41 +00:00
Jim Meyering
d64cc3c1ef (_strftime_copytm): New function, to work around Solaris 2.5 tzset bug.
From Paul Eggert.
1997-01-22 22:43:15 +00:00
Jim Meyering
db7201835d . 1997-01-22 22:39:41 +00:00
Jim Meyering
74cb2ee314 (AM_FUNC_MKTIME): Fix bug in mktime test -- don't
test now, test a couple of thousand times.
1997-01-22 22:38:37 +00:00
Jim Meyering
6d24eee926 . 1997-01-22 04:56:25 +00:00
Jim Meyering
aeb7c0bc47 . 1997-01-22 04:55:59 +00:00
Jim Meyering
940f23f4a4 . 1997-01-22 04:53:59 +00:00
Jim Meyering
f3f1cae097 (main): Properly handle what the POSIX spec calls
the `obsolescent' usage (e.g., tail +2c).  It didn't work.
Reported by Karl Heuer.
1997-01-22 04:53:52 +00:00
Jim Meyering
fbe50426e2 . 1997-01-22 04:48:32 +00:00
Jim Meyering
8011a147de . 1997-01-21 04:21:48 +00:00
Jim Meyering
3cca257a3b . 1997-01-19 15:24:40 +00:00
Jim Meyering
de96d28c57 . 1997-01-19 13:18:30 +00:00
Jim Meyering
783fb6b2a6 . 1997-01-19 13:11:40 +00:00
Jim Meyering
b969dad022 Indent with GNU indent. 1997-01-18 20:17:39 +00:00
Jim Meyering
c1db691c12 Indent 2 more cpp-directives to reflect nesting. 1997-01-18 20:12:10 +00:00
Jim Meyering
5f9c33edfe (get_date): Change prototype to reflect const'ness of parameters.
Indent cpp-directives to reflect nesting.
1997-01-18 20:11:05 +00:00
Jim Meyering
10d7644859 . 1997-01-18 20:08:05 +00:00
Jim Meyering
6cb5a99aa7 Include getdate.h.
(<time.h>, <sys/time.h>): Don't include -- now getdate.h does it.
1997-01-18 20:06:50 +00:00
Jim Meyering
f696bb6737 . 1997-01-18 16:58:30 +00:00
Jim Meyering
8a9acec293 . 1997-01-18 16:57:45 +00:00
Jim Meyering
7eeedf8385 . 1997-01-18 15:46:09 +00:00
Jim Meyering
4c066c3552 . 1997-01-18 15:32:52 +00:00
Jim Meyering
6e5149f0ab 1997-01-06 Paul Eggert <eggert@twinsun.com>
* getdate.y: Rewrite to use mktime.

<sys/timeb.h>: Don't include.
(mktime): Declare.

(struct timeb, timezone, DOOMSDAY, SECSPERDAY, DSTMODE, yyDSTmode,
ToSeconds, Convert, DSTcorrect, RelativeDate, RelativeMonth): Remove.
(ToHour): New function (part of the old ToSeconds fn).
(ToYear): New function (part of the old Convert fn).

(TABLE.value, yyDayOrdinal, yyDayNumber, yyTimezone, yyDay, yyHour,
yyMinutes, yyMonth, yySeconds, yyYear, yyRelMonth, yyRelSeconds,
Number): Now int instead of time_t.
(HOUR): Don't cast to time_t.

(tDAY_UNIT, tHOUR_UNIT, tYEAR_UNIT): New %tokens.
(UnitsTable): Use new units that are closer to the keywords.

(yyRelDay, yyRelHour, yyRelMinutes, yyRelYear): New variables.
(rel, relunit, get_date): Add support for them.

(time): Fix timezone calculations for negative half-hour offsets
when integer division truncates towards minus infinity.

(zone): Incorporiate DST calculation directly.

(get_date): 2nd arg is now time_t *, not struct timeb *.
Use mktime to do most of the work, instead of computing it ourselves.
Guard against falsely reporting errors near the time_t boundaries
when parsing times in other time zones.
1997-01-18 15:32:16 +00:00
Jim Meyering
af12dd6260 Add comment re HAVE_PSTAT_GETDYNAMIC. 1997-01-18 15:07:16 +00:00
Jim Meyering
f8e40348be reindent 1997-01-18 13:44:49 +00:00
Jim Meyering
be8f2b0de2 . 1997-01-17 03:01:15 +00:00
Jim Meyering
279f065a06 (AM_FUNC_GETLOADAVG): Check for pstat_getdynamic. 1997-01-17 03:00:45 +00:00
Jim Meyering
c7837e95d2 Fix up indentation a little. 1997-01-15 04:59:07 +00:00
Jim Meyering
9130f4b9d2 Indent cpp-directives to reflect nesting. 1997-01-15 04:55:39 +00:00
Jim Meyering
5aa14aeef0 [!STDC_HEADERS]: Remove unnecessary declaration of free. 1997-01-15 04:42:05 +00:00
Jim Meyering
61976fe88d [!STDC_HEADERS]: Remove unnecessary declaration of free. 1997-01-15 04:41:12 +00:00
Jim Meyering
0868a7d0bd Add struct dir_list and is_ancestor. 1997-01-15 04:35:01 +00:00
Jim Meyering
48be557ad6 . 1997-01-13 04:23:05 +00:00
Jim Meyering
371f45401c Regenerated to reflect renamed tests. 1997-01-13 04:21:30 +00:00
Jim Meyering
9b9213f122 Rename tests so that the associated files
have names that are distinct even on filesystems on which file
names are case insensitive.
1997-01-13 04:20:54 +00:00
Jim Meyering
4c3d7d6a8b . 1997-01-13 04:17:16 +00:00
Jim Meyering
720d1c1c5e Regenerated to reflect renamed tests. 1997-01-13 04:16:57 +00:00
Jim Meyering
0dac1e107c Rename tests so that the associated files
have names that are distinct even on filesystems on which file
names are case insensitive.
1997-01-13 04:16:16 +00:00
Jim Meyering
31a8ced738 . 1997-01-11 22:35:42 +00:00
Jim Meyering
eb07a88b9e . 1997-01-11 04:23:46 +00:00
Jim Meyering
0503b28076 . 1997-01-11 04:21:29 +00:00
Jim Meyering
f45eaa5782 . 1997-01-09 12:38:53 +00:00
Jim Meyering
2f00343264 Remove AC_ISC_POSIX. 1997-01-09 12:24:51 +00:00
Jim Meyering
323c9cfee7 . 1997-01-09 02:35:52 +00:00
Jim Meyering
676a608318 . 1997-01-09 02:35:30 +00:00
Jim Meyering
39d1a08208 . 1997-01-09 02:34:14 +00:00
Jim Meyering
9ca6f19a2d (print_long_format): Cast alloca return value to char*. 1997-01-09 02:33:44 +00:00
Jim Meyering
0acd885d83 . 1997-01-09 00:09:17 +00:00
Jim Meyering
9110853f39 . 1997-01-08 22:40:47 +00:00
Jim Meyering
4ffe108e39 (_getopt_internal): Use _', rather than the (sometimes-)expansion gettext'. 1997-01-08 22:40:00 +00:00
Jim Meyering
7290a43da9 . 1997-01-08 12:29:57 +00:00
Jim Meyering
9cfc701536 . 1997-01-08 04:59:01 +00:00
Jim Meyering
b0a020d50b . 1997-01-08 04:57:06 +00:00
Jim Meyering
36942690e1 . 1997-01-08 04:56:45 +00:00
Jim Meyering
afda328772 . 1997-01-08 04:52:41 +00:00
Jim Meyering
8a752e8696 [_]: Define to gettext also if ENABLE_NLS is defined. 1997-01-08 04:52:00 +00:00
Jim Meyering
8bd5d9e607 . 1997-01-08 04:50:29 +00:00
Jim Meyering
6885aee87b . 1997-01-08 04:49:33 +00:00
Jim Meyering
e4c57a939b (main): Work around failures induced by new version of
getopt.c by not modifying optind before the first getopt_long call
in main.  With suggestions from Ulrich Drepper.
1997-01-08 04:47:56 +00:00
Jim Meyering
b802aa3f55 New (more POSIX compliant) version from GNU libc. 1997-01-08 04:11:29 +00:00
Jim Meyering
8f915aadf8 . 1997-01-06 04:24:52 +00:00
Jim Meyering
662e8b4a03 . 1997-01-06 04:19:50 +00:00
Jim Meyering
3dd86270c6 . 1997-01-06 03:31:03 +00:00
Jim Meyering
ce7c0d5468 . 1997-01-06 03:23:19 +00:00
Jim Meyering
9ae64058d2 . 1997-01-06 03:21:55 +00:00
Jim Meyering
92de89ed2c . 1997-01-05 20:32:57 +00:00
Jim Meyering
5f0b9f1d99 (print_long_format): Detect and handle strftime failure
due to pathologically long strings in locale tables. Patch from Paul Eggert.
(print_long_format): Change references to BIGBUF in use of FPUT macro
to references to BUF.
Use 11 (not 20) bytes for mode string buffer.
1997-01-05 20:32:49 +00:00
Jim Meyering
8ebfd37293 (print_long_format): NUL-terminate line of output. 1997-01-05 15:39:27 +00:00
Jim Meyering
cb6351aa82 (print_long_format): First patch from Paul Eggert. 1997-01-05 15:33:44 +00:00
Jim Meyering
a518e28429 . 1997-01-05 03:32:28 +00:00
Jim Meyering
7de0d8e233 . 1997-01-05 03:24:32 +00:00
Jim Meyering
839c312d49 . 1997-01-05 03:19:46 +00:00
Jim Meyering
783bace690 (print_long_format): Clean up vestiges of legacy
ctime-oriented code.  With internationalization and strftime,
you can't presume that %a expands to a 3-byte string.
Reported by Ross Ridge.
1997-01-05 03:18:49 +00:00
Jim Meyering
31d836282b . 1997-01-04 03:09:44 +00:00
Jim Meyering
bc73cf3351 Fix typo. 1997-01-03 05:10:19 +00:00
Jim Meyering
731cbc77fb . 1997-01-03 05:05:45 +00:00
Jim Meyering
2bd16e646e . 1997-01-03 03:24:22 +00:00
Jim Meyering
7f2c13e703 . 1997-01-03 03:20:24 +00:00
Jim Meyering
635a7c3186 (init_fps): Initialize lines_stored field in three places.
This avoids uninitialized memory reads in close_file.
1997-01-03 03:20:14 +00:00
Jim Meyering
42d1927306 . 1997-01-03 03:16:59 +00:00
Jim Meyering
ba246b0f36 (EXTRA_DIST): Add getgroups.c. 1997-01-03 03:16:29 +00:00
Jim Meyering
13ff080b78 . 1997-01-02 03:13:49 +00:00
Jim Meyering
06a5782edd . 1997-01-02 02:21:58 +00:00
Jim Meyering
12f377da25 . 1997-01-01 23:35:31 +00:00
Jim Meyering
c423a2d74a . 1996-12-31 16:18:06 +00:00
Jim Meyering
04a1a572f4 . 1996-12-30 05:45:23 +00:00
Jim Meyering
1ba3bd3896 (init_header): Plug a small memory leak by using stack
rather than heap for a 15-byte temporary buffer.
1996-12-30 05:43:58 +00:00
Jim Meyering
fb59a28b16 . 1996-12-30 04:11:13 +00:00
Jim Meyering
ab48b17dca . 1996-12-29 20:34:21 +00:00
Jim Meyering
d2ca2163c6 . 1996-12-29 03:47:51 +00:00
Jim Meyering
5ae342e1a9 Two problems fixed by these changes from Joakim Rosqvist.
Quoting Joakim:
1) The "total" number and the size of the first file as
output from 'ls --color -s' did not get colorized according
to the "no"-argument in LS_COLORS. Fixed by adding a function
prep_non_filename_text which prints the C_LEFT C_NORM C_RIGHT
strings (or C_END). It is called from main before any text is
output, and from print_name_with_quoting after having output a
colorized filename.
2) If the "no"-argument of LS_COLORS is set, the terminal will be
set to print in that color after ls exits. The man-pages suggests
setting "no" and "fi" to the terminals default colors to avoid
the problem, but that would mean I can't use anything but the
default color for regular files and non-filename text. Fixed by
outputting C_LEFT immediately followed by C_RIGHT right before
exit, which restores the default color.
1996-12-29 03:47:34 +00:00
Jim Meyering
6c635d1f27 . 1996-12-29 01:48:20 +00:00
Jim Meyering
42640f71df Correct obsolete comment referring to macro that is now ls_mode. 1996-12-28 20:32:39 +00:00
Jim Meyering
0b83b3090b . 1996-12-28 16:04:01 +00:00
Jim Meyering
4b583d1691 . 1996-12-28 13:30:51 +00:00
Jim Meyering
a182aa4e5a . 1996-12-28 06:27:35 +00:00
Jim Meyering
22ca9b17a5 . 1996-12-28 06:07:39 +00:00
Jim Meyering
04916b80de . 1996-12-28 06:06:51 +00:00
Jim Meyering
d7d7ae76b2 . 1996-12-28 06:05:51 +00:00
Jim Meyering
da7809f65c (TAB_WIDTH): Cleaned up definition and renamed from tab_width.
(POS_AFTER_TAB): Cleaned up definition and renamed from pos_after_tab.
1996-12-28 06:04:36 +00:00
Jim Meyering
b7d3a68ce5 . 1996-12-28 05:34:01 +00:00
Jim Meyering
8794c292e7 Fix a couple of thinkos and typos.
Now it works with pr's tests, too.
1996-12-28 05:30:46 +00:00
Jim Meyering
ece3b1d144 . 1996-12-28 05:27:53 +00:00
Jim Meyering
8087dd5668 Regenerate list of explicit files, this time with duplicates removed. 1996-12-28 05:27:25 +00:00
Jim Meyering
1a622aa2d9 . 1996-12-28 05:15:56 +00:00
Jim Meyering
1ea9952168 . 1996-12-28 05:14:37 +00:00
Jim Meyering
4df74fe308 . 1996-12-28 05:12:09 +00:00
Jim Meyering
68545c98ed . 1996-12-28 04:58:34 +00:00
Jim Meyering
4650315342 Indent cpp directives. 1996-12-28 04:58:26 +00:00
Jim Meyering
fbfde91f6a [!WTMP_FILE]: Provide default path.
(UTMP_FILE) [UTMPX_FILE]: Use UTMPX_FILE in favor of UTMP_FILE.
Patch from Kaveh R. Ghazi.
1996-12-28 04:44:35 +00:00
Jim Meyering
e3f1d80dd9 Rewrite the test so that systems lacking
getgroups don't try to use the supplied replacement function --
that depends on the existence of such a function.
1996-12-28 02:59:25 +00:00
Jim Meyering
5e58599e6e (usage): Break long string literal into two separate
printf statements to accomodate default maximum of 2048 characters
for Irix-4.0.5.  Reported by Kaveh Ghazi.
1996-12-28 02:28:56 +00:00
Jim Meyering
c22036ab86 . 1996-12-28 00:22:01 +00:00
Jim Meyering
34ffd87f30 Make 'em arrays of references, not arrays of arrays. 1996-12-28 00:19:56 +00:00
Jim Meyering
cea704d6da . 1996-12-28 00:11:07 +00:00
Jim Meyering
ddf8459662 . 1996-12-27 23:31:41 +00:00
Jim Meyering
8320e65164 Add comment.
Rename local, ng to n_groups.
1996-12-27 03:36:53 +00:00
Jim Meyering
f42460fb09 . 1996-12-24 19:28:22 +00:00
Jim Meyering
24a118665e . 1996-12-23 23:58:14 +00:00
Jim Meyering
3bcffe04d7 revert last change 1996-12-23 23:57:56 +00:00
Jim Meyering
79523152dd remove support for --string option 1996-12-23 23:57:09 +00:00
Jim Meyering
35aaa568cd . 1996-12-23 05:59:33 +00:00
Jim Meyering
85da146bd2 . 1996-12-23 05:59:12 +00:00
Jim Meyering
ae8ee650ea . 1996-12-23 05:46:00 +00:00
Jim Meyering
4a11d01711 . 1996-12-23 05:41:42 +00:00
Jim Meyering
f76a4b618e . 1996-12-23 05:41:19 +00:00
Jim Meyering
c8c91b5e20 . 1996-12-23 05:33:05 +00:00
Jim Meyering
70155d8013 (EXTRA_DIST): Add README. 1996-12-23 05:31:46 +00:00
Jim Meyering
af14a04c19 . 1996-12-23 05:26:10 +00:00
Jim Meyering
6e62afaaed . 1996-12-23 05:15:44 +00:00
Jim Meyering
9190f77006 . 1996-12-23 05:14:55 +00:00
Jim Meyering
5d845a1678 . 1996-12-22 19:09:49 +00:00
Jim Meyering
f6c32178c7 . 1996-12-22 14:20:27 +00:00
Jim Meyering
ff5cd3f6a3 . 1996-12-22 14:18:09 +00:00
Jim Meyering
b3d8117527 . 1996-12-22 14:17:20 +00:00
Jim Meyering
103713c42b . 1996-12-22 14:15:37 +00:00
Jim Meyering
c84fb64144 . 1996-12-22 14:14:01 +00:00
Jim Meyering
8e02fb10ab Use same framework as other tests. 1996-12-22 14:12:06 +00:00
Jim Meyering
1b47ed2714 Use test_vector, not array @t. 1996-12-22 14:09:10 +00:00
Jim Meyering
dcd02c8008 Use test_vector, not array @t. 1996-12-22 14:04:47 +00:00
Jim Meyering
a80c49322b . 1996-12-22 03:32:51 +00:00
Jim Meyering
3982e9cdf8 . 1996-12-22 03:30:23 +00:00
Jim Meyering
a5b6fae599 . 1996-12-22 03:25:05 +00:00
Jim Meyering
b660d78cf5 . 1996-12-22 03:24:25 +00:00
Jim Meyering
c86883a62a . 1996-12-22 03:03:48 +00:00
Jim Meyering
e36197cd8f . 1996-12-22 02:51:34 +00:00
Jim Meyering
2185c1f3d8 Clone the Makefile.am from join-test.
Replace only the definition of $x and the auto-generated lists of test files.
1996-12-22 02:51:17 +00:00
Jim Meyering
48a76e855c Clone the Makefile.am from join-test.
Replace only the definition of $x and the auto-generated lists of test files.
1996-12-22 02:50:34 +00:00
Jim Meyering
19b5a4f761 Clone the Makefile.am from join-test.
Replace only the definition of $x and the auto-generated lists of
test files.
1996-12-22 02:50:15 +00:00
Jim Meyering
9dbd283b1e use 77 as max line len when wrapping 1996-12-22 02:46:14 +00:00
Jim Meyering
4376f9f2ce . 1996-12-22 02:44:12 +00:00
Jim Meyering
37fea371b7 . 1996-12-22 02:34:14 +00:00
Jim Meyering
bb02f48670 . 1996-12-22 02:33:17 +00:00
Jim Meyering
64cd458e0a Add @MAINT@-protected rule for verifying that Makefile.am is
consistent with Test.pm.
1996-12-22 02:32:56 +00:00
Jim Meyering
bc9aded4b9 . 1996-12-22 02:32:01 +00:00
Jim Meyering
a611c6cbf6 (wrap): New function.
Use it.
1996-12-21 22:16:03 +00:00
Jim Meyering
68c33eea03 . 1996-12-21 18:49:14 +00:00
Jim Meyering
fec6a430da update from GNU libc 1996-12-21 13:51:26 +00:00
Jim Meyering
1266fc26ee . 1996-12-21 04:21:29 +00:00
Jim Meyering
41a41dd48e Replace hard-coded /etc/wtmp with WTMP_FILE. Suggestion from Eivind. 1996-12-21 04:14:45 +00:00
Jim Meyering
e59e2e803c . 1996-12-21 04:14:24 +00:00
Jim Meyering
52c7e3147e . 1996-12-21 04:09:35 +00:00
Jim Meyering
8829551700 . 1996-12-21 04:09:07 +00:00
Jim Meyering
e95fe088e1 (usage): Say that UTMP_FILE is the default FILE
rather than hard-coding /etc/utmp.
1996-12-21 04:08:25 +00:00
Jim Meyering
e13281014a (usage): Tweak --usage text. 1996-12-21 03:59:26 +00:00
Jim Meyering
aac56cabe4 . 1996-12-21 03:43:47 +00:00
Jim Meyering
df5f33a5bf . 1996-12-21 03:32:03 +00:00
Jim Meyering
0799786a33 . 1996-12-21 03:21:34 +00:00
Jim Meyering
6621f0a9a9 . 1996-12-21 03:20:48 +00:00
Jim Meyering
d5b9b29ac6 . 1996-12-21 03:15:44 +00:00
Jim Meyering
022a19b21f . 1996-12-21 02:03:14 +00:00
Jim Meyering
12133d7f01 . 1996-12-21 01:59:01 +00:00
Jim Meyering
58dfd6b442 copied from automake-1.1l 1996-12-21 01:56:50 +00:00
Jim Meyering
5fc47138b1 broken out of ../acinclude.m4 1996-12-21 01:50:50 +00:00
Jim Meyering
4a2b289e7c Update from GNU libc. 1996-12-21 01:40:43 +00:00
Jim Meyering
bab072f3aa . 1996-12-21 01:29:41 +00:00
Jim Meyering
8679e372cd . 1996-12-20 06:13:37 +00:00
Jim Meyering
b0690ba414 . 1996-12-20 06:11:59 +00:00
Jim Meyering
ed354b6490 (MAINTAINERCLEANFILES): Use $(in1) and $(in2), not $(in). 1996-12-20 06:11:50 +00:00
Jim Meyering
81d1fa5cb6 New option: --list. Generate lists of files used/generated. 1996-12-20 06:09:45 +00:00
Jim Meyering
421e75544b . 1996-12-20 05:48:34 +00:00
Jim Meyering
7466f41075 . 1996-12-20 05:46:47 +00:00
Jim Meyering
1e7d4b9c70 Adapted for new mk-script.pl. 1996-12-20 05:46:27 +00:00
Jim Meyering
6a13b75511 . 1996-12-20 05:45:24 +00:00
Jim Meyering
ebefd435aa . 1996-12-20 05:41:43 +00:00
Jim Meyering
b3335ab809 remove $nl. 1996-12-20 05:35:26 +00:00
Jim Meyering
d293e5f03c Adapted for new mk-script.pl. 1996-12-20 05:35:01 +00:00
Jim Meyering
0a470f01de Rewrite to be more general -- so it can be used for join, cut, sort, tr,
and soon, pr test suites.
1996-12-20 05:33:17 +00:00
Jim Meyering
b181d31372 . 1996-12-20 03:40:34 +00:00
Jim Meyering
b3a49ee8d0 . 1996-12-19 13:53:16 +00:00
Jim Meyering
35b886ad7b . 1996-12-19 05:21:47 +00:00
Jim Meyering
cecde31171 (ORPHAN): By default, color orphans red on a black background. 1996-12-19 05:21:40 +00:00
Jim Meyering
ae6c43a3ab (usage): Remove --print-data-base.
Now only --print-database remains.  Although it wasn't documented,
--print-data-base was still accepted.  But it made `--p', `--print',
`--print-data', etc. ambiguous.
1996-12-19 05:20:06 +00:00
Jim Meyering
17432bd066 . 1996-12-19 05:16:03 +00:00
Jim Meyering
c835f92a61 (gobble_file): Stat symlinks also when printing with
color and set linkok to reflect existence of referent.
Patches from Joakim Rosqvist, James Antill, and Jesse Thilo.
1996-12-19 05:15:34 +00:00
Jim Meyering
89b765e32c . 1996-12-19 05:14:59 +00:00
Jim Meyering
3752e13942 . 1996-12-19 04:23:21 +00:00
Jim Meyering
858afc04d2 [HAVE_PATHS_H]: Include <paths.h>.
[_PATH_DEFPATH]: Use this to define DEFAULT_LOGIN_PATH.
[_PATH_DEFPATH_ROOT]: Use this to define DEFAULT_ROOT_LOGIN_PATH.
From Rik Faith.
1996-12-19 04:20:53 +00:00
Jim Meyering
5fecd9e4d5 . 1996-12-19 02:35:10 +00:00
Jim Meyering
ae5ee331f1 run cpp-indent 1996-12-18 16:56:46 +00:00
Jim Meyering
954c7bc4cc another new version ... 1996-12-18 16:54:48 +00:00
Jim Meyering
625dc74361 . 1996-12-18 13:57:32 +00:00
Jim Meyering
b26beb4996 . 1996-12-18 13:53:00 +00:00
Jim Meyering
0b3d661480 in progress... 1996-12-18 05:29:52 +00:00
Jim Meyering
33448d128a . 1996-12-18 03:30:59 +00:00
Jim Meyering
b3ef6f599d . 1996-12-18 03:30:30 +00:00
Jim Meyering
72f95044eb (ISDIGIT): Replace with smaller, faster edition
that yields nonzero only on ASCII digits.
(ISDIGIT_LOCALE): New macro, with same meaning that ISDIGIT
used to have.  From Paul Eggert.
1996-12-18 03:30:20 +00:00
Jim Meyering
859f8587f8 add blank line. 1996-12-18 03:28:09 +00:00
Jim Meyering
24e15328df . 1996-12-18 03:23:08 +00:00
Jim Meyering
357c53621f (ISDIGIT): Replace with smaller, faster edition
that yields nonzero only on ASCII digits.
(ISDIGIT_LOCALE): New macro, with same meaning that ISDIGIT
used to have.  From Paul Eggert.
1996-12-18 03:22:56 +00:00
Jim Meyering
fd688bcc5f . 1996-12-18 03:14:58 +00:00
Jim Meyering
e8c6c8175b . 1996-12-18 03:13:27 +00:00
Jim Meyering
561e4c139e (ROOT_CHOWN_AFFECTS_SYMLINKS): New macro.
(DO_CHOWN): Take an additional parameter.
(LINK_CHOWN): Remove macro.
(copy): When preserving owner and group of a symlink, use
chown only if ROOT_CHOWN_AFFECTS_SYMLINKS and EUID == 0.
Otherwise, the chown would affect the file referenced through the symlink.
1996-12-18 03:13:09 +00:00
Jim Meyering
507288d2c7 . 1996-12-18 01:25:50 +00:00
Jim Meyering
6c47524481 (.pl): Make generated file read-only so
I don't accidentally modify it instead of the one with the .pl suffix.
1996-12-18 01:25:45 +00:00
Jim Meyering
300c151b8b . 1996-12-18 01:22:32 +00:00
Jim Meyering
3c7e9fec08 Update from GNU libc. 1996-12-18 00:21:38 +00:00
Jim Meyering
7235fb47cc . 1996-12-17 23:07:15 +00:00
Jim Meyering
8ef2abf7e9 . 1996-12-17 22:44:57 +00:00
Jim Meyering
5e55e49972 . 1996-12-17 21:54:29 +00:00
Jim Meyering
48a255beb0 . 1996-12-17 05:05:45 +00:00
Jim Meyering
17a2ec94a8 . 1996-12-16 00:40:55 +00:00
Jim Meyering
e7f8503138 . 1996-12-16 00:39:25 +00:00
Jim Meyering
f789ddbdda . 1996-12-15 22:17:29 +00:00
Jim Meyering
1f1bd53b86 . 1996-12-15 20:36:59 +00:00
Jim Meyering
3a2afe3311 apply spec_to_list to expected file, too. 1996-12-15 20:35:32 +00:00
Jim Meyering
20b960db10 . 1996-12-15 20:29:09 +00:00
Jim Meyering
8fd3e8664b (spec_to_list): New function -- factored out... 1996-12-15 20:27:12 +00:00
Jim Meyering
1b25f1c2cd begin generalization -- now it works with two-file input-specs 1996-12-15 20:09:13 +00:00
Jim Meyering
8569e32ec8 . 1996-12-15 20:07:24 +00:00
Jim Meyering
1321f30e73 . 1996-12-14 20:58:17 +00:00
Jim Meyering
290ee99712 . 1996-12-14 05:24:48 +00:00
Jim Meyering
3008ad90f4 twiddle FSF address in comment. 1996-12-14 05:23:41 +00:00
Jim Meyering
8c5b30bc1e (get_format_width, get_format_prec): Avoid
unnecessary comparison of digit to '\0'.
1996-12-14 05:22:46 +00:00
Jim Meyering
f0fa287b4f (digits): Remove; subsumed by new ISDIGIT.
(inittables): Remove initialization of `digits'.
(fraccompare, numcompare, main): Use ISDIGIT (x) instead of digits[x].
(fraccompare, numcompare): Avoid casts to unsigned char that are no
longer needed.
1996-12-14 05:22:17 +00:00
Jim Meyering
4ecb3b28f1 (is_char_class_member): Use ISDIGIT_LOCALE instead of
ISDIGIT to test for characters in CC_DIGIT class.
1996-12-14 05:21:51 +00:00
Jim Meyering
ea93e0b7ad . 1996-12-13 23:41:12 +00:00
Jim Meyering
7603401c86 . 1996-12-13 05:43:35 +00:00
Jim Meyering
90d97b9703 (usage): Clarify description of -u option.
From Karl Berry.
1996-12-13 05:43:26 +00:00
Jim Meyering
4091022393 . 1996-12-13 04:35:00 +00:00
Jim Meyering
338061e307 . 1996-12-13 03:43:44 +00:00
Jim Meyering
6a99b4cc40 . 1996-12-13 03:07:23 +00:00
Jim Meyering
86d6c36d09 (IN_CTYPE_DOMAIN): Rename from ISASCII.
(ISDIGIT): New definition from Paul Eggert.
This one evaluates its argument exactly once.
(yylex): Move increment out of ISALPHA argument.  Use a
comma-expression instead.
1996-12-13 03:05:00 +00:00
Jim Meyering
a7f5043de8 (usage): Update bug-reporting address. 1996-12-13 02:47:33 +00:00
Jim Meyering
5110583f3e . 1996-12-13 02:47:22 +00:00
Jim Meyering
813c8e8bb6 .. 1996-12-12 13:19:43 +00:00
Jim Meyering
7d72c942bb . 1996-12-12 01:34:44 +00:00
Jim Meyering
f17cc2e29c . 1996-12-12 01:34:08 +00:00
Jim Meyering
4f4111709c . 1996-12-12 01:33:13 +00:00
Jim Meyering
beed39a03c . 1996-12-11 06:08:42 +00:00
Jim Meyering
d5f09a0fd1 . 1996-12-11 05:38:45 +00:00
Jim Meyering
3692f57123 . 1996-12-11 04:49:30 +00:00
Jim Meyering
d3d5565035 [_POSIX_VERSION]: Don't declare wait. That declaration
conflicted with the one on i386-pc-isc3.0, now that I've removed the
AC_ISC_POSIX macro and _POSIX_VERSION is no longer defined.
1996-12-11 04:48:51 +00:00
Jim Meyering
3e39947b49 . 1996-12-11 04:38:33 +00:00
Jim Meyering
c8a3fc9bed . 1996-12-11 04:37:22 +00:00
Jim Meyering
d43b4dcaf8 (EXTRA_DIST): Add strftime.c to appease automake.
Although it's not used yet, it'll be used by ls's (to-be-done)
--format=FORMAT option.
1996-12-11 04:34:37 +00:00
Jim Meyering
54f9b87874 . 1996-12-10 22:40:16 +00:00
Jim Meyering
1c28626053 . 1996-12-10 21:37:09 +00:00
Jim Meyering
6c674869b3 . 1996-12-10 21:32:54 +00:00
Jim Meyering
888a5250a5 . 1996-12-10 21:20:41 +00:00
Jim Meyering
d468c227b0 renamed from build-script.pl 1996-12-10 21:16:48 +00:00
Jim Meyering
52314f2cd8 . 1996-12-10 21:16:47 +00:00
Jim Meyering
8d2b4f9786 . 1996-12-10 21:16:08 +00:00
Jim Meyering
b44299cfd7 mk-script.pl: Rename from build-script.pl. 1996-12-10 21:11:55 +00:00
Jim Meyering
5ea5ea9d2c . 1996-12-10 20:59:35 +00:00
Jim Meyering
7d21f2f4d0 . 1996-12-10 20:59:15 +00:00
Jim Meyering
73db5c12b9 . 1996-12-10 20:49:27 +00:00
Jim Meyering
53ac4c028b (EXTRA_DIST): Add mktime.c.
Reported by Thomas Bushnell.
1996-12-10 20:48:12 +00:00
Jim Meyering
916a46a980 . 1996-12-10 13:04:48 +00:00
Jim Meyering
8b59538e69 . 1996-12-10 13:02:55 +00:00
Jim Meyering
eb34cbfc13 . 1996-12-10 13:01:32 +00:00
Jim Meyering
4360d0f52d . 1996-12-10 06:14:52 +00:00
Jim Meyering
e74a22ebb7 . 1996-12-10 06:12:41 +00:00
Jim Meyering
fcc65666b5 . 1996-12-10 06:11:50 +00:00
Jim Meyering
a16b0a142f Include config.h.
[!HAVE_BCOPY && HAVE_MEMCPY && !defined (bcopy)]: Define bcopy
in terms of memcpy.  Reported by Marcus Daniels.
1996-12-10 05:22:12 +00:00
Jim Meyering
5c39a3b65b . 1996-12-10 05:10:56 +00:00
Jim Meyering
4885753994 . 1996-12-10 04:54:02 +00:00
Jim Meyering
156de2ae7a . 1996-12-10 04:46:16 +00:00
Jim Meyering
40f8a7ad2b . 1996-12-10 04:43:44 +00:00
Jim Meyering
8f477a9072 (Convert): Don't reject all dates in 2038.
Some fit in 31 bits.
1996-12-10 04:34:18 +00:00
Jim Meyering
d5ce3b1c3c . 1996-12-10 04:27:12 +00:00
Jim Meyering
54d0c0bb5a . 1996-12-10 04:26:40 +00:00
Jim Meyering
09c73133aa . 1996-12-10 03:17:10 +00:00
Jim Meyering
17fe725ebb add a space 1996-12-10 03:17:01 +00:00
Jim Meyering
c02f8ed500 revert last change. 1996-12-10 03:16:36 +00:00
Jim Meyering
90b901cd1c . 1996-12-10 03:01:43 +00:00
Jim Meyering
73c7efa3ee . 1996-12-10 02:58:00 +00:00
Jim Meyering
e155f4bf01 [HAVE_TZNAME || defined __LIBC]: Declare tzname. 1996-12-10 02:46:42 +00:00
Jim Meyering
1d3c57118b (find_mount_point): Convert from K&R style header to ANSI.
Patch from Kaveh Ghazi.
1996-12-10 00:28:02 +00:00
Jim Meyering
195b5ebbe7 . 1996-12-10 00:25:00 +00:00
Jim Meyering
ba788477a8 Include config.h before testing for TERMIOS_NEEDS_XOPEN_SOURCE.
Patch from Karl Heuer.
1996-12-10 00:20:17 +00:00
Jim Meyering
6846ffa9d9 . 1996-12-09 23:54:45 +00:00
Jim Meyering
4fb3a6f765 [HAVE_TZNAME]: Declare tzname.
Patch from Karl Heuer.
1996-12-09 13:02:21 +00:00
Jim Meyering
5460d4a9c8 . 1996-12-09 04:45:08 +00:00
Jim Meyering
7f5d303c61 . 1996-12-09 03:13:15 +00:00
Jim Meyering
a65bae921e . 1996-12-09 03:12:38 +00:00
Jim Meyering
89cf1fc2cf . 1996-12-08 13:31:12 +00:00
Jim Meyering
a13947a7a3 . 1996-12-08 13:30:49 +00:00
Jim Meyering
ddc2531899 . 1996-12-08 13:29:07 +00:00
Jim Meyering
80729c5841 (noinst_LIBRARIES): Rename to lib?u.a as per
new automake requirement.
Rename ?u_* variables to lib?u_a_*.
1996-12-08 13:28:43 +00:00
Jim Meyering
83ada8596c . 1996-12-08 06:09:29 +00:00
Jim Meyering
2a1d6f9b5f (get_win_size): Rename formal parameter from fileno to FD. 1996-12-08 06:09:21 +00:00
Jim Meyering
f2ac53d4ea . 1996-12-08 05:56:37 +00:00
Jim Meyering
f31b9b9fee . 1996-12-08 05:35:20 +00:00
Jim Meyering
acc8601b65 (main): Call setlocale, bindtextdomain, and textdomain.
From Michel Robitaille.
1996-12-08 04:24:35 +00:00
Jim Meyering
8dd5415e02 . 1996-12-08 04:24:26 +00:00
Jim Meyering
8a4da0e3ff . 1996-12-07 19:54:02 +00:00
Jim Meyering
95f9b268e9 . 1996-12-07 19:45:44 +00:00
Jim Meyering
d2ad9d8cf4 . 1996-12-07 19:25:40 +00:00
Jim Meyering
0ccd71dd94 (init_header): Fix typo: cons tchar' -> const char'. From Roland. 1996-12-07 19:12:44 +00:00
Jim Meyering
1c7be9d1bb . 1996-12-07 19:03:23 +00:00
Jim Meyering
c9893d18e3 [__SVR4]: Define SVR4.
Remove duplicate `|| defined(SVR4)' disjunct guarding the
#define KERNEL_FILE "/unix" definiton.
1996-12-07 19:03:13 +00:00
Jim Meyering
fb1f09c76e . 1996-12-07 18:57:11 +00:00
Jim Meyering
b1cc662215 (strftime): Remove " %Z" part of format for %c. Suggestion from Paul Eggert. 1996-12-07 18:52:54 +00:00
Jim Meyering
f86a3c16d3 patch from Roland Huebner 1996-12-07 05:47:28 +00:00
Jim Meyering
6d244887aa . 1996-12-06 12:39:39 +00:00
Jim Meyering
f86df3250c (init_store_cols): Put parens around ... ? ... : ... expr. 1996-12-05 05:01:30 +00:00
Jim Meyering
65a915647c Use NULL instead of e.g., `(char *) 0'. 1996-12-05 04:59:26 +00:00
Jim Meyering
2882d4477d (init_header): Move dcl of FMT into block where it's used. 1996-12-05 04:55:51 +00:00
Jim Meyering
2793223907 Reindent with -TCOLUMN.
(main): Add two sets of curly braces for readability.
1996-12-05 04:49:12 +00:00
Jim Meyering
a5937bbc71 (usage): Add \n\ at end of first line. 1996-12-05 04:43:19 +00:00
Jim Meyering
d0cac59c72 (separator_string): dcl parameter const.
Add __P in fwd dcl.
1996-12-05 04:35:39 +00:00
Jim Meyering
ed0923a11c Apply big patch (patch-20) from Roland Huebner. 1996-12-05 04:33:33 +00:00
Jim Meyering
42096600e3 . 1996-12-05 03:18:34 +00:00
Jim Meyering
523fb680f6 . 1996-12-05 03:16:24 +00:00
Jim Meyering
3f36b30756 . 1996-12-05 03:13:39 +00:00
Jim Meyering
4a1512e4b2 (main) [!POSIXLY_CORRECT]: Allow the identity mappings:
[:upper:] to [:upper:] and [:lower:] to [:lower:].
(main) [POSIXLY_CORRECT]: Give a more specific diagnostic for the
identity mappings [:upper:] to [:upper:] and [:lower:] to [:lower:].
(class_ok): Update table to reflect that tr now allows these
identity mappings.
1996-12-05 03:13:33 +00:00
Jim Meyering
ad44ac84c8 (print_color_indicator): Initialize EXT to NULL. 1996-12-04 01:21:28 +00:00
Jim Meyering
c7975ba578 . 1996-12-03 03:02:45 +00:00
Jim Meyering
62a92dec57 . 1996-12-03 02:58:59 +00:00
Jim Meyering
a37e7e6b78 . 1996-12-03 02:57:47 +00:00
Jim Meyering
d5718682cc . 1996-12-03 02:46:09 +00:00
Jim Meyering
81e3dc9283 . 1996-12-03 02:45:07 +00:00
Jim Meyering
daa3f22091 . 1996-12-03 02:35:01 +00:00
Jim Meyering
b87899c834 (print_color_indicator): Check the file's suffix only
if it's a regular file.
(print_type_indicator): Use S_IXUGO instead of writing out
(S_IEXEC | S_IXGRP | S_IXOTH).
(length_of_file_name_and_frills): Likewise.
1996-12-03 02:33:09 +00:00
Jim Meyering
4accfeb4e0 [!S_IXUGO] (S_IXUGO): Define it. 1996-12-03 02:32:44 +00:00
Jim Meyering
377b0c7942 . 1996-12-01 19:21:49 +00:00
Jim Meyering
4331f5f978 . 1996-12-01 19:18:08 +00:00
Jim Meyering
fb19eec511 . 1996-12-01 19:17:36 +00:00
Jim Meyering
b712dcba25 . 1996-12-01 19:17:07 +00:00
Jim Meyering
caad57f5d0 . 1996-12-01 19:15:10 +00:00
Jim Meyering
807b8b05c2 (date): Interpret the date, L/M/N, as YYYY/MM/DD
if L >= 1000, otherwise as MM/DD/YY.  With this change,
date --date=DATE accepts dates like those in an RCS log listing.
1996-12-01 19:15:03 +00:00
Jim Meyering
5f3fa7a284 . 1996-12-01 19:14:43 +00:00
Jim Meyering
c1032f08e5 . 1996-12-01 04:12:08 +00:00
Jim Meyering
0aa0b007b0 Update from GNU libc. 1996-12-01 04:08:17 +00:00
Jim Meyering
c6973beeec Change `:' in text of menu to <colon> to avoid problems
with M-x info follow-node.
1996-11-30 14:21:01 +00:00
Jim Meyering
d99d106c55 . 1996-11-30 05:37:43 +00:00
Jim Meyering
61f8fa059c . 1996-11-30 04:34:58 +00:00
Jim Meyering
9279ffdf29 . 1996-11-30 04:33:36 +00:00
Jim Meyering
0682a5efe9 (copy_file): Allow installation from non-directory (rather than only regular)
files.  Suggestion from Charles Karney.
1996-11-30 04:33:30 +00:00
Jim Meyering
dc68073b21 . 1996-11-30 04:20:37 +00:00
Jim Meyering
78c6df8fb8 (uname): Document --processor (-p). 1996-11-30 04:20:01 +00:00
Jim Meyering
f03282e857 (main) [HAVE_SYSINFO && SI_ARCHITECTURE]: Support -p (print processor type).
(usage): Document it.
1996-11-30 04:18:19 +00:00
Jim Meyering
7e9e29f392 (main): Accept -F as a synonym for -t for compatibility
with Solaris.  From Peter Eriksson.
1996-11-30 04:08:02 +00:00
Jim Meyering
28f8f53bb6 . 1996-11-30 04:07:32 +00:00
Jim Meyering
ab8182fa71 . 1996-11-30 03:21:11 +00:00
Jim Meyering
d740a98d4a (main): Close stdout and check result, in case any deferred writes fail.
Use EXIT_SUCCESS and EXIT_FAILURE in exit and usage calls.
1996-11-30 03:20:48 +00:00
Jim Meyering
40e0727bed . 1996-11-30 03:08:46 +00:00
Jim Meyering
a387531246 . 1996-11-28 23:50:17 +00:00
Jim Meyering
be44044a29 (find_mount_point): Use strip_trailing_slashes and dirname
instead of open-coding them.  When given FILE containing no slashes,
chdir to the directory containing it (the current directory) rather
than to `..'.
1996-11-28 23:50:13 +00:00
Jim Meyering
ae9d905134 . 1996-11-28 23:18:45 +00:00
Jim Meyering
bcb8610977 (get_fs_usage): If DISK is 0 and we needed to use
it, return -1 with 0 in ERRNO.

From Miles.
1996-11-28 19:37:01 +00:00
Jim Meyering
ac66871c65 (find_mount_point): Use save_cwd/restore_cwd.
"save-cwd.h": New include.

(show_dev): Deal with null values for DISK and FSTYPE,
including interpreting special 0 errno return from get_fs_usage.
(show_point): Don't fail if we can't find a mount entry for POINT,
just call show_dev with 0 values and let it fail if necessary.
(main): Require a non-zero MOUNT_LIST only if showing all filesystems.
(find_mount_point): New function.
(xgetcwd): New declaration.

All from Miles.
1996-11-28 19:35:33 +00:00
Jim Meyering
3fa102417e . 1996-11-28 06:32:39 +00:00
Jim Meyering
59b58a58f6 . 1996-11-28 06:30:36 +00:00
Jim Meyering
f46bcc918b . 1996-11-27 05:24:41 +00:00
Jim Meyering
784928401d merge with 0.10.25 1996-11-27 05:13:21 +00:00
Jim Meyering
1a62ae1a5c . 1996-11-27 05:06:09 +00:00
Jim Meyering
952a4436eb (fraccompare): Add explicit int' in register' dcl, to
avoid new warning from gcc.
1996-11-27 05:05:52 +00:00
Jim Meyering
a098f5b9b6 . 1996-11-27 05:04:48 +00:00
Jim Meyering
5d691b7b74 . 1996-11-27 05:00:15 +00:00
Jim Meyering
84ee79c745 Fix Franc,ois' name. From Karl B. 1996-11-25 14:36:18 +00:00
Jim Meyering
4b091b8a14 Fix Franc,ois' name. From Karl B. 1996-11-25 14:35:45 +00:00
Jim Meyering
c51d0a5a9b . 1996-11-25 04:45:59 +00:00
Jim Meyering
29ea1d5db9 . 1996-11-25 04:42:37 +00:00
Jim Meyering
b910477e63 . 1996-11-25 04:42:15 +00:00
Jim Meyering
2f74178b8b . 1996-11-25 03:15:46 +00:00
Jim Meyering
fe171f7d8f . 1996-11-25 03:12:57 +00:00
Jim Meyering
b0244698f9 . 1996-11-25 03:10:03 +00:00
Jim Meyering
7c0ec3e569 . 1996-11-25 03:09:33 +00:00
Jim Meyering
4677a7e42f (t): Add names of those 5 tests. 1996-11-25 03:09:22 +00:00
Jim Meyering
520f4efee9 Add 5 tests to exercize just-fixed code. 1996-11-25 03:08:52 +00:00
Jim Meyering
0d43bad18e (set_ordering): Revert 1994-05-04 change to this function
so that blanks are not unconditionally ignored when computing start
and end positions for numeric keys.  Reported by Markus Demleitner.
1996-11-25 03:07:52 +00:00
Jim Meyering
0dd914edd1 . 1996-11-24 18:11:22 +00:00
Jim Meyering
161db26bd1 (get_win_size): Take a FILENO parameter rather than
trying to get a size from both stdin and stdout.
Update callers.
Use STDIN_FILENO and STDOUT_FILENO instead of literal 0, 1.
1996-11-24 18:06:35 +00:00
Jim Meyering
a992c841ae Big patch from Karl Heuer. FIXME: fill in details 1996-11-24 17:03:24 +00:00
Jim Meyering
9299cf1e78 (EXTRA_DIST): Add getline.c now that getline
isn't mentioned in AC_REPLACE_FUNCS.
1996-11-24 05:38:29 +00:00
Jim Meyering
970083559f . 1996-11-24 05:27:21 +00:00
Jim Meyering
459453639e . 1996-11-24 05:21:39 +00:00
Jim Meyering
0e0ae2b348 remove trailing blanks 1996-11-24 03:05:11 +00:00
Jim Meyering
cb7fcc32ff remove trailing blanks 1996-11-24 03:04:12 +00:00
Jim Meyering
d7e8ccb6f3 (usage): Remove trailing pair of blanks. 1996-11-24 03:00:37 +00:00
Jim Meyering
a811674834 . 1996-11-23 22:16:31 +00:00
Jim Meyering
fa9f16326a (usage): Alphabetize option descriptions the way sort -f would. 1996-11-23 22:16:19 +00:00
Jim Meyering
c13ff9b8bc . 1996-11-23 22:13:55 +00:00
Jim Meyering
bded355394 (usage): Alphabetize option descriptions the way sort -f would. 1996-11-23 22:13:00 +00:00
Jim Meyering
f43bd3fafc . 1996-11-23 22:10:08 +00:00
Jim Meyering
e298f1f300 (usage): Alphabetize options like sort -f would. 1996-11-23 22:06:55 +00:00
Jim Meyering
8102404465 . 1996-11-23 05:04:56 +00:00
Jim Meyering
bef51e36a4 . 1996-11-23 04:22:46 +00:00
Jim Meyering
5425625fb3 . 1996-11-23 04:16:43 +00:00
Jim Meyering
94d1ea4fa9 (copy): With -i and not -f, prompt for any type of
(non-directory) source file before overwriting an existing target.
Reported by Mark A. Thomas.
1996-11-23 04:15:35 +00:00
Jim Meyering
9645d076db . 1996-11-23 02:36:54 +00:00
Jim Meyering
b683d9194f . 1996-11-23 02:36:09 +00:00
Jim Meyering
38da840313 (main): Warn if excess arguments are ignored.
E.g., printf foo bar now ignores the single non-format argument, bar.
1996-11-23 02:34:31 +00:00
Jim Meyering
b36e061e8a . 1996-11-23 02:32:19 +00:00
Jim Meyering
0d3f6a6665 (process_regexp): Update CURRENT_LINE only if
the new value would be larger.  This avoids the infinite loop
otherwise provoked by situations like this:
printf "\na\n" | csplit - '/a/-1' '{*}'
From Jens Schmidt.
1996-11-23 02:32:10 +00:00
Jim Meyering
aa00ea2e88 remove my @comco address 1996-11-21 02:42:52 +00:00
Jim Meyering
aad274a82b . 1996-11-21 02:39:37 +00:00
Jim Meyering
fc949b713e (xgethostname): Work around bug in SunOS5.5's gethostname. 1996-11-21 02:38:40 +00:00
Jim Meyering
fbc246ca8f . 1996-11-20 06:36:09 +00:00
Jim Meyering
789a8aa03a . 1996-11-20 06:34:41 +00:00
Jim Meyering
179a2c3034 . 1996-11-20 05:18:13 +00:00
Jim Meyering
a27d168615 . 1996-11-20 05:17:50 +00:00
Jim Meyering
29fa517ae4 . 1996-11-20 05:13:57 +00:00
Jim Meyering
4b7c7e9d33 Remove unused declaration of mktime. From Tony Leneis. 1996-11-18 02:54:14 +00:00
Jim Meyering
daf9bddd16 . 1996-11-18 02:51:09 +00:00
Jim Meyering
9b3733bd9a . 1996-11-18 02:50:30 +00:00
Jim Meyering
a4f0dde547 (main): Ignore -a, for compatibility with SVR4. 1996-11-18 02:50:21 +00:00
Jim Meyering
e604ed756f . 1996-11-05 05:24:53 +00:00
Jim Meyering
1cf3018183 . 1996-11-05 05:20:03 +00:00
Jim Meyering
138d155fb8 . 1996-11-05 04:47:40 +00:00
Jim Meyering
4d091498a4 Thu Oct 31 19:32:32 1996 Miles Bader <miles@gnu.ai.mit.edu>
[ENAMETOOLONG] (xgethostname): If gethostname
returns an error other than buffer overflow, exit with an error
message instead of allocating infinite amounts of space.
[!EXIT_FAILURE] (EXIT_FAILURE): New macro.
<errno.h>: New include.
[!errno] (errno): New declaration.
1996-11-05 04:38:41 +00:00
Jim Meyering
1e3de0b6d9 . 1996-11-05 04:26:34 +00:00
Jim Meyering
25a9b70b2e Fix copyright. 1996-11-05 04:23:22 +00:00
Jim Meyering
45bf8ec9d0 Fix copyright. 1996-11-05 04:22:40 +00:00
Jim Meyering
4a253e5be0 . 1996-11-05 04:11:31 +00:00
Jim Meyering
71a04268b5 libitize 1996-11-05 03:38:23 +00:00
Jim Meyering
6c6ea1a14d . 1996-11-05 02:31:02 +00:00
Jim Meyering
9691c2050b from franc,ois 1996-11-04 18:15:56 +00:00
Jim Meyering
2876587b55 libitize 1996-11-04 18:11:58 +00:00
Jim Meyering
1eb3a8c9ba libitize 1996-11-04 18:07:38 +00:00
Jim Meyering
39fd156a8e New version from Franois Pinard. 1996-11-04 18:05:10 +00:00
Jim Meyering
f137758903 libitize 1996-11-04 18:01:20 +00:00
Jim Meyering
895c2213db libitize 1996-11-04 17:59:28 +00:00
Jim Meyering
50720fb367 libitize 1996-11-04 17:58:21 +00:00
Jim Meyering
f6516b6dd3 libitize 1996-11-04 17:57:34 +00:00
Jim Meyering
564001a9e7 . 1996-11-04 17:56:16 +00:00
Jim Meyering
25abc2a9b4 (recover_mode): Fail also if there are too many fields. From Karl Heuer. 1996-11-04 00:22:26 +00:00
Jim Meyering
70196747af cpp-indent + change some #ifdef to #if 1996-11-03 23:53:51 +00:00
Jim Meyering
04e102f64f . 1996-11-03 23:44:15 +00:00
Jim Meyering
432ebf7912 . 1996-11-03 23:43:36 +00:00
Jim Meyering
84b3a78396 Include sys/types.h for the definitions
(otherwise missing on some systems) of caddr_t (used by
sys/socket.h) and ushort (used by netinet/in.h).  From Karl Heuer.
1996-11-03 20:59:43 +00:00
Jim Meyering
9eb9f31c3a . 1996-11-03 14:44:30 +00:00
Jim Meyering
7f82c56f15 . 1996-11-03 14:42:03 +00:00
Jim Meyering
5582e6dad3 change bug-reporting address 1996-11-03 03:16:27 +00:00
Jim Meyering
2e55854100 change bug-reporting address 1996-11-03 03:16:23 +00:00
Jim Meyering
8114f3fcdb change bug-reporting address 1996-11-02 23:40:19 +00:00
Jim Meyering
45c541daa1 . 1996-11-02 20:51:40 +00:00
Jim Meyering
17c0c658f1 change bug-reporting address 1996-11-02 20:44:52 +00:00
Jim Meyering
b8e689dc67 change bug-reporting address 1996-11-02 20:44:15 +00:00
Jim Meyering
87b19e8a11 . 1996-11-02 19:24:35 +00:00
Jim Meyering
a1c6ed64c0 . 1996-11-02 16:05:47 +00:00
Jim Meyering
f2c14100c3 . 1996-11-02 15:28:22 +00:00
Jim Meyering
1a58046071 (gobble_file): Set linkok for non-orphaned symlinks.
From Bauke Jan Douma.
(gobble_file): Initialize linkok.
With these two changes, ls --color should display orphaned symlinks
as blinking text on terminals that support it.
1996-11-02 15:28:08 +00:00
Jim Meyering
b3b3cf98c6 . 1996-11-02 15:06:36 +00:00
Jim Meyering
30bf49ce02 . 1996-11-02 15:05:57 +00:00
Jim Meyering
a5ecd84c1f . 1996-11-02 15:02:25 +00:00
Jim Meyering
9b29731f08 . 1996-11-02 14:53:43 +00:00
Jim Meyering
a140942848 . 1996-11-02 14:50:31 +00:00
Jim Meyering
1291b1652a (MAKEINFO): Set to makeinfo --no-split.
Otherwise, the generated info files have 15-byte names and that
loses on systems with 14-byte max.
1996-11-02 14:47:46 +00:00
Jim Meyering
1b5b75d13e . 1996-11-02 06:16:56 +00:00
Jim Meyering
f1af346ad5 (main): Give better diagnostic.
Suggestion from Karl Berry.
1996-11-02 06:16:44 +00:00
Jim Meyering
431bbb9c57 update copyright 1996-11-02 06:00:18 +00:00
Jim Meyering
7d62b5ce1c update copyright 1996-11-02 05:59:20 +00:00
Jim Meyering
a345a56001 . 1996-11-02 05:53:00 +00:00
Jim Meyering
b5f8cdecfb Update from GNU libc. 1996-11-02 05:51:53 +00:00
Jim Meyering
fa53b43c97 . 1996-11-02 05:28:36 +00:00
Jim Meyering
23bce5b115 . 1996-11-02 05:28:21 +00:00
Jim Meyering
da952f6227 . 1996-11-02 05:24:50 +00:00
Jim Meyering
31926f3a37 . 1996-11-02 05:24:25 +00:00
Jim Meyering
a71e22991b Add a test to exercize this fix. 1996-11-02 05:19:40 +00:00
Jim Meyering
d74d789bea Add test 17. 1996-11-02 05:19:02 +00:00
Jim Meyering
950325ee23 . 1996-11-02 05:14:21 +00:00
Jim Meyering
c941e1742d . 1996-11-02 05:09:54 +00:00
Jim Meyering
0bd1289ad1 . 1996-11-02 03:51:47 +00:00
Jim Meyering
febf70b73f [!ENABLE_ASSERTIONS]: Guard NDEBUG definition.
(checkfp): Fix off-by-one error that resulted in writing one byte
beyond the end of a malloc'd buffer.  It caused `sort -c' to segfault
on Linux systems having a relatively recent libc.  Before, running
the command, perl -e "print 'x' x 30, \"\n\";"|sort -c
would provoke the memory overrun (though not necessarily the failure).
Add an assertion.
1996-11-02 03:47:04 +00:00
Jim Meyering
b5a71af82a Remap yacc globals to have gd_ prefix.
Suggestion to do as in gdb/c-exp.y from Tom Tromey.
1996-11-01 00:32:12 +00:00
Jim Meyering
876c63c92f Remap yacc globals to have pt_ prefix.
Suggestion to do as in gdb/c-exp.y from Tom Tromey.
1996-11-01 00:31:57 +00:00
Jim Meyering
b3ca6696cd . 1996-11-01 00:09:34 +00:00
Jim Meyering
24e88142ba (key_init): New function.
(main): Use key_init in the two places where it was open-coded.
1996-11-01 00:08:58 +00:00
Jim Meyering
f9cd2cf6e2 (decode_field_spec): Always give FIELD_INDEX a value.
This avoids spurious UMR from purify.
(prjoin): Add an assertion.
(add_field): Update assertion.
1996-10-31 23:55:04 +00:00
Jim Meyering
0a1ac00ad6 (es_free): New function.
(parse_str): Use it to plug small memory leak.
1996-10-31 23:49:42 +00:00
Jim Meyering
e5947e883e . 1996-10-31 02:10:18 +00:00
Jim Meyering
679918ec84 . 1996-10-29 18:06:05 +00:00
Jim Meyering
a9b6fe5c83 . 1996-10-29 18:05:50 +00:00
Jim Meyering
8619a0d598 . 1996-10-29 17:56:06 +00:00
Jim Meyering
d34e6897d8 . 1996-10-29 17:55:38 +00:00
Jim Meyering
55681891e5 . 1996-10-29 17:47:50 +00:00
Jim Meyering
3772a9e885 . 1996-10-29 17:44:03 +00:00
Jim Meyering
1220685f78 libitize 1996-10-29 14:45:55 +00:00
Jim Meyering
f3129d9b19 . 1996-10-29 14:25:25 +00:00
Jim Meyering
b0fd7c9185 . 1996-10-29 14:25:15 +00:00
Jim Meyering
7d70c26629 . 1996-10-29 14:24:52 +00:00
Jim Meyering
ac96de6db4 . 1996-10-29 14:21:15 +00:00
Jim Meyering
1f49981a1f cpp-indent 1996-10-29 14:17:29 +00:00
Jim Meyering
d09ffcb711 libitize 1996-10-29 14:14:08 +00:00
Jim Meyering
33b2a8a1ae . 1996-10-29 13:57:43 +00:00
Jim Meyering
32969f8571 . 1996-10-29 13:56:39 +00:00
Jim Meyering
4abe75d3b1 . 1996-10-29 13:50:37 +00:00
Jim Meyering
e623bf9a03 . 1996-10-29 13:47:56 +00:00
Jim Meyering
0815914f28 . 1996-10-29 13:42:56 +00:00
Jim Meyering
70cf07775b . 1996-10-29 13:41:43 +00:00
Jim Meyering
06382a007d . 1996-10-29 13:40:56 +00:00
Jim Meyering
d7749da3e9 (decode_switches): Make -A set really_all_files to zero
as well as setting all_files to 1.  With this change, ls -f -A prints
everything but . and .., unsorted.  Before, the -A was effectively
ignored.  From Karl Berry.
1996-10-29 12:51:37 +00:00
Jim Meyering
84b8cf9fcf (main): Ignore SIGPIPE. 1996-10-29 04:16:59 +00:00
Jim Meyering
c673119b0b . 1996-10-28 23:52:51 +00:00
Jim Meyering
45d223328e . 1996-10-28 23:49:53 +00:00
Jim Meyering
b8ad9be908 Guard inclusion of stdarg.h and definition of VA_START
with #if PROTOTYPES rather than with #ifdef __STDC__.  The latter
loses with Dynix/PTX.
(wrapf) [PROTOTYPES]: Similarly, guard ANSI-style ... definition.
Suggestion from Marcus Daniels.
1996-10-24 04:46:33 +00:00
Jim Meyering
2be918d5cd . 1996-10-24 03:03:08 +00:00
Jim Meyering
db69dbe9ab Update from GNU libc. 1996-10-24 03:02:57 +00:00
Jim Meyering
4215f6b53a . 1996-10-23 01:39:16 +00:00
Jim Meyering
e1298617bf . 1996-10-23 01:24:26 +00:00
Jim Meyering
720341312b . 1996-10-23 01:24:03 +00:00
Jim Meyering
ed44302c4a . 1996-10-22 23:02:22 +00:00
Jim Meyering
c3b3d48cd4 . 1996-10-22 22:51:22 +00:00
Jim Meyering
a73047bde4 . 1996-10-22 05:07:12 +00:00
Jim Meyering
20862d675d . 1996-10-22 05:05:36 +00:00
Jim Meyering
17e8314c79 . 1996-10-22 05:01:37 +00:00
Jim Meyering
ee791d8ca1 [__linux__]: Don't bother with a.out/nlist/kernel
defines or includes -- Linux systems simply read /proc/loadavg.
1996-10-22 05:01:13 +00:00
Jim Meyering
0c410767ab . 1996-10-22 04:56:22 +00:00
Jim Meyering
3896da90cc (EXTRA_DIST): Remove group-member.c.
Add (temporary hack to work around bug in automake-1.1f) mvdir.c and rmdir.c.
1996-10-22 04:51:44 +00:00
Jim Meyering
0ed25421c6 . 1996-10-22 04:07:14 +00:00
Jim Meyering
194f3d7f5a . 1996-10-22 03:28:44 +00:00
Jim Meyering
e028e025df . 1996-10-22 03:19:35 +00:00
Jim Meyering
8978c64869 . 1996-10-22 03:15:22 +00:00
Jim Meyering
0fd3107ec7 . 1996-10-22 03:09:55 +00:00
Jim Meyering
0416bd8ed0 . 1996-10-21 22:27:48 +00:00
Jim Meyering
d63a1efe26 . 1996-10-21 22:05:28 +00:00
Jim Meyering
43294523f4 . 1996-10-21 21:58:44 +00:00
Jim Meyering
625354dd9e . 1996-10-21 21:54:03 +00:00
Jim Meyering
dc14f81457 Comment out DOS-style suffixes. 1996-10-21 21:52:53 +00:00
Jim Meyering
32f42e0a34 . 1996-10-21 21:50:51 +00:00
Jim Meyering
263773a385 (validate): Remove TAB from diagnostic, for consistency. 1996-10-21 21:50:32 +00:00
Jim Meyering
6afff604a4 . 1996-10-21 21:49:54 +00:00
Jim Meyering
7b4f54f83f (main): Remove TAB from diagnostic, for consistency. 1996-10-21 21:49:41 +00:00
Jim Meyering
24b532175e . 1996-10-21 15:42:14 +00:00
Jim Meyering
543f479cc8 . 1996-10-21 13:46:50 +00:00
Jim Meyering
4b1e41570b . 1996-10-21 03:33:37 +00:00
Jim Meyering
d0fa9d9689 (INCLUDES): Add -I../intl. Reported by Eric Backus. 1996-10-21 03:33:19 +00:00
Jim Meyering
4516e9ec55 . 1996-10-21 00:38:50 +00:00
Jim Meyering
d15f56325a . 1996-10-20 19:16:49 +00:00
Jim Meyering
1dde8333c1 . 1996-10-20 19:14:50 +00:00
Jim Meyering
ac22b4589d (print_entry): Don't take address of UT_TIME_MEMBER directly.
From Ulrich Drepper.
1996-10-20 19:14:37 +00:00
Jim Meyering
2f03e544e1 . 1996-10-20 18:50:41 +00:00
Jim Meyering
412cc2f3fc (md5_process_bytes): Cast void* pointer to char* before
doing arithmetic with it.
1996-10-20 18:44:39 +00:00
Jim Meyering
3cbc95de84 . 1996-10-20 18:43:54 +00:00
Jim Meyering
b3d2d7745e . 1996-10-20 18:06:50 +00:00
Jim Meyering
66d52e0b28 . 1996-10-20 14:07:17 +00:00
Jim Meyering
5ba02801bd Update from GNU libc. 1996-10-20 04:14:25 +00:00
Jim Meyering
03c0cd6569 . 1996-10-19 02:33:20 +00:00
Jim Meyering
c12be5c1d8 . 1996-10-18 05:10:42 +00:00
Jim Meyering
d565995d9b . 1996-10-18 05:09:27 +00:00
Jim Meyering
9fd1b85231 . 1996-10-18 05:09:03 +00:00
Jim Meyering
350690112e . 1996-10-18 05:08:13 +00:00
Jim Meyering
d0acd7bfa5 . 1996-10-18 05:00:15 +00:00
Jim Meyering
4ba06c4102 . 1996-10-18 04:59:01 +00:00
Jim Meyering
cb84de4217 . 1996-10-18 04:56:53 +00:00
Jim Meyering
7111d93669 . 1996-10-18 04:56:19 +00:00
Jim Meyering
97f0f916a2 . 1996-10-18 04:55:16 +00:00
Jim Meyering
42e52b5017 . 1996-10-18 03:05:32 +00:00
Jim Meyering
8ce9769e2f . 1996-10-18 03:02:52 +00:00
Jim Meyering
7d969dab50 libitize 1996-10-17 03:05:09 +00:00
Jim Meyering
d7074bc0e4 . 1996-10-17 03:01:19 +00:00
Jim Meyering
e24c0713be Define and use macro, PARAMS, not __P. 1996-10-17 02:59:09 +00:00
Jim Meyering
9b3498acb2 . 1996-10-17 02:46:33 +00:00
Jim Meyering
ffc5c802c4 libitize 1996-10-17 02:45:32 +00:00
Jim Meyering
12b4578595 libitize 1996-10-17 01:58:19 +00:00
Jim Meyering
e98991ee51 libitize 1996-10-17 01:49:07 +00:00
Jim Meyering
10076ae36a . 1996-10-17 01:44:24 +00:00
Jim Meyering
c96ca77338 . 1996-10-16 04:31:32 +00:00
Jim Meyering
e82e83086c . 1996-10-16 04:29:10 +00:00
Jim Meyering
70ef71caf5 (get_next): Rewrite to treat lower/upper mapping as a special case.
(main): Write separate loops to initialize mapping for lower->upper
and upper->lower conversion.
1996-10-16 04:29:02 +00:00
Jim Meyering
56d2307664 . 1996-10-16 04:25:18 +00:00
Jim Meyering
e98dee7cdd . 1996-10-15 23:22:41 +00:00
Jim Meyering
f3701815f7 . 1996-10-14 20:47:42 +00:00
Jim Meyering
cf3c9c6a11 . 1996-10-13 19:08:39 +00:00
Jim Meyering
beb67dc954 (print_long_format): Use strftime of localtime
(not ctime) to produce the date/time in long listings.
From Rafal Maszkowski.
1996-10-13 19:04:51 +00:00
Jim Meyering
242f2fa2e1 . 1996-10-13 18:27:17 +00:00
Jim Meyering
3d91b69385 . 1996-10-13 17:58:55 +00:00
Jim Meyering
41dfaf296a (__xstrtol): Return an error for invalid suffix.
Before, e.g., `split -b 1M' would be silently accepted and treated
like `split -b 1'.  Reported by Franc,ois.
1996-10-13 17:58:50 +00:00
Jim Meyering
bc2d814543 (usage): Remove parameter, REASON.
(main): Update callers to use combination of error (0, 0, ... and
usage (EXIT_FAILURE).
1996-10-13 17:53:47 +00:00
Jim Meyering
8cb23387cb . 1996-10-13 13:00:34 +00:00
Jim Meyering
82fa812558 . 1996-10-13 12:34:56 +00:00
Jim Meyering
1487a7da95 . 1996-10-12 23:21:40 +00:00
Jim Meyering
1751c454c2 (fstype_to_string): Handle fstypes of freebsd.
From Arne Henrik Juul.
1996-10-12 23:21:32 +00:00
Jim Meyering
da59dde0bb . 1996-10-12 23:19:30 +00:00
Jim Meyering
6099958eda . 1996-10-12 14:02:48 +00:00
Jim Meyering
ffd5a79535 (EXTRA_DIST): Remove. 1996-10-12 05:09:28 +00:00
Jim Meyering
320268ae6d . 1996-10-12 05:04:44 +00:00
Jim Meyering
e45d62703e . 1996-10-12 05:04:04 +00:00
Jim Meyering
6ed9fd4b58 . 1996-10-12 04:17:28 +00:00
Jim Meyering
d0909b6911 (print_uptime): Change #ifdef guard on getloadavg
call from just HAVE_GETLOADAVG to HAVE_GETLOADAVG || C_GETLOADAVG.
From Kaveh R. Ghazi.
1996-10-12 04:17:25 +00:00
Jim Meyering
a64289005d . 1996-10-12 04:06:15 +00:00
Jim Meyering
e42dca4684 . 1996-10-12 04:04:16 +00:00
Jim Meyering
51293cdf6f . 1996-10-11 04:50:54 +00:00
Jim Meyering
4d0af9ead4 (EXTRA_DIST): Remove posixtm.y and getdate.y.
(fu_SOURCES): Put them here instead.
Remove rules for building getdate.c and posixtm.c;  now automake
generates those rules.
1996-10-11 04:49:50 +00:00
Jim Meyering
eed23c25dc (md5_stream): Apply fix from Ralph Loader
<loader@maths.ox.ac.uk> via Ulrich Drepper.
1996-10-11 04:43:40 +00:00
Jim Meyering
8204d34b97 . 1996-10-11 03:42:11 +00:00
Jim Meyering
d80da392e0 . 1996-10-10 14:08:46 +00:00
Jim Meyering
4c53aee40c . 1996-10-10 14:07:29 +00:00
Jim Meyering
3d35ef8670 . 1996-10-10 04:18:05 +00:00
Jim Meyering
5921df05c5 . 1996-10-10 04:15:54 +00:00
Jim Meyering
1a7260cada . 1996-10-10 04:14:40 +00:00
Jim Meyering
969950e526 . 1996-10-10 04:11:07 +00:00
Jim Meyering
fb9ee923ba [__sun]: Define sun. Reported by Kaveh Ghazi. 1996-10-10 03:14:48 +00:00
Jim Meyering
8af03634e6 . 1996-10-10 03:10:41 +00:00
Jim Meyering
e5e9f3ee5d (strftime): Accommodate the broken C compiler
that comes with SunOS -- don't initialize aggregates in decls of
automatic variables.  Reported by Kaveh Ghazi.
1996-10-10 02:56:10 +00:00
Jim Meyering
62ae6ccc22 . 1996-10-10 02:53:58 +00:00
Jim Meyering
c3830e800f indent copyright comment. 1996-10-10 02:51:16 +00:00
Jim Meyering
7200c7fd2e Use #if, not #ifdef in test for HAVE_CONFIG_H. 1996-10-10 02:50:37 +00:00
Jim Meyering
d16bea8f84 . 1996-10-10 02:48:37 +00:00
Jim Meyering
ae0dc43e79 . 1996-10-09 16:14:39 +00:00
Jim Meyering
c6500ed364 . 1996-10-09 12:27:16 +00:00
Jim Meyering
2a5b5534ab . 1996-10-09 12:25:28 +00:00
Jim Meyering
2dc3ad1a76 (usage): Improve brief descriptions of --sort and --time.
From Franois Pinard.
1996-10-09 12:24:26 +00:00
Jim Meyering
1e2d02ace5 . 1996-10-09 12:18:48 +00:00
Jim Meyering
fde482ef0e . 1996-10-09 12:00:05 +00:00
Jim Meyering
9de1f7a589 [!WITH_REGEX]: Include rx.h.
From Andreas Schwab.
1996-10-09 11:55:22 +00:00
Jim Meyering
983e0032e0 . 1996-10-09 05:27:46 +00:00
Jim Meyering
60cb394696 . 1996-10-09 03:47:10 +00:00
Jim Meyering
c5c0528abe update from texinfo-3.9 1996-10-09 03:20:31 +00:00
Jim Meyering
fecbdd9ab1 . 1996-10-09 02:42:17 +00:00
Jim Meyering
5b2210ce71 . 1996-10-09 02:37:53 +00:00
Jim Meyering
3df36d5e2f . 1996-10-09 02:36:55 +00:00
Jim Meyering
a49fa29fed . 1996-10-09 02:35:23 +00:00
Jim Meyering
bb3ecf85bc Include error.h to align with libit -- under protest, Franois :-). 1996-10-09 02:33:18 +00:00
Jim Meyering
b5a2377dc2 . 1996-10-09 02:29:10 +00:00
Jim Meyering
46b5894b8f , 1996-10-09 02:27:56 +00:00
Jim Meyering
1a68844645 . 1996-10-09 02:25:44 +00:00
Jim Meyering
dc522f984c . 1996-10-09 02:19:09 +00:00
Jim Meyering
8573fc6ac9 (usage): Improve diagnostic 1996-10-08 04:37:19 +00:00
Jim Meyering
d4cf394f30 (usage): Improve usage messages 1996-10-08 04:35:19 +00:00
Jim Meyering
79f3064bfa . 1996-10-08 04:34:11 +00:00
Jim Meyering
900e16e5d5 (EXTRA_DIST): Remove names of several files
that automake adds automatically.
(fu_SOURCES): Likewise.
(fu_DEPENDENCIES): Depend on fu_LIBADD.
1996-10-08 04:33:47 +00:00
Jim Meyering
dfc9fc2202 . 1996-10-08 04:31:57 +00:00
Jim Meyering
1b5b3bf6e2 . 1996-10-08 04:26:01 +00:00
Jim Meyering
cb806c0218 . 1996-10-08 02:23:35 +00:00
Jim Meyering
0e6d3d87e4 [__hpux]: Define hpux. From Eric Backus. 1996-10-08 02:06:34 +00:00
Jim Meyering
4b08923fe8 . 1996-10-08 00:58:23 +00:00
Jim Meyering
2edcf647de . 1996-10-08 00:54:50 +00:00
Jim Meyering
0a713ad019 . 1996-10-08 00:54:12 +00:00
Jim Meyering
7026c59810 . 1996-10-08 00:51:25 +00:00
Jim Meyering
4c4eb1ab6c . 1996-10-06 13:03:02 +00:00
Jim Meyering
638d6e19f0 . 1996-10-06 13:02:12 +00:00
Jim Meyering
27d2263af1 . 1996-10-06 03:19:07 +00:00
Jim Meyering
320b9cc697 . 1996-10-06 03:07:35 +00:00
Jim Meyering
28e0bda43b . 1996-10-06 02:54:21 +00:00
Jim Meyering
04af619ed2 . 1996-10-06 02:53:18 +00:00
Jim Meyering
255931762f . 1996-10-05 20:18:41 +00:00
Jim Meyering
f98969cf69 . 1996-10-05 20:17:53 +00:00
Jim Meyering
7c17502e74 (print_long_format): Add support for Cray's migrated dmf files.
From Johan Danielsson.
1996-10-05 20:17:09 +00:00
Jim Meyering
4a2eda04aa (ftypelet): Add support for Cray's migrated dmf files.
From Johan Danielsson.
1996-10-05 20:15:06 +00:00
Jim Meyering
ed43629995 . 1996-10-05 19:14:01 +00:00
Jim Meyering
c177b96b17 . 1996-10-05 18:06:07 +00:00
Jim Meyering
c5de1e3532 (main): update --version output to conform to coding standard 1996-10-05 18:04:52 +00:00
Jim Meyering
148ec1ad9c [HAVE_CONFIG_H]: Include config.h.
From Karl Berry.
1996-10-05 17:40:50 +00:00
Jim Meyering
a13e04ed9d fix --version output 1996-10-05 17:12:55 +00:00
Jim Meyering
98564790bd . 1996-10-05 16:47:37 +00:00
Jim Meyering
f04044ed86 (main): update --version output to conform to coding standard 1996-10-05 16:37:57 +00:00
Jim Meyering
09711894fe . 1996-10-05 13:15:07 +00:00
Jim Meyering
4f28f318d8 (main): update --version output to conform to coding standard 1996-10-05 13:14:11 +00:00
Jim Meyering
e22c80dcf0 . 1996-10-05 03:58:37 +00:00
Jim Meyering
b350b74916 Remove assertions. 1996-10-04 13:42:43 +00:00
Jim Meyering
3400ffe3f2 Add assertions. 1996-10-04 13:42:20 +00:00
Jim Meyering
fdd16fdb62 Update prototype. 1996-10-04 12:22:17 +00:00
Jim Meyering
6f67177fae (parse_long_options): Separate package name
and version number to accomodate new --version output requirement.
1996-10-04 12:21:39 +00:00
Jim Meyering
2c035a7cfd (main): update --version output again 1996-10-04 04:28:35 +00:00
Jim Meyering
be4153d2a8 (main): Remove dead code that used to print --version output. 1996-10-04 04:28:28 +00:00
Jim Meyering
630b771f1b (main): update --version output again 1996-10-04 04:25:46 +00:00
Jim Meyering
de05a873ec (main): update --version output to conform to coding standard 1996-10-04 04:16:01 +00:00
Jim Meyering
3361bd2bca (main): update --version output to conform to coding standard 1996-10-04 04:15:08 +00:00
Jim Meyering
1c6698b17d . 1996-10-03 02:46:05 +00:00
Jim Meyering
a3edb3f940 (usage): Deprecate --print-data-base even though
that's the way GNU make writes it.  `database' is one word.
Add description of FILE argument.
1996-10-03 02:45:59 +00:00
Jim Meyering
9b34a4a7c6 . 1996-10-02 02:57:29 +00:00
Jim Meyering
56c8b44ec6 . 1996-10-02 00:45:15 +00:00
Jim Meyering
50c823be8a . 1996-10-01 17:59:05 +00:00
Jim Meyering
4909374105 . 1996-10-01 17:57:29 +00:00
Jim Meyering
2a91869144 (fu_SOURCES): Remove getline.c
(EXTRA_DIST): Add getline.c
1996-10-01 17:57:04 +00:00
Jim Meyering
41bf50ecb3 . 1996-10-01 17:52:42 +00:00
Jim Meyering
349c3796be Oops! Use ../../src 1996-10-01 17:37:35 +00:00
Jim Meyering
717429e4bc . 1996-10-01 11:55:14 +00:00
Jim Meyering
6c81b98e46 (md5sum): Use ../src/md5sum. 1996-10-01 11:55:01 +00:00
Jim Meyering
cf64a504d8 (md5sum): Set to $srcdir/md5sum. 1996-10-01 04:47:55 +00:00
Jim Meyering
ec693397f0 . 1996-10-01 04:47:21 +00:00
Jim Meyering
04838c31ce . 1996-10-01 04:43:44 +00:00
Jim Meyering
fa3bbe8eb2 . 1996-10-01 04:38:28 +00:00
Jim Meyering
39c406f18a . 1996-10-01 01:10:54 +00:00
Jim Meyering
d7f77ef1cf . 1996-10-01 01:10:10 +00:00
Jim Meyering
31053908a0 (path_concat): Use K&R style function definition. 1996-10-01 01:09:07 +00:00
Jim Meyering
0c7040607d . 1996-09-30 03:49:53 +00:00
Jim Meyering
d81cbf71b4 . 1996-09-30 03:49:26 +00:00
Jim Meyering
b339cb8d84 . 1996-09-30 03:41:36 +00:00
Jim Meyering
d8880083a6 . 1996-09-30 03:05:41 +00:00
Jim Meyering
96cdeb978e (do_copy): Give better error message when copying multiple
files and the last one is not a directory.  From Karl Berry.
Call error (0, 0, ... then usage (1) -- instead of calling usage
with two arguments.
1996-09-30 03:04:54 +00:00
Jim Meyering
b2cc136736 . 1996-09-30 02:57:55 +00:00
Jim Meyering
b394529747 use exp_name in msg when open EXP fails. 1996-09-30 02:57:28 +00:00
Jim Meyering
edfafcd7b7 Reversed order of flags and input. 1996-09-30 02:56:34 +00:00
Jim Meyering
1c75eb6a98 . 1996-09-30 02:43:42 +00:00
Jim Meyering
814dc35407 Die if close fails. 1996-09-30 02:43:22 +00:00
Jim Meyering
99fe905035 . 1996-09-30 02:41:50 +00:00
Jim Meyering
ccf556a616 Die if close fails. 1996-09-30 02:39:46 +00:00
Jim Meyering
d96a2d9e14 . 1996-09-30 01:06:47 +00:00
Jim Meyering
8e11d5dfae . 1996-09-30 00:28:08 +00:00
Jim Meyering
f64f586fdc . 1996-09-30 00:27:48 +00:00
Jim Meyering
6f8e1b2134 . 1996-09-30 00:27:38 +00:00
Jim Meyering
8888bceb65 . 1996-09-30 00:27:11 +00:00
Jim Meyering
78315499ba . 1996-09-30 00:24:30 +00:00
Jim Meyering
e666e3459e . 1996-09-28 18:51:37 +00:00
Jim Meyering
6a9d144a66 . 1996-09-28 18:31:00 +00:00
Jim Meyering
f34578f297 . 1996-09-28 18:25:55 +00:00
Jim Meyering
1dc643390a . 1996-09-28 18:17:08 +00:00
Jim Meyering
ea3702aa6d (backup_types): Declare const.
(backup_args): Likewise.
1996-09-28 18:17:00 +00:00
Jim Meyering
59b9296742 . 1996-09-28 18:09:13 +00:00
Jim Meyering
bf3b759a61 . 1996-09-28 18:08:03 +00:00
Jim Meyering
bc24ebbed0 . 1996-09-28 03:25:27 +00:00
Jim Meyering
10ac9ed1ba Remove references to the now-deprecated --string option. 1996-09-27 02:10:37 +00:00
Jim Meyering
f28de0cbe3 . 1996-09-27 02:10:11 +00:00
Jim Meyering
d7477dbf0c (usage): Remove references in --help output to
the now-deprecated --string option.  Support for it will be
removed soon.
1996-09-27 02:09:57 +00:00
Jim Meyering
b4062862f6 Rewrite to avoid use of --string option. 1996-09-27 02:03:32 +00:00
Jim Meyering
4ddff14202 . 1996-09-26 03:10:04 +00:00
Jim Meyering
c98881bb59 . 1996-09-26 02:59:45 +00:00
Jim Meyering
9016aac157 (t): Factor out .in suffix.
Include new test: t16a.
1996-09-26 02:59:36 +00:00
Jim Meyering
8c5a8ba959 . 1996-09-23 21:16:06 +00:00
Jim Meyering
62a6b18a77 (sort invocation): from Andreas Schwab. 1996-09-23 15:40:34 +00:00
Jim Meyering
0f39512ec6 . 1996-09-23 15:26:37 +00:00
Jim Meyering
77becb06e1 . 1996-09-23 15:01:31 +00:00
Jim Meyering
2ff0c1870c (EXTRA_DIST): Distribute $(TESTS). 1996-09-23 15:01:23 +00:00
Jim Meyering
9438eff8ec . 1996-09-23 03:43:21 +00:00
Jim Meyering
4097b92a07 . 1996-09-23 03:03:36 +00:00
Jim Meyering
7c695a0e5a Add test from sign ext bug from Erick Branderhorst. 1996-09-23 03:03:27 +00:00
Jim Meyering
85cddd3119 (keycompare): Declare translate to be unsigned char *.
Otherwise, sign extension caused misordering when using e.g. -f.
1996-09-23 03:02:04 +00:00
Jim Meyering
3661c96081 . 1996-09-23 02:49:03 +00:00
Jim Meyering
d4368d4802 . 1996-09-23 02:48:35 +00:00
Jim Meyering
34c992c065 merge with 0.10.24 1996-09-22 14:30:37 +00:00
Jim Meyering
e904744174 . 1996-09-22 14:26:29 +00:00
Jim Meyering
47e8713900 . 1996-09-22 14:25:49 +00:00
Jim Meyering
5637dfa191 . 1996-09-21 20:22:14 +00:00
Jim Meyering
ce5730d5c2 . 1996-09-21 18:35:52 +00:00
Jim Meyering
f1a405c1e9 . 1996-09-21 18:34:26 +00:00
Jim Meyering
7f88c2b896 . 1996-09-21 15:24:04 +00:00
Jim Meyering
eaa41b023f (xstrndup): Use message that's the same as the one
you get from e.g., xmalloc.  Reported by Santiago Vila.
1996-09-21 15:23:35 +00:00
Jim Meyering
0867d4efd3 . 1996-09-20 03:48:08 +00:00
Jim Meyering
b12923594b . 1996-09-20 03:47:46 +00:00
Jim Meyering
4f208e731c (fu_SOURCES): Remove regex.c and rx.c.
(EXTRA_DIST): Put them here instead.
1996-09-20 03:47:37 +00:00
Jim Meyering
26b61d5962 . 1996-09-20 03:19:47 +00:00
Jim Meyering
955f5eb1f4 . 1996-09-20 03:17:28 +00:00
Jim Meyering
0e02a64c99 . 1996-09-20 03:16:17 +00:00
Jim Meyering
545c237530 (fu_SOURCES): Move getopt.c and getopt1.c back to here fro EXTRA_DIST. 1996-09-20 03:14:17 +00:00
Jim Meyering
3cc1863ab3 . 1996-09-19 15:39:43 +00:00
Jim Meyering
815261aefc . 1996-09-19 14:12:28 +00:00
Jim Meyering
f599541be9 . 1996-09-19 13:46:49 +00:00
Jim Meyering
c62a6dbaa9 . 1996-09-19 12:55:17 +00:00
Jim Meyering
74388abca3 . 1996-09-19 12:54:24 +00:00
Jim Meyering
e044081627 Replace with FSF version. 1996-09-19 12:54:15 +00:00
Jim Meyering
d1320b7277 . 1996-09-19 12:48:06 +00:00
Jim Meyering
6ac49bdf47 Merge with FSF version. 1996-09-19 12:47:49 +00:00
Jim Meyering
c74ae79fd9 . 1996-09-17 04:14:01 +00:00
Jim Meyering
4b29186f72 (strftime): New version, from GNU libc. 1996-09-17 04:13:22 +00:00
Jim Meyering
94435a6401 . 1996-09-16 04:10:40 +00:00
Jim Meyering
1e26d4455a . 1996-09-16 04:08:38 +00:00
Jim Meyering
3683b0b3ef . 1996-09-10 03:18:30 +00:00
Jim Meyering
2d30458a75 . 1996-09-10 03:10:26 +00:00
Jim Meyering
9cde1990ab (do_copy): Describe in a little *more* detail the code
that makes `cp non-directory file/' (eventually) fail.
1996-09-10 03:09:31 +00:00
Jim Meyering
3fc07d456b (do_copy): Describe in a little more detail the code
that makes `cp non-directory file/' (eventually) fail.
1996-09-10 03:05:15 +00:00
Jim Meyering
73ca459085 . 1996-09-08 22:00:42 +00:00
Jim Meyering
85219ddf0f (usage): Refer to LS_COLORS, not LS_COLOR.
From Santiago Vila Doncel.
1996-09-08 22:00:35 +00:00
Jim Meyering
f471847cac . 1996-09-08 19:10:03 +00:00
Jim Meyering
edbc415595 . 1996-09-08 18:56:57 +00:00
Jim Meyering
e4c1c5efca Prefix $in with \$srcdir/ so make check works with VPATH build.
From Uli Drepper.
1996-09-08 18:56:04 +00:00
Jim Meyering
c830d53afb . 1996-09-08 17:55:31 +00:00
Jim Meyering
4526777121 (do_copy): Set backup_type to `none' only *after*
calling to find_backup_file_name.  Reported by Eli Zaretskii.
1996-09-08 17:55:24 +00:00
Jim Meyering
97df7b0013 . 1996-09-07 18:00:25 +00:00
Jim Meyering
9c28acb705 . 1996-09-07 17:59:35 +00:00
Jim Meyering
7b9e7765ee (INCLUDES): Add -I../intl so compiler will find libintl.h for rpmatch.c. 1996-09-07 17:59:26 +00:00
Jim Meyering
14c6c66b64 . 1996-09-07 17:54:23 +00:00
Jim Meyering
58b136578a . 1996-09-07 17:52:07 +00:00
Jim Meyering
139408f867 Add comments re ctype IS* macros. 1996-09-07 17:50:05 +00:00
Jim Meyering
d2c6e7cba9 Define and use upper case variants of ctype.h IS* macros.
From Bruno Haible.
1996-09-07 17:42:58 +00:00
Jim Meyering
62e0054a8d . 1996-09-07 17:31:09 +00:00
Jim Meyering
a5be9924f2 (check_punctuation): Use ISPUNCT instead of ispunct.
(get_line): Use ISSPACE instead of isspace.
1996-09-07 17:27:25 +00:00
Jim Meyering
f709048a82 revert last change 1996-09-06 03:18:46 +00:00
Jim Meyering
d1f996b486 . 1996-09-06 03:12:38 +00:00
Jim Meyering
d3900b79bc New version from glibc. 1996-09-06 03:12:04 +00:00
Jim Meyering
34d871d67d . 1996-09-06 03:01:01 +00:00
Jim Meyering
71066e34b9 (main): Don't set verbose flag for --changes.
(change_file_mode): If chmod succeeds and --changes was given,
give a diagnostic describing the new permissions.
Reported by Philippe Schnoebelen (phs@fing.edu.uy).
1996-09-06 03:00:56 +00:00
Jim Meyering
4be8ee6d75 . 1996-09-05 23:19:42 +00:00
Jim Meyering
63a48d0278 (do_copy): When concatenating DEST (with a trailing `/') and the basename
part of non-directory SOURCE, don't add a slash between them.
1996-09-05 23:19:33 +00:00
Jim Meyering
b8d66b1704 . 1996-09-05 04:40:15 +00:00
Jim Meyering
d64ae4c1be . 1996-09-05 02:48:48 +00:00
Jim Meyering
1a9771061b Make sure NULL is defined by including stddef.h
(if STDC_HEADERS || _LIBC) or simply defining it (otherwise).
Include sys/types.h for definition of size_t needed by regex.h.
1996-09-05 02:48:41 +00:00
Jim Meyering
5c8eaa8139 . 1996-09-05 02:46:01 +00:00
Jim Meyering
4cfd024d37 (fu_SOURCES): Add regex.c and rx.c.
(noinst_HEADERS): Add regex.h and rx.h.
1996-09-05 02:45:35 +00:00
Jim Meyering
5e053a624b . 1996-09-03 13:15:05 +00:00
Jim Meyering
e3625e3032 this conforms to POSIX.2. From Paul Eggert <eggert@twinsun.com>. 1996-09-03 13:14:57 +00:00
Jim Meyering
4c9586c01b . 1996-09-02 16:31:23 +00:00
401 changed files with 47881 additions and 10217 deletions

View File

@@ -134,7 +134,8 @@ Each translation team has its own mailing list, courtesy of Linux
International. You may reach your translation team at the address
`LL@li.org', replacing LL by the two-letter ISO 639 code for your
language. Language codes are *not* the same as the country codes given
in ISO 3166. The following translation teams exist, as of May 1996:
in ISO 3166. The following translation teams exist, as of February
1997:
Arabic `ar', Chinese `zh', Czech `cs', Danish `da', Dutch `nl',
English `en', Esperanto `eo', Finnish `fi', French `fr', German
@@ -172,39 +173,42 @@ Available Packages
Languages are not equally supported in all GNU packages. The
following matrix shows the current state of GNU internationalization,
as of May 1996. The matrix shows, in regard of each package, for which
languages PO files have been submitted to translation coordination.
as of February 1997. The matrix shows, in regard of each package, for
which languages PO files have been submitted to translation
coordination.
cs de en es fi fr ja ko nl no pl pt sl sv
Ready PO files cs de en es fi fr ja ko nl no pl pt sl sv
.-------------------------------------------.
bash | [] | 1
bison | [] | 1
bash | [] [] [] | 3
bison | [] [] [] | 3
clisp | [] [] [] | 3
cpio | [] | 1
diffutils | [] [] [] | 3
enscript | [] [] [] [] | 4
fileutils | [] [] [] [] | 4
findutils | [] [] | 2
flex | [] | 1
gcal | [] | 1
gettext | [] [] [] [] [] [] [] [] | 9
glibc | [] [] [] | 3
grep | [] [] [] [] [] [] | 6
hello | [] [] [] [] [] [] | 6
m4 | [] [] [] [] | 4
make | | 0
mkid | [] [] | 2
cpio | [] [] [] [] [] | 5
diffutils | [] [] [] [] | 4
enscript | [] [] [] [] [] | 5
fileutils | [] [] [] [] [] [] [] [] | 8
findutils | [] [] [] [] [] [] [] | 7
flex | [] [] [] | 3
gcal | [] [] [] | 3
gettext | [] [] [] [] [] [] [] [] [] [] | 11
grep | [] [] [] [] [] [] [] [] | 8
hello | [] [] [] [] [] [] [] [] [] [] | 10
id-utils | [] [] | 2
indent | [] [] | 2
libc | [] [] [] [] [] [] [] | 7
m4 | [] [] [] [] [] | 5
make | [] [] [] [] [] [] | 6
music | [] | 1
ptx | [] [] [] | 3
recode | [] [] [] [] [] | 5
sh-utils | [] [] | 2
sharutils | [] [] [] [] | 4
tar | [] [] [] [] [] [] [] | 7
textutils | [] [] [] [] | 4
wdiff | [] [] [] [] | 4
ptx | [] [] [] [] [] [] [] [] | 8
recode | [] [] [] [] [] [] [] [] | 8
sh-utils | [] [] [] [] [] | 5
sharutils | [] [] [] [] [] | 5
tar | [] [] [] [] [] [] [] [] [] | 9
texinfo | | 0
textutils | [] [] [] [] [] [] | 6
wdiff | [] [] [] [] [] [] [] [] | 8
`-------------------------------------------'
cs de en es fi fr ja ko nl no pl pt sl sv
1 17 1 3 1 22 1 6 3 3 4 3 6 10 81
14 languages cs de en es fi fr ja ko nl no pl pt sl sv
27 packages 1 22 1 14 1 25 1 10 20 7 14 7 7 15 145
Some counters in the preceding matrix are higher than the number of
visible blocks let us expect. This is because a few extra PO files are
@@ -217,6 +221,6 @@ distributed as such by its maintainer. There might be an observable
lag between the mere existence a PO file and its wide availability in a
GNU distribution.
If May 1996 seems to be old, you may fetch a more recent copy of
this `ABOUT-NLS' file on most GNU archive sites.
If February 1997 seems to be old, you may fetch a more recent copy
of this `ABOUT-NLS' file on most GNU archive sites.

View File

@@ -2,7 +2,7 @@
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -279,7 +279,7 @@ POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
@@ -304,8 +304,9 @@ the "copyright" line and a pointer to where the full notice is found.
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.

View File

@@ -31,7 +31,7 @@ The simplest way to compile this package is:
`sh ./configure' instead to prevent `csh' from trying to execute
`configure' itself.
Running `configure' takes a while. While running, it prints some
Running `configure' takes awhile. While running, it prints some
messages telling which features it is checking for.
2. Type `make' to compile the package.
@@ -167,7 +167,9 @@ operates.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made.
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
@@ -178,4 +180,3 @@ operates.
script, and exit.
`configure' also accepts some other, not widely useful, options.

30
THANKS Normal file
View File

@@ -0,0 +1,30 @@
This is just a start at listing e-mail addresses of contributors.
The rest of the addresses are still in the ChangeLog.
Andreas Schwab: schwab@issan.informatik.uni-dortmund.de
Arne Henrik Juul: arnej@imf.unit.no
Bauke Jan Douma: bjdouma@xs4all.nl
Charles Karney: karney@pppl.gov
Eirik Fuller: eirik@netcom.com
Emile LeBlanc: leblanc@math.toronto.edu
Galen Hazelwood: galenh@micron.net
Hugh Daniel: hugh@xanadu.com
James: james@albion.glarp.com
James Antill: jmanti%essex.ac.uk@seralph21.essex.ac.uk
Jesse Thilo: jgt2@eecs.lehigh.edu
Joakim Rosqvist: dvljrt@cs.umu.se
John Gatewood Ham: zappaman@alphabox.compsci.buu.ac.th
Marcus Daniels: marcus@sysc.pdx.edu
Mark A. Thomas: thommark@access.digex.net
Mark Harris: mark@monitor.designacc.com
Matthew S. Levine: mslevine@theory.lcs.mit.edu
Miles Bader: miles@gnu.ai.mit.edu
Peter Eriksson: peter@ifm.liu.se
Ross Ridge: rridge@calum.csclub.uwaterloo.ca
Santiago Vila Doncel: sanvila@ctv.es
Stuart Kemp: skemp@peter.bmc.com
Thomas Bushnell, n/BSG: thomas@gnu.ai.mit.edu
Torbjorn Lindgren: tl@funcom.no
Tony Leneis: tony@plaza.ds.adp.com
Wayne Stewart: wstewa@atl.com

View File

@@ -4,3 +4,9 @@ info_TEXINFOS = fileutils.texi
# FIXME: remove texinfo.tex when automake has been fixed to include it
# automatically
EXTRA_DIST = perm.texi getdate.texi texinfo.tex
# Tell makeinfo to put everything in a single info file: sh-utils.info.
# Otherwise, it would also generate files with names like sh-utils.info-[123],
# and those names all map to one 14-byte name (sh-utils.info-) on some crufty
# old systems.
MAKEINFO = makeinfo --no-split

View File

@@ -1,6 +1,6 @@
# Makefile.in generated automatically by automake 1.1c from Makefile.am
# Makefile.in generated automatically by automake 1.2 from Makefile.am
# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
@@ -32,63 +32,106 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = true
PRE_INSTALL = true
POST_INSTALL = true
NORMAL_UNINSTALL = true
PRE_UNINSTALL = true
POST_UNINSTALL = true
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CPP = @CPP@
DATADIRNAME = @DATADIRNAME@
DF_PROG = @DF_PROG@
GENCAT = @GENCAT@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GT_NO = @GT_NO@
GT_YES = @GT_YES@
INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
LIBOBJS = @LIBOBJS@
MAINT = @MAINT@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MVDIR_PROG = @MVDIR_PROG@
PACKAGE = @PACKAGE@
PERL = @PERL@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
YACC = @YACC@
l = @l@
info_TEXINFOS = fileutils.texi
# FIXME: remove texinfo.tex when automake has been fixed to include it
# automatically
EXTRA_DIST = perm.texi getdate.texi texinfo.tex
mkinstalldirs = $(top_srcdir)/mkinstalldirs
# Tell makeinfo to put everything in a single info file: sh-utils.info.
# Otherwise, it would also generate files with names like sh-utils.info-[123],
# and those names all map to one 14-byte name (sh-utils.info-) on some crufty
# old systems.
MAKEINFO = makeinfo --no-split
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
MAKEINFO = makeinfo
TEXI2DVI = texi2dvi
INFOS = fileutils.info fileutils.info-[0-9] fileutils.info-[0-9][0-9]
TEXINFO_TEX = $(srcdir)/texinfo.tex
INFO_DEPS = fileutils.info
DVIS = fileutils.dvi
TEXINFOS = fileutils.texi
DIST_COMMON = Makefile.am Makefile.in mdate-sh stamp-vti texinfo.tex \
DIST_COMMON = Makefile.am Makefile.in mdate-sh stamp-vti texinfo.tex \
version.texi
PACKAGE = @PACKAGE@
VERSION = @VERSION@
DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
$(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
$(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP = --best
default: all
.SUFFIXES:
.SUFFIXES: .dvi .info .ps .texi .texinfo
$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile
$(srcdir)/Makefile.in: @MAINT@Makefile.am $(top_srcdir)/configure.in
cd $(top_srcdir) && automake $(subdir)/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status $(BUILT_SOURCES)
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
Makefile: $(top_builddir)/config.status Makefile.in
cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
version.texi: @MAINT@stamp-vti
cp $(srcdir)/stamp-vti $(srcdir)/version.texi
stamp-vti: fileutils.texi $(top_srcdir)/configure.in
echo "@set UPDATED `cd $(srcdir) \
@echo "@set UPDATED `cd $(srcdir) \
&& $(SHELL) ./mdate-sh fileutils.texi`" > vti.tmp
echo "@set EDITION $(VERSION)" >> vti.tmp
echo "@set VERSION $(VERSION)" >> vti.tmp
if cmp -s vti.tmp $(srcdir)/version.texi; then \
rm vti.tmp; \
else \
mv vti.tmp $(srcdir)/version.texi; \
fi
echo timestamp > $(srcdir)/stamp-vti
@echo "@set EDITION $(VERSION)" >> vti.tmp
@echo "@set VERSION $(VERSION)" >> vti.tmp
@cmp -s vti.tmp $(srcdir)/stamp-vti \
|| (echo "Updating $(srcdir)/stamp-vti"; \
cp vti.tmp $(srcdir)/stamp-vti)
@rm -f vti.tmp
mostlyclean-vti:
rm -f vti.tmp
@@ -104,40 +147,94 @@ fileutils.info: fileutils.texi version.texi
fileutils.dvi: fileutils.texi version.texi
DVIPS = dvips
.texi.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texi.dvi:
TEXINPUTS=$(srcdir):$$TEXINPUTS $(TEXI2DVI) $<
TEXINPUTS=$(srcdir):$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
install-info: $(INFO_DEPS)
.texi:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texinfo.info:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texinfo:
@cd $(srcdir) && rm -f $@ $@-[0-9] $@-[0-9][0-9]
cd $(srcdir) \
&& $(MAKEINFO) `echo $< | sed 's,.*/,,'`
.texinfo.dvi:
TEXINPUTS=$(srcdir):$$TEXINPUTS \
MAKEINFO='$(MAKEINFO) -I $(srcdir)' $(TEXI2DVI) $<
.dvi.ps:
$(DVIPS) $< -o $@
install-info-am: $(INFO_DEPS)
@$(NORMAL_INSTALL)
$(mkinstalldirs) $(infodir)
for file in $(INFO_DEPS); do \
for ifile in `cd $(srcdir) && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
if test -f $(srcdir)/$$ifile; then \
$(INSTALL_DATA) $(srcdir)/$$ifile $(infodir)/$$ifile; \
@for file in $(INFO_DEPS); do \
d=$(srcdir); \
for ifile in `cd $$d && echo $$file $$file-[0-9] $$file-[0-9][0-9]`; do \
if test -f $$d/$$ifile; then \
echo " $(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile"; \
$(INSTALL_DATA) $$d/$$ifile $(infodir)/$$ifile; \
else : ; fi; \
done; \
done
@$(POST_INSTALL)
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
for file in $(INFO_DEPS); do \
echo " install-info --info-dir=$(infodir) $(infodir)/$$file";\
install-info --info-dir=$(infodir) $(infodir)/$$file || :;\
done; \
else : ; fi
uninstall-info:
cd $(srcdir) && for file in *.info*; do \
rm -f $(infodir)/$$file; \
$(PRE_UNINSTALL)
@if $(SHELL) -c 'install-info --version | sed 1q | fgrep -s -v -i debian' >/dev/null 2>&1; then \
ii=yes; \
else ii=; fi; \
for file in $(INFO_DEPS); do \
test -z $ii || install-info --info-dir=$(infodir) --remove $$file; \
done
$(NORMAL_UNINSTALL)
for file in $(INFO_DEPS); do \
(cd $(infodir) && rm -f $$file $$file-[0-9] $$file-[0-9][0-9]); \
done
mostlyclean-info:
dist-info: $(INFO_DEPS)
for base in $(INFO_DEPS); do \
d=$(srcdir); \
for file in `cd $$d && eval echo $$base*`; do \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done; \
done
mostlyclean-aminfo:
rm -f fileutils.aux fileutils.cp fileutils.cps fileutils.dvi \
fileutils.fn fileutils.fns fileutils.ky fileutils.log \
fileutils.pg fileutils.toc fileutils.tp fileutils.vr \
fileutils.op
fileutils.pg fileutils.toc fileutils.tp fileutils.tps \
fileutils.vr fileutils.vrs fileutils.op fileutils.tr \
fileutils.cv
clean-info:
clean-aminfo:
distclean-info:
distclean-aminfo:
maintainer-clean-info:
rm -f $(INFOS)
maintainer-clean-aminfo:
for i in $(INFO_DEPS); do rm -f `eval echo $$i*`; done
tags: TAGS
TAGS:
@@ -145,33 +242,39 @@ TAGS:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = doc
distdir: $(DEP_DISTFILES)
@for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
distdir: $(DISTFILES)
here=`cd $(top_builddir) && pwd`; \
top_distdir=`cd $(top_distdir) && pwd`; \
cd $(top_srcdir) \
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnits doc/Makefile
@for file in $(DISTFILES); do \
d=$(srcdir); \
test -f $(distdir)/$$file \
|| ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $(srcdir)/$$file $(distdir)/$$file; \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done
$(MAKE) top_distdir="$(top_distdir)" distdir="$(distdir)" dist-info
info: $(INFO_DEPS)
dvi: $(DVIS)
check: all
$(MAKE)
installcheck:
install-exec:
@$(NORMAL_INSTALL)
install-data: install-info
install-data: install-info-am
@$(NORMAL_INSTALL)
install: install-exec install-data all
@:
uninstall: uninstall-info
all: $(INFO_DEPS) Makefile
all: Makefile $(INFO_DEPS)
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
$(mkinstalldirs) $(infodir)
@@ -181,36 +284,34 @@ mostlyclean-generic:
clean-generic:
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
distclean-generic:
rm -f Makefile $(DISTCLEANFILES)
rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
rm -f config.cache config.log stamp-h stamp-h[0-9]*
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-vti mostlyclean-info mostlyclean-generic
mostlyclean: mostlyclean-vti mostlyclean-aminfo mostlyclean-generic
clean: clean-vti clean-info clean-generic mostlyclean
clean: clean-vti clean-aminfo clean-generic mostlyclean
distclean: distclean-vti distclean-info distclean-generic clean
distclean: distclean-vti distclean-aminfo distclean-generic clean
rm -f config.status
maintainer-clean: maintainer-clean-vti maintainer-clean-info \
maintainer-clean-generic distclean
maintainer-clean: maintainer-clean-vti maintainer-clean-aminfo \
maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
.PHONY: default mostlyclean-vti distclean-vti clean-vti \
maintainer-clean-vti install-info uninstall-info mostlyclean-info \
distclean-info clean-info maintainer-clean-info tags distdir info dvi \
check installcheck install-exec install-data install uninstall all \
maintainer-clean-vti install-info-am uninstall-info mostlyclean-aminfo \
distclean-aminfo clean-aminfo maintainer-clean-aminfo tags distdir info \
dvi installcheck install-exec install-data install uninstall all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
.SUFFIXES:
.SUFFIXES: .texi .info .dvi
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.

View File

@@ -1,10 +1,3 @@
@ifinfo
@set Francois Franc,ois
@end ifinfo
@tex
@set Francois Fran\noexpand\ptexc cois
@end tex
@node Date input formats
@chapter Date input formats
@@ -51,7 +44,7 @@ midnight, 1 January 1970 UCT.
* General date syntax:: Common rules.
* Calendar date item:: 19 Dec 1994.
* Time of day item:: 9:20pm.
* Timezone item:: EST, DST, BST, UCT, AHST, ...
* Timezone item:: EST, DST, BST, UCT, HAST, ...
* Day of week item:: Monday and others.
* Relative item in date strings:: next tuesday, 2 years ago.
* Pure numbers in date strings:: 19931219, 1440.
@@ -77,7 +70,7 @@ many flavors of items:
@item time zone items
@item day of the week items
@item relative items
@item pure numbers.
@item pure numbers.
@end itemize
@noindent We describe each of these item types in turn, below.
@@ -113,7 +106,7 @@ zeros on numbers are ignored.
@cindex calendar date item
A @dfn{calendar date item} specifies a day of the year. It is
A @dfn{calendar date item} specifies a day of the year. It is
specified differently, depending on whether the month is specified
numerically or literally. All these strings specify the same calendar date:
@@ -279,7 +272,7 @@ militaries.
@cindex Alaska-Hawaii Time
@cindex Central Alaska Time
@cindex Hawaii Standard Time
@samp{AHST} for Alaska-Hawaii Standard, @samp{CAT} for Central Alaska,
@samp{HAST} for Hawaii-Aleutian Standard, @samp{CAT} for Central Alaska,
@samp{HST} for Hawaii Standard and @samp{K} for militaries.
@item +1100
@cindex Nome Standard Time
@@ -355,8 +348,6 @@ may be specified.
@samp{PDT} for Pacific Daylight.
@item +900
@samp{YDT} for Yukon Daylight.
@item +1000
@samp{HDT} for Hawaii Daylight.
@item -100
@samp{MEST} for Middle European Summer, @samp{MESZ} for Middle European
Summer, @samp{SST} for Swedish Summer and @samp{FST} for French Summer.
@@ -503,6 +494,6 @@ and others.
@cindex Pinard, F.
@cindex Berry, K.
This chapter was originally produced by @value{Francois} Pinard
This chapter was originally produced by Fran@,{c}ois Pinard
(@samp{pinard@@iro.umontreal.ca}) from the @file{getdate.y} source code,
and then edited by K.@: Berry (@samp{kb@@cs.umb.edu}).

View File

@@ -1,7 +1,7 @@
#!/bin/sh
# mdate-sh - get modification time of a file and pretty-print it
# Copyright (C) 1995 Software Foundation, Inc.
# Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
# Get modification time of a file or directory and pretty-print it.
# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
# written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -14,8 +14,8 @@
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Prevent date giving response in another language.
LANG=C
@@ -25,14 +25,15 @@ export LC_ALL
LC_TIME=C
export LC_TIME
# Get the extended ls output of the file.
# Get the extended ls output of the file or directory.
# On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
if ls -L /dev/null 1>/dev/null 2>&1; then
set - `ls -L -l $1`
set - x`ls -L -l -d $1`
else
set - `ls -l $1`
set - x`ls -l -d $1`
fi
# The month is at least the fourth argument.
# (3 shifts here, the next inside the loop)
# The month is at least the fourth argument
# (3 shifts here, the next inside the loop).
shift
shift
shift

View File

@@ -18,12 +18,7 @@
@syncodeindex pg cp
@syncodeindex vr cp
@ifinfo
@set Francois Franc,ois
@end ifinfo
@tex
@set Francois Fran\noexpand\ptexc cois
@end tex
@set Francois Fran@,{c}ois
@ifinfo
@format
@@ -172,7 +167,7 @@ The GNU shell utilities are mostly compatible with the POSIX.2 standard.
@c This paragraph appears in all of fileutils.texi, textutils.texi, and
@c sh-utils.texi too -- so be sure to keep them consistent.
@cindex bugs, reporting
Please report bugs to @samp{bug-gnu-utils@@prep.ai.mit.edu}. Remember
Please report bugs to @samp{sh-utils-bugs@@gnu.ai.mit.edu}. Remember
to include the version number, machine architecture, input files, and
any other information needed to reproduce the bug: your input, what you
expected, what you got, and why it is wrong. Diffs are welcome, but
@@ -184,11 +179,13 @@ sometimes difficult to infer. @xref{Bugs, , , gcc, GNU CC}.
@cindex Meyering, Jim
@c Sorry, but the @value trick doesn't work with TeX in indexing
@c commands, and I don't want to fix it right now. --karl.
@cindex Pinard, Francois
@cindex Pinard, @value{Francois}
@cindex Berry, Karl
@cindex Stallman, Richard
This manual is based on the Unix man pages in the distribution, which
were originally written by David MacKenzie and updated by Jim Meyering.
This manual was originally derived from the Unix man pages in the
distribution, which were written by David MacKenzie and updated by Jim
Meyering. What you are reading now is the authoritative documentation
for these utilities; the man pages are no longer being maintained.
@value{Francois} Pinard did the initial conversion to Texinfo format.
Karl Berry did the indexing, some reorganization, and editing of the results.
Richard Stallman contributed his usual invaluable insights to the
@@ -724,7 +721,7 @@ Exit status:
@menu
* Relations for expr:: | & < <= = == != >= >
* Numeric expressions:: + - * / %
* String expressions:: : match substr index length
* String expressions:: <colon> match substr index length quote
* Examples of expr:: Examples.
@end menu
@@ -845,9 +842,9 @@ An alternative way to do pattern matching. This is the same as
@findex substr
Returns the substring of @var{string} beginning at @var{position}
with length at most @var{length}. If either @var{position} or
@var{length} is negative or non-numeric, returns the null string.
@var{length} is negative, zero, or non-numeric, returns the null string.
@item index @var{string} @var{character-class}
@item index @var{string} @var{charset}
@findex index
Returns the first position in @var{string} where the first character in
@var{charset} was found. If no character in @var{charset} is found in
@@ -857,9 +854,20 @@ Returns the first position in @var{string} where the first character in
@findex length
Returns the length of @var{string}.
@item quote @var{token}
@findex quote
Interpret @var{token} as a string, even if it is a keyword like @var{match}
or an operator like @code{/}.
This makes it possible to test @code{expr length quote "$x"} or
@code{expr quote "$x" : '.*/\(.\)'} and have it do the right thing even if
the value of @var{$x} happens to be (for example) @code{/} or @code{index}.
This operator is a GNU extension. It is disabled when
the environment variable @var{POSIXLY_CORRECT} is set.
@end table
The keywords cannot be used as strings.
To make @code{expr} interpret keywords as strings, you must use the
@code{quote} operator.
@node Examples of expr
@@ -886,6 +894,8 @@ expr index abcdef cz
@result{} 3
expr index index a
@error{} expr: syntax error
expr index quote index a
@result{} 0
@end example
@@ -2504,6 +2514,13 @@ Print the machine (hardware) type.
@cindex network node name
Print the machine's network node hostname.
@item -p
@itemx --processor
@opindex -p
@opindex --processor
@cindex host processor type
Print the machine's processor type
@item -r
@itemx --release
@opindex -r

File diff suppressed because it is too large Load Diff

View File

@@ -16,13 +16,6 @@
@syncodeindex pg cp
@syncodeindex vr cp
@ifinfo
@set Francois Franc,ois
@end ifinfo
@tex
@set Francois Fran\noexpand\ptexc cois
@end tex
@ifinfo
@format
START-INFO-DIR-ENTRY
@@ -150,17 +143,19 @@ The GNU text utilities are mostly compatible with the @sc{POSIX.2} standard.
@c This paragraph appears in all of fileutils.texi, textutils.texi, and
@c sh-utils.texi too -- so be sure to keep them consistent.
@cindex bugs, reporting
Please report bugs to @samp{bug-gnu-utils@@prep.ai.mit.edu}. Remember
Please report bugs to @samp{textutils-bugs@@gnu.ai.mit.edu}. Remember
to include the version number, machine architecture, input files, and
any other information needed to reproduce the bug: your input, what you
expected, what you got, and why it is wrong. Diffs are welcome, but
please include a description of the problem as well, since this is
sometimes difficult to infer. @xref{Bugs, , , gcc, GNU CC}.
This manual is based on the Unix man pages in the distribution, which
were originally written by David MacKenzie and updated by Jim Meyering.
This manual was originally derived from the Unix man pages in the
distribution, which were written by David MacKenzie and updated by Jim
Meyering. What you are reading now is the authoritative documentation
for these utilities; the man pages are no longer being maintained.
The original @code{fmt} man page was written by Ross Paterson.
@value{Francois} Pinard did the initial conversion to Texinfo format.
Fran@,{c}ois Pinard did the initial conversion to Texinfo format.
Karl Berry did the indexing, some reorganization, and editing of the results.
Richard Stallman contributed his usual invaluable insights to the
overall process.
@@ -841,10 +836,12 @@ leaving the code unchanged.
@pindex pr
@cindex printing, preparing files for
@cindex multicolumn output, generating
@cindex merging files in parallel
@code{pr} writes each @var{file} (@samp{-} means standard input), or
standard input if none are given, to standard output, paginating and
optionally outputting in multicolumn format. Synopsis:
optionally outputting in multicolumn format; optionally merges all
@var{file}s, printing all in parallel, one per column. Synopsis:
@example
pr [@var{option}]@dots{} [@var{file}]@dots{}
@@ -852,33 +849,50 @@ pr [@var{option}]@dots{} [@var{file}]@dots{}
By default, a 5-line header is printed: two blank lines; a line with the
date, the file name, and the page count; and two more blank lines. A
five line footer (entirely) is also printed.
footer of five blank lines is also printed. With the @samp{-f} option, a
3-line header is printed: the leading two blank lines are omitted; no
footer used. The default @var{page_length} in both cases is 66 lines.
The text line of the header takes up the full @var{page_width} in the
form @samp{yy-mm-dd HH:MM string Page nnnn}. String is a centered
string.
Form feeds in the input cause page breaks in the output.
Form feeds in the input cause page breaks in the output. Multiple form
feeds produce empty pages.
Columns have equal width, separated by an optional string (default
space). Lines will always be truncated to line width (default 72),
unless you use the @samp{-j} option. For single column output no line
truncation occurs by default. Use @samp{-w} option to truncate lines
in that case.
The program accepts the following options. Also see @ref{Common options}.
@table @samp
@item +@var{page}
Begin printing with page @var{page}.
@item +@var{first_page}[@var{:last_page}]
@opindex +@var{first_page}[@var{:last_page}]
Begin printing with page @var{first_page} and stop with
@var{last_page}. Missing @samp{:LAST_PAGE} implies end of file. While
estimating the number of skipped pages each form feed in the input file
results in a new page. Page counting with and without
@samp{+@var{first_page}} is identical. By default, it starts with the
first page of input file (not first page printed). Page numbering may be
altered by @samp{-N} option.
@item -@var{column}
@opindex -@var{column}
Produce @var{column}-column output and print columns down. The column
width is automatically decreased as @var{column} increases; unless you
use the @samp{-w} option to increase the page width as well, this option
might well cause some input to be truncated.
@cindex down columns
With each single @var{file}, produce @var{column}-column output and
print columns down. The column width is automatically estimated from
@var{page_width}. This option might well cause some columns to be
truncated. The number of lines in the columns on each page will be
balanced. @samp{-@var{column}} may not be used with @samp{-m} option.
@item -a
@opindex -a
@cindex across columns
Print columns across rather than down.
@item -b
@opindex -b
@cindex balancing columns
Balance columns on the last page.
With each single @var{file}, print columns across rather than down.
@var{column} must be greater than one.
@item -c
@opindex -c
@@ -903,11 +917,19 @@ is 8).
@itemx -F
@opindex -F
@opindex -f
Use a formfeed instead of newlines to separate output pages.
Use a form feed instead of newlines to separate output pages. Default
page length of 66 lines is not altered. But the number of lines of text
per page changes from 56 to 63 lines.
@item -h @var{header}
@item -h @var{HEADER}
@opindex -h
Replace the file name in the header with the string @var{header}.
Replace the file name in the header with the centered string
@var{header}. Left-hand-side truncation (marked by a @samp{*}) may occur
if the total header line @samp{yy-mm-dd HH:MM HEADER Page nnnn}
becomes larger than @var{page_width}. @samp{-h ""} prints a blank line
header. Don't use @samp{-h""}. A space between the -h option and the
argument is always peremptory.
@item -i[@var{out-tabchar}[@var{out-tabwidth}]]
@opindex -i
@@ -917,30 +939,54 @@ is the output tab character (default is @key{TAB}). Second optional
argument @var{out-tabwidth} is the output tab character's width (default
is 8).
@item -l @var{n}
@item -j
@opindex -j
Merge lines of full length. Used together with the column options
@samp{-@var{column}}, @samp{-a -@var{column}} or @samp{-m}. Turns off
@samp{-w} line truncation; no column alignment used; may be used with
@samp{-s[@var{separator}]}.
@item -l @var{page_length}
@opindex -l
Set the page length to @var{n} (default 66) lines. If @var{n} is less
than 10, the headers and footers are omitted, as if the @samp{-t} option
had been given.
Set the page length to @var{page_length} (default 66) lines. If
@var{page_length} is less than or equal 10 (and <= 3 with @samp{-f}),
the headers and footers are omitted, and all form feeds set in input
files are eliminated, as if the @samp{-T} option had been given.
@item -m
@opindex -m
Print all files in parallel, one in each column.
Merge and print all @var{file}s in parallel, one in each column. If a
line is too long to fit in a column, it is truncated (but see
@samp{-j}). @samp{-s[@var{separator}]} may be used. Empty pages in some
@var{file}s (form feeds set) produce empty columns, still marked by
@var{separator}. Completely empty common pages show no separators or
line numbers. The default header becomes
@samp{yy-mm-dd HH:MM <blanks> Page nnnn}; may be used with
@samp{-h @var{header}} to fill up the middle part.
@item -n[@var{number-separator}[@var{digits}]]
@opindex -n
Precede each column with a line number; with parallel files (@samp{-m}),
precede each line with a line number. Optional argument
Precede each column with a line number; with parallel @var{file}s
(@samp{-m}), precede only each line with a line number. Optional argument
@var{number-separator} is the character to print after each number
(default is @key{TAB}). Optional argument @var{digits} is the number of
digits per line number (default is 5).
digits per line number (default is 5). Default line counting starts with
first line of the input file (not with the first line printed, see
@samp{-N}).
@item -N @var{line_number}
@opindex -N
Start line counting with no. @var{line_number} at first line of first
page printed.
@item -o @var{n}
@opindex -o
@cindex indenting lines
@cindex left margin
Indent each line with @var{n} (default is zero) spaces wide, i.e., set
the left margin. The total page width is @samp{n} plus the width set
the left margin. The total page width is @var{n} plus the width set
with the @samp{-w} option.
@item -r
@@ -948,25 +994,44 @@ with the @samp{-w} option.
Do not print a warning message when an argument @var{file} cannot be
opened. (The exit status will still be nonzero, however.)
@item -s[@var{c}]
@item -s[@var{separator}]
@opindex -s
Separate columns by the single character @var{c}. If @var{c} is
omitted, the default is space; if this option is omitted altogether, the
default is @key{TAB}.
Separate columns by a string @var{separator}. Don't use
@samp{-s @var{separator}}, no space between flag and argument. If this
option is omitted altogether, the default is @key{TAB} together with
@samp{-j} option and space otherwise (same as @samp{-s" "}). With
@samp{-s} only, no separator is used (same as @samp{-s""}). @samp{-s}
does not affect line truncation or column alignment.
@item -t
@opindex -t
Do not print the usual 5-line header and the 5-line footer on each page,
and do not fill out the bottoms of pages (with blank lines or
formfeeds).
Do not print the usual header [and footer] on each page, and do not fill
out the bottoms of pages (with blank lines or a form feed). No page
structure is produced, but retain form feeds set in the input files. The
predefined page layout is not changed. @samp{-t} or @samp{-T} may be
useful together with other options; e.g.: @samp{-t -e4}, expand
@key{TAB} in the input file to 4 spaces but do not do any other changes.
Use of @samp{-t} overrides @samp{-h}.
@item -T
@opindex -T
Do not print header [and footer]. In addition eliminate all form feeds
set in the input files.
@item -v
@opindex -v
Print unprintable characters in octal backslash notation.
@item -w @var{n}
@item -w @var{page_width}
@opindex -w
Set the page width to @var{n} (default is 72) columns.
Set the page width to @var{page_width} (default 72) characters.
With/without @samp{-w}, header lines are always truncated to
@var{page_width} characters. With @samp{-w}, text lines are truncated,
unless @samp{-j} is used. Without @samp{-w} together with one of the
column options @samp{-@var{column}}, @samp{-a -@var{column}} or
@samp{-m}, default truncation of text lines to 72 characters is used.
Without @samp{-w} and without any of the column options, no line
truncation is used. That's equivalent to @samp{-w 72 -j}.
@end table
@@ -1259,7 +1324,7 @@ less than @var{bytes} bytes of the line are left, then continue
normally. @var{bytes} has the same format as for the @samp{--bytes}
option.
@itemx --verbose=@var{bytes}
@itemx --verbose
@opindex --verbose
Write a diagnostic to standard error just before each output file is opened.
@@ -1567,12 +1632,11 @@ options}.
If a @var{file} is specified as @samp{-} or if no files are given
@code{md5sum} computes the checksum for the standard input.
@code{md5sum} can also determine whether a file and checksum are
consistent. Synopsis:
consistent. Synopses:
@example
md5sum [@var{option}]@dots{} [@var{file}]@dots{}
md5sum [@var{option}]@dots{} --check [@var{file}]
md5sum [@var{option}]@dots{} --string=@var{string} @dots{}
@end example
For each @var{file}, @samp{md5sum} outputs the MD5 checksum, a flag
@@ -1629,11 +1693,6 @@ If all listed files are readable and are consistent with the associated
MD5 checksums, exit successfully. Otherwise exit with a status code
indicating there was a failure.
@itemx --string=@var{string}
@opindex --string
Compute the message digest for @var{string}, instead of for a file. The
result is the same as for a file that contains exactly @var{string}.
@item -t
@itemx --text
@opindex -t
@@ -1647,7 +1706,7 @@ Treat all input files as text files. This is the reverse of
@opindex -w
@opindex --warn
@cindex verifying MD5 checksums
When verifying checksums, warn about improperly formated MD5 checksum lines.
When verifying checksums, warn about improperly formatted MD5 checksum lines.
This option is useful only if all but a few lines in the checked input
are valid.
@@ -1904,11 +1963,8 @@ appended to it, in which case the global ordering options are not used
for that particular field. The @samp{-b} option may be independently
attached to either or both of the @samp{+@var{pos}} and
@samp{-@var{pos}} parts of a field specification, and if it is inherited
from the global options it will be attached to both. If a @samp{-n} or
@samp{-M} option is used, thus implying a @samp{-b} option, the
@samp{-b} option is taken to apply to both the @samp{+@var{pos}} and the
@samp{-@var{pos}} parts of a key specification. Keys may span multiple
fields.
from the global options it will be attached to both.
Keys may span multiple fields.
Here are some examples to illustrate various combinations of options.
In them, the @sc{POSIX} @samp{-k} option is used to specify sort keys rather
@@ -2113,6 +2169,11 @@ Columns are separated by @key{TAB}.
The options @samp{-1}, @samp{-2}, and @samp{-3} suppress printing of
the corresponding columns. Also see @ref{Common options}.
Unlike some other comparison utilities, @code{comm} has an exit
status that does not depend on the result of the comparison.
Upon normal completion @code{comm} produces an exit code of zero.
If there is an error it exits with nonzero status.
@node Operating on fields within a line
@chapter Operating on fields within a line
@@ -2399,7 +2460,7 @@ used only in @var{set1} or @var{set2}, as noted below.
@table @asis
@item Backslash escapes.
@item Backslash escapes
@cindex backslash escapes
A backslash followed by a character not listed below causes an error
@@ -2407,19 +2468,19 @@ message.
@table @samp
@item \a
Control-G,
Control-G.
@item \b
Control-H,
Control-H.
@item \f
Control-L,
Control-L.
@item \n
Control-J,
Control-J.
@item \r
Control-M,
Control-M.
@item \t
Control-I,
Control-I.
@item \v
Control-K,
Control-K.
@item \@var{ooo}
The character with the value given by @var{ooo}, which is 1 to 3
octal digits,
@@ -2427,7 +2488,7 @@ octal digits,
A backslash.
@end table
@item Ranges.
@item Ranges
@cindex ranges
The notation @samp{@var{m}-@var{n}} expands to all of the characters
@@ -2439,7 +2500,7 @@ enclose ranges, translations specified in that format will still work as
long as the brackets in @var{string1} correspond to identical brackets
in @var{string2}.
@item Repeated characters.
@item Repeated characters
@cindex repeated characters
The notation @samp{[@var{c}*@var{n}]} in @var{set2} expands to @var{n}
@@ -2449,7 +2510,7 @@ to as many copies of @var{c} as are needed to make @var{set2} as long as
@var{set1}. If @var{n} begins with @samp{0}, it is interpreted in
octal, otherwise in decimal.
@item Character classes.
@item Character classes
@cindex characters classes
The notation @samp{[:@var{class}:]} expands to all of the characters in
@@ -2504,7 +2565,7 @@ Uppercase letters.
Hexadecimal digits.
@end table
@item Equivalence classes.
@item Equivalence classes
@cindex equivalence classes
The syntax @samp{[=@var{c}=]} expands to all of the characters that are

View File

@@ -7,4 +7,3 @@ safe-lstat.c
safe-lstat.h
getdate.tab.c
.deps
group_member.c

View File

@@ -1,43 +1,25 @@
## Process this file with automake to produce Makefile.in
noinst_LIBRARIES = fu
noinst_LIBRARIES = libfu.a
EXTRA_DIST = alloca.c basename.c error.c euidaccess.c fnmatch.c fsusage.c \
ftruncate.c getdate.y getopt.c getopt1.c group-member.c \
memcmp.c memcpy.c memset.c \
mkdir.c mktime.c mountlist.c obstack.c posixtm.y rename.c rmdir.c rpmatch.c \
stpcpy.c strcasecmp.c strdup.c strndup.c strstr.c strtol.c strtoul.c
## FIXME: Remove mvdir.c, and rmdir.c when
## automake is fixed -- probably for 1.1g
EXTRA_DIST = chown.c mkdir.c rmdir.c getline.c mktime.c strftime.c getgroups.c
INCLUDES = -I.. -I$(srcdir)
INCLUDES = -I.. -I$(srcdir) -I../intl
fu_SOURCES = getdate.c getline.c posixtm.c argmatch.c backupfile.c \
dirname.c fileblocks.c filemode.c \
full-write.c getversion.c idcache.c \
libfu_a_SOURCES = getdate.y posixtm.y getopt.c getopt1.c \
addext.c argmatch.c backupfile.c basename.c dirname.c filemode.c \
full-write.c idcache.c \
isdir.c long-options.c makepath.c modechange.c path-concat.c \
safe-read.c save-cwd.c savedir.c stripslash.c userspec.c xgetcwd.c \
xmalloc.c xstrdup.c xstrtol.c xstrtoul.c yesno.c
fu_LIBADD = @LIBOBJS@ @ALLOCA@
libfu_a_LIBADD = @LIBOBJS@ @ALLOCA@
libfu_a_DEPENDENCIES = $(libfu_a_LIBADD)
noinst_HEADERS = argmatch.h backupfile.h error.h fnmatch.h fsusage.h \
getline.h getopt.h group-member.h long-options.h makepath.h modechange.h \
mountlist.h obstack.h path-concat.h pathmax.h save-cwd.h xstrtol.h xstrtoul.h
getdate.h getline.h getopt.h group-member.h long-options.h \
makepath.h modechange.h mountlist.h path-concat.h pathmax.h \
save-cwd.h xstrtol.h xstrtoul.h
BUILT_SOURCES = getdate.c posixtm.c
# Since this directory contains two parsers, we have to be careful to avoid
# running two $(YACC)s during parallel makes. See below.
getdate.c: @MAINT@getdate.y
@echo expect 10 shift/reduce conflicts
$(YACC) $(srcdir)/getdate.y
mv y.tab.c getdate.c
# Make the rename atomic, in case sed is interrupted and later rerun.
# The artificial dependency on getdate.c keeps the two parsers from being
# built in parallel. Enforcing this little bit of sequentiality lets
# everyone (even those without bison) still run mostly parallel builds.
posixtm.c: @MAINT@posixtm.y getdate.c
$(YACC) $(srcdir)/posixtm.y
mv y.tab.c posixtm.tab.c
sed -e 's/yy/zz/g' posixtm.tab.c > tposixtm.c
mv tposixtm.c posixtm.c
rm -f posixtm.tab.c

View File

@@ -1,6 +1,6 @@
# Makefile.in generated automatically by automake 1.1c from Makefile.am
# Makefile.in generated automatically by automake 1.2 from Makefile.am
# Copyright (C) 1994, 1995, 1996 Free Software Foundation, Inc.
# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
@@ -32,109 +32,146 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
noinst_LIBRARIES = fu
NORMAL_INSTALL = true
PRE_INSTALL = true
POST_INSTALL = true
NORMAL_UNINSTALL = true
PRE_UNINSTALL = true
POST_UNINSTALL = true
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CPP = @CPP@
DATADIRNAME = @DATADIRNAME@
DF_PROG = @DF_PROG@
GENCAT = @GENCAT@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GT_NO = @GT_NO@
GT_YES = @GT_YES@
INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
LIBOBJS = @LIBOBJS@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
MVDIR_PROG = @MVDIR_PROG@
PACKAGE = @PACKAGE@
PERL = @PERL@
POFILES = @POFILES@
POSUB = @POSUB@
RANLIB = @RANLIB@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
YACC = @YACC@
l = @l@
EXTRA_DIST = alloca.c basename.c error.c euidaccess.c fnmatch.c fsusage.c \
ftruncate.c getdate.y getopt.c getopt1.c group-member.c \
memcmp.c memcpy.c memset.c \
mkdir.c mktime.c mountlist.c obstack.c posixtm.y rename.c rmdir.c rpmatch.c \
stpcpy.c strcasecmp.c strdup.c strndup.c strstr.c strtol.c strtoul.c
noinst_LIBRARIES = libfu.a
INCLUDES = -I.. -I$(srcdir)
EXTRA_DIST = chown.c mkdir.c rmdir.c getline.c mktime.c strftime.c getgroups.c
fu_SOURCES = getdate.c getline.c posixtm.c argmatch.c backupfile.c \
dirname.c fileblocks.c filemode.c \
full-write.c getversion.c idcache.c \
INCLUDES = -I.. -I$(srcdir) -I../intl
libfu_a_SOURCES = getdate.y posixtm.y getopt.c getopt1.c \
addext.c argmatch.c backupfile.c basename.c dirname.c filemode.c \
full-write.c idcache.c \
isdir.c long-options.c makepath.c modechange.c path-concat.c \
safe-read.c save-cwd.c savedir.c stripslash.c userspec.c xgetcwd.c \
xmalloc.c xstrdup.c xstrtol.c xstrtoul.c yesno.c
fu_LIBADD = @LIBOBJS@ @ALLOCA@
libfu_a_LIBADD = @LIBOBJS@ @ALLOCA@
libfu_a_DEPENDENCIES = $(libfu_a_LIBADD)
noinst_HEADERS = argmatch.h backupfile.h error.h fnmatch.h fsusage.h \
getline.h getopt.h group-member.h long-options.h makepath.h modechange.h \
mountlist.h obstack.h path-concat.h pathmax.h save-cwd.h xstrtol.h xstrtoul.h
getdate.h getline.h getopt.h group-member.h long-options.h \
makepath.h modechange.h mountlist.h path-concat.h pathmax.h \
save-cwd.h xstrtol.h xstrtoul.h
BUILT_SOURCES = getdate.c posixtm.c
mkinstalldirs = $(top_srcdir)/mkinstalldirs
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
LIBRARIES = $(noinst_LIBRARIES)
LIBRARIES = $(noinst_LIBRARIES)
noinst_LIBFILES = libfu.a
DEFS = @DEFS@ -I. -I$(srcdir) -I..
CPPFLAGS = @CPPFLAGS@
LDFLAGS = @LDFLAGS@
LIBS = @LIBS@
fu_DEPENDENCIES = @LIBOBJS@ @ALLOCA@
fu_OBJECTS = getdate.o getline.o posixtm.o argmatch.o backupfile.o \
dirname.o fileblocks.o filemode.o full-write.o getversion.o idcache.o \
isdir.o long-options.o makepath.o modechange.o path-concat.o \
libfu_a_OBJECTS = getdate.o posixtm.o getopt.o getopt1.o addext.o \
argmatch.o backupfile.o basename.o dirname.o filemode.o full-write.o \
idcache.o isdir.o long-options.o makepath.o modechange.o path-concat.o \
safe-read.o save-cwd.o savedir.o stripslash.o userspec.o xgetcwd.o \
xmalloc.o xstrdup.o xstrtol.o xstrtoul.o yesno.o
EXTRA_fu_SOURCES =
LIBFILES = libfu.a
AR = ar
RANLIB = @RANLIB@
CC = @CC@
YLWRAP = $(srcdir)/ylwrap
CFLAGS = @CFLAGS@
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
LINK = $(CC) $(LDFLAGS) -o $@
HEADERS = $(noinst_HEADERS)
LINK = $(CC) $(CFLAGS) $(LDFLAGS) -o $@
HEADERS = $(noinst_HEADERS)
DIST_COMMON = Makefile.am Makefile.in
DIST_COMMON = Makefile.am Makefile.in alloca.c chown.c error.c error.h \
euidaccess.c fileblocks.c fnmatch.c fsusage.c ftruncate.c getdate.c \
getgroups.c getline.c group-member.c memcmp.c memcpy.c memset.c mkdir.c \
mktime.c mountlist.c obstack.c obstack.h posixtm.c regex.c regex.h \
rename.c rmdir.c rpmatch.c rx.c rx.h stpcpy.c strcasecmp.c strdup.c \
strftime.c strndup.c strstr.c strtol.c strtoul.c ylwrap
PACKAGE = @PACKAGE@
VERSION = @VERSION@
DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
$(TEXINFOS) $(INFOS) $(MANS) $(EXTRA_DIST) $(DATA)
DEP_DISTFILES = $(DIST_COMMON) $(SOURCES) $(BUILT_SOURCES) $(HEADERS) \
$(TEXINFOS) $(INFO_DEPS) $(MANS) $(EXTRA_DIST) $(DATA)
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
DEP_FILES = $(srcdir)/.deps/alloca.P $(srcdir)/.deps/argmatch.P \
$(srcdir)/.deps/backupfile.P $(srcdir)/.deps/dirname.P \
$(srcdir)/.deps/error.P $(srcdir)/.deps/fileblocks.P \
$(srcdir)/.deps/filemode.P $(srcdir)/.deps/fnmatch.P \
$(srcdir)/.deps/fsusage.P $(srcdir)/.deps/ftruncate.P \
$(srcdir)/.deps/full-write.P $(srcdir)/.deps/getdate.P \
$(srcdir)/.deps/getline.P $(srcdir)/.deps/getopt.P \
$(srcdir)/.deps/getopt1.P $(srcdir)/.deps/getversion.P \
$(srcdir)/.deps/idcache.P $(srcdir)/.deps/isdir.P \
$(srcdir)/.deps/long-options.P $(srcdir)/.deps/makepath.P \
$(srcdir)/.deps/modechange.P $(srcdir)/.deps/mountlist.P \
$(srcdir)/.deps/obstack.P $(srcdir)/.deps/path-concat.P \
$(srcdir)/.deps/posixtm.P $(srcdir)/.deps/safe-read.P \
$(srcdir)/.deps/save-cwd.P $(srcdir)/.deps/savedir.P \
$(srcdir)/.deps/stripslash.P $(srcdir)/.deps/userspec.P \
$(srcdir)/.deps/xgetcwd.P $(srcdir)/.deps/xmalloc.P \
$(srcdir)/.deps/xstrdup.P $(srcdir)/.deps/xstrtol.P \
$(srcdir)/.deps/xstrtoul.P $(srcdir)/.deps/yesno.P
SOURCES = $(fu_SOURCES)
OBJECTS = $(fu_OBJECTS)
GZIP = --best
DEP_FILES = .deps/addext.P .deps/alloca.P .deps/argmatch.P \
.deps/backupfile.P .deps/basename.P .deps/chown.P .deps/dirname.P \
.deps/error.P .deps/euidaccess.P .deps/fileblocks.P .deps/filemode.P \
.deps/fnmatch.P .deps/fsusage.P .deps/ftruncate.P .deps/full-write.P \
.deps/getdate.P .deps/getgroups.P .deps/getline.P .deps/getopt.P \
.deps/getopt1.P .deps/group-member.P .deps/idcache.P .deps/isdir.P \
.deps/long-options.P .deps/makepath.P .deps/memcmp.P .deps/memcpy.P \
.deps/memset.P .deps/mkdir.P .deps/mktime.P .deps/modechange.P \
.deps/mountlist.P .deps/obstack.P .deps/path-concat.P .deps/posixtm.P \
.deps/regex.P .deps/rename.P .deps/rmdir.P .deps/rpmatch.P .deps/rx.P \
.deps/safe-read.P .deps/save-cwd.P .deps/savedir.P .deps/stpcpy.P \
.deps/strcasecmp.P .deps/strdup.P .deps/strftime.P .deps/stripslash.P \
.deps/strndup.P .deps/strstr.P .deps/strtol.P .deps/strtoul.P \
.deps/userspec.P .deps/xgetcwd.P .deps/xmalloc.P .deps/xstrdup.P \
.deps/xstrtol.P .deps/xstrtoul.P .deps/yesno.P
SOURCES = $(libfu_a_SOURCES)
OBJECTS = $(libfu_a_OBJECTS)
default: all
.SUFFIXES:
.SUFFIXES: .c .h .o .y
$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile
$(srcdir)/Makefile.in: @MAINT@Makefile.am $(top_srcdir)/configure.in
cd $(top_srcdir) && automake $(subdir)/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
Makefile: $(top_builddir)/config.status Makefile.in
cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= ./config.status
mostlyclean-noinstLIBRARIES:
clean-noinstLIBRARIES:
test -z "$(noinst_LIBFILES)" || rm -f $(noinst_LIBFILES)
test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
distclean-noinstLIBRARIES:
@@ -152,81 +189,97 @@ distclean-compile:
rm -f *.tab.c
maintainer-clean-compile:
$(fu_OBJECTS): ../config.h
libfu.a: $(fu_OBJECTS) $(fu_DEPENDENCIES)
libfu.a: $(libfu_a_OBJECTS) $(libfu_a_DEPENDENCIES)
rm -f libfu.a
$(AR) cru libfu.a $(fu_OBJECTS) $(fu_LIBADD)
$(AR) cru libfu.a $(libfu_a_OBJECTS) $(libfu_a_LIBADD)
$(RANLIB) libfu.a
.y.c:
$(SHELL) $(YLWRAP) "$(YACC)" $< y.tab.c $*.c y.tab.h $*.h -- $(YFLAGS)
.y.h:
$(SHELL) $(YLWRAP) "$(YACC)" $< y.tab.c $*.c y.tab.h $*.h -- $(YFLAGS)
tags: TAGS
ID: $(HEADERS) $(SOURCES)
here=`pwd` && cd $(srcdir) && mkid -f$$here/ID $(SOURCES) $(HEADERS)
tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
here=`pwd` && cd $(srcdir) && etags $(ETAGS_ARGS) $(SOURCES) $(HEADERS) -o $$here/TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES)
tags=; \
here=`pwd`; \
test -z "$(ETAGS_ARGS)$(SOURCES)$(HEADERS)$$tags" \
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $(SOURCES) $(HEADERS) -o $$here/TAGS)
mostlyclean-tags:
clean-tags:
distclean-tags:
rm -f TAGS ID
maintainer-clean-tags:
rm -f TAGS ID
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = lib
distdir: $(DEP_DISTFILES)
@for file in `cd $(srcdir) && echo $(DISTFILES)`; do \
distdir: $(DISTFILES)
here=`cd $(top_builddir) && pwd`; \
top_distdir=`cd $(top_distdir) && pwd`; \
cd $(top_srcdir) \
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnits lib/Makefile
@for file in $(DISTFILES); do \
d=$(srcdir); \
test -f $(distdir)/$$file \
|| ln $(srcdir)/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $(srcdir)/$$file $(distdir)/$$file; \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done
MKDEP = gcc -MM $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
MKDEP = gcc -M $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS)
-include $(srcdir)/.deps/.P
$(srcdir)/.deps/.P: $(BUILT_SOURCES)
cd $(srcdir) && test -d .deps || mkdir .deps
DEPS_MAGIC := $(shell mkdir .deps > /dev/null 2>&1 || :)
-include .deps/.P
.deps/.P: $(BUILT_SOURCES)
echo > $@
-include $(DEP_FILES)
$(DEP_FILES): $(srcdir)/.deps/.P
$(srcdir)/.deps/%.P: $(srcdir)/%.c
@echo "mkdeps $< > $@"
@re=`echo 's,^$(srcdir)//*,,g;s, $(srcdir)//*, ,g' | sed 's,\.,\\\\.,g'`; \
$(MKDEP) $< | sed "$$re" > $@-tmp
@if test -n "$o"; then \
sed 's/\.o:/$$o:/' $@-tmp > $@; \
rm $@-tmp; \
else \
mv $@-tmp $@; \
fi
mostlyclean-depend:
clean-depend:
distclean-depend:
maintainer-clean-depend:
rm -rf .deps
.deps/%.P: %.c
@echo "Computing dependencies for $<..."
@o='o'; \
test -n "$o" && o='$$o'; \
$(MKDEP) $< >$@.tmp \
&& sed "s,^\(.*\)\.o:,\1.$$o \1.l$$o $@:," < $@.tmp > $@ \
&& rm -f $@.tmp
info:
dvi:
check: all
$(MAKE)
installcheck:
install-exec:
@$(NORMAL_INSTALL)
install-data:
@$(NORMAL_INSTALL)
install: install-exec install-data all
@:
uninstall:
all: $(LIBFILES) $(HEADERS) Makefile
all: Makefile $(LIBRARIES) $(HEADERS)
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' install
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
@@ -235,28 +288,29 @@ mostlyclean-generic:
clean-generic:
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
distclean-generic:
rm -f Makefile $(DISTCLEANFILES)
rm -f config.cache config.log $(CONFIG_HEADER) stamp-h
rm -f config.cache config.log stamp-h stamp-h[0-9]*
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-noinstLIBRARIES mostlyclean-compile \
mostlyclean-tags mostlyclean-generic
mostlyclean-tags mostlyclean-depend mostlyclean-generic
clean: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
mostlyclean
clean: clean-noinstLIBRARIES clean-compile clean-tags clean-depend \
clean-generic mostlyclean
distclean: distclean-noinstLIBRARIES distclean-compile distclean-tags \
distclean-generic clean
distclean-depend distclean-generic clean
rm -f config.status
maintainer-clean: maintainer-clean-noinstLIBRARIES \
maintainer-clean-compile maintainer-clean-tags \
maintainer-clean-generic distclean
maintainer-clean-depend maintainer-clean-generic \
distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
@@ -264,32 +318,13 @@ maintainer-clean: maintainer-clean-noinstLIBRARIES \
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
mostlyclean-compile distclean-compile clean-compile \
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
clean-tags maintainer-clean-tags distdir info dvi check installcheck \
install-exec install-data install uninstall all installdirs \
mostlyclean-generic distclean-generic clean-generic \
clean-tags maintainer-clean-tags distdir mostlyclean-depend \
distclean-depend clean-depend maintainer-clean-depend info dvi \
installcheck install-exec install-data install uninstall all \
installdirs mostlyclean-generic distclean-generic clean-generic \
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
# Since this directory contains two parsers, we have to be careful to avoid
# running two $(YACC)s during parallel makes. See below.
getdate.c: @MAINT@getdate.y
@echo expect 10 shift/reduce conflicts
$(YACC) $(srcdir)/getdate.y
mv y.tab.c getdate.c
# Make the rename atomic, in case sed is interrupted and later rerun.
# The artificial dependency on getdate.c keeps the two parsers from being
# built in parallel. Enforcing this little bit of sequentiality lets
# everyone (even those without bison) still run mostly parallel builds.
posixtm.c: @MAINT@posixtm.y getdate.c
$(YACC) $(srcdir)/posixtm.y
mv y.tab.c posixtm.tab.c
sed -e 's/yy/zz/g' posixtm.tab.c > tposixtm.c
mv tposixtm.c posixtm.c
rm -f posixtm.tab.c
.SUFFIXES:
.SUFFIXES: .c .o
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

106
lib/addext.c Normal file
View File

@@ -0,0 +1,106 @@
/* addext.c -- add an extension to a file name
Copyright (C) 1990, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by David MacKenzie <djm@gnu.ai.mit.edu> and Paul Eggert */
#if HAVE_CONFIG_H
# include <config.h>
#endif
#ifndef HAVE_DOS_FILE_NAMES
#define HAVE_DOS_FILE_NAMES 0
#endif
#ifndef HAVE_LONG_FILE_NAMES
#define HAVE_LONG_FILE_NAMES 0
#endif
#include <backupfile.h>
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#ifndef _POSIX_NAME_MAX
#define _POSIX_NAME_MAX 14
#endif
#include <sys/types.h>
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
#endif
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
/* Append to FILENAME the extension EXT, unless the result would be too long,
in which case just append the character E. */
void
addext (filename, ext, e)
char *filename;
char const *ext;
int e;
{
char *s = base_name (filename);
size_t slen = strlen (s), extlen = strlen (ext);
long slen_max = -1;
#if HAVE_PATHCONF && defined _PC_NAME_MAX
if (slen + extlen <= _POSIX_NAME_MAX && ! HAVE_DOS_FILE_NAMES)
/* The file name is so short there's no need to call pathconf. */
slen_max = _POSIX_NAME_MAX;
else if (s == filename)
slen_max = pathconf (".", _PC_NAME_MAX);
else
{
char c = *s;
*s = 0;
slen_max = pathconf (filename, _PC_NAME_MAX);
*s = c;
}
#endif
if (slen_max < 0)
slen_max = HAVE_LONG_FILE_NAMES ? 255 : 14;
if (HAVE_DOS_FILE_NAMES && slen_max <= 12)
{
/* Live within DOS's 8.3 limit. */
char *dot = strchr (s, '.');
if (dot)
{
slen -= dot + 1 - s;
s = dot + 1;
slen_max = 3;
}
else
slen_max = 8;
extlen = 9; /* Don't use EXT. */
}
if (slen + extlen <= slen_max)
strcpy (s + slen, ext);
else
{
if (slen_max <= slen)
slen = slen_max - 1;
s[slen] = e;
s[slen + 1] = 0;
}
}

View File

@@ -1,37 +1,42 @@
/*
alloca -- (mostly) portable public-domain implementation -- D A Gwyn
/* alloca.c -- allocate automatically reclaimed memory
(Mostly) portable public-domain implementation -- D A Gwyn
last edit: 86/05/30 rms
include config.h, since on VMS it renames some symbols.
Use xmalloc instead of malloc.
This implementation of the PWB library alloca function,
which is used to allocate space off the run-time stack so
that it is automatically reclaimed upon procedure exit,
was inspired by discussions with J. Q. Johnson of Cornell.
J.Otto Tennant <jot@cray.com> contributed the Cray support.
This implementation of the PWB library alloca() function,
which is used to allocate space off the run-time stack so
that it is automatically reclaimed upon procedure exit,
was inspired by discussions with J. Q. Johnson of Cornell.
There are some preprocessor constants that can
be defined when compiling for your specific system, for
improved efficiency; however, the defaults should be okay.
It should work under any C implementation that uses an
actual procedure stack (as opposed to a linked list of
frames). There are some preprocessor constants that can
be defined when compiling for your specific system, for
improved efficiency; however, the defaults should be okay.
The general concept of this implementation is to keep
track of all alloca-allocated blocks, and reclaim any
that are found to be deeper in the stack than the current
invocation. This heuristic does not reclaim storage as
soon as it becomes invalid, but it will do so eventually.
The general concept of this implementation is to keep
track of all alloca()-allocated blocks, and reclaim any
that are found to be deeper in the stack than the current
invocation. This heuristic does not reclaim storage as
soon as it becomes invalid, but it will do so eventually.
As a special case, alloca(0) reclaims storage without
allocating any. It is a good idea to use alloca(0) in
your main control loop, etc. to force garbage collection. */
As a special case, alloca(0) reclaims storage without
allocating any. It is a good idea to use alloca(0) in
your main control loop, etc. to force garbage collection.
*/
#ifndef lint
static char SCCSid[] = "@(#)alloca.c 1.1"; /* for the "what" utility */
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#ifdef emacs
#include "config.h"
#include "blockinput.h"
#endif
/* If compiling with GCC 2, this file's not needed. */
#if !defined (__GNUC__) || __GNUC__ < 2
/* If someone has defined alloca as a macro,
there must be some other way alloca is supposed to work. */
#ifndef alloca
#ifdef emacs
#ifdef static
/* actually, only want this if static is defined as ""
-- this is for usg, in which emacs must undefine static
@@ -45,72 +50,90 @@ lose
#endif /* static */
#endif /* emacs */
#ifndef alloca /* If compiling with GCC, this file's not needed. */
/* If your stack is a linked list of frames, you have to
provide an "address metric" ADDRESS_FUNCTION macro. */
#ifdef __STDC__
typedef void *pointer; /* generic pointer type */
#if defined (CRAY) && defined (CRAY_STACKSEG_END)
long i00afunc ();
#define ADDRESS_FUNCTION(arg) (char *) i00afunc (&(arg))
#else
typedef char *pointer; /* generic pointer type */
#define ADDRESS_FUNCTION(arg) &(arg)
#endif
#define NULL 0 /* null pointer constant */
#if __STDC__
typedef void *pointer;
#else
typedef char *pointer;
#endif
extern void free();
extern pointer xmalloc();
#define NULL 0
/*
Define STACK_DIRECTION if you know the direction of stack
growth for your system; otherwise it will be automatically
deduced at run-time.
/* Different portions of Emacs need to call different versions of
malloc. The Emacs executable needs alloca to call xmalloc, because
ordinary malloc isn't protected from input signals. On the other
hand, the utilities in lib-src need alloca to call malloc; some of
them are very simple, and don't have an xmalloc routine.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown
*/
Non-Emacs programs expect this to call xmalloc.
Callers below should use malloc. */
#ifndef emacs
#define malloc xmalloc
#endif
extern pointer malloc ();
/* Define STACK_DIRECTION if you know the direction of stack
growth for your system; otherwise it will be automatically
deduced at run-time.
STACK_DIRECTION > 0 => grows toward higher addresses
STACK_DIRECTION < 0 => grows toward lower addresses
STACK_DIRECTION = 0 => direction of growth unknown */
#ifndef STACK_DIRECTION
#define STACK_DIRECTION 0 /* direction unknown */
#define STACK_DIRECTION 0 /* Direction unknown. */
#endif
#if STACK_DIRECTION != 0
#define STACK_DIR STACK_DIRECTION /* known at compile-time */
#define STACK_DIR STACK_DIRECTION /* Known at compile-time. */
#else /* STACK_DIRECTION == 0; need run-time code */
#else /* STACK_DIRECTION == 0; need run-time code. */
static int stack_dir; /* 1 or -1 once known */
static int stack_dir; /* 1 or -1 once known. */
#define STACK_DIR stack_dir
static void
find_stack_direction (/* void */)
find_stack_direction ()
{
static char *addr = NULL; /* address of first
`dummy', once known */
auto char dummy; /* to get stack address */
static char *addr = NULL; /* Address of first `dummy', once known. */
auto char dummy; /* To get stack address. */
if (addr == NULL)
{ /* initial entry */
addr = &dummy;
{ /* Initial entry. */
addr = ADDRESS_FUNCTION (dummy);
find_stack_direction (); /* recurse once */
find_stack_direction (); /* Recurse once. */
}
else
{
/* Second entry. */
if (ADDRESS_FUNCTION (dummy) > addr)
stack_dir = 1; /* Stack grew upward. */
else
stack_dir = -1; /* Stack grew downward. */
}
else /* second entry */
if (&dummy > addr)
stack_dir = 1; /* stack grew upward */
else
stack_dir = -1; /* stack grew downward */
}
#endif /* STACK_DIRECTION == 0 */
#endif /* STACK_DIRECTION == 0 */
/*
An "alloca header" is used to:
(a) chain together all alloca()ed blocks;
(b) keep track of stack depth.
/* An "alloca header" is used to:
(a) chain together all alloca'ed blocks;
(b) keep track of stack depth.
It is very important that sizeof(header) agree with malloc()
alignment chunk size. The following default should work okay.
*/
It is very important that sizeof(header) agree with malloc
alignment chunk size. The following default should work okay. */
#ifndef ALIGN_SIZE
#define ALIGN_SIZE sizeof(double)
@@ -118,77 +141,352 @@ find_stack_direction (/* void */)
typedef union hdr
{
char align[ALIGN_SIZE]; /* to force sizeof(header) */
char align[ALIGN_SIZE]; /* To force sizeof(header). */
struct
{
union hdr *next; /* for chaining headers */
char *deep; /* for stack depth measure */
union hdr *next; /* For chaining headers. */
char *deep; /* For stack depth measure. */
} h;
} header;
/*
alloca( size ) returns a pointer to at least `size' bytes of
storage which will be automatically reclaimed upon exit from
the procedure that called alloca(). Originally, this space
was supposed to be taken from the current stack frame of the
caller, but that method cannot be made to work for some
implementations of C, for example under Gould's UTX/32.
*/
static header *last_alloca_header = NULL; /* -> last alloca header. */
static header *last_alloca_header = NULL; /* -> last alloca header */
/* Return a pointer to at least SIZE bytes of storage,
which will be automatically reclaimed upon exit from
the procedure that called alloca. Originally, this space
was supposed to be taken from the current stack frame of the
caller, but that method cannot be made to work for some
implementations of C, for example under Gould's UTX/32. */
pointer
alloca (size) /* returns pointer to storage */
unsigned size; /* # bytes to allocate */
alloca (size)
unsigned size;
{
auto char probe; /* probes stack depth: */
register char *depth = &probe;
auto char probe; /* Probes stack depth: */
register char *depth = ADDRESS_FUNCTION (probe);
#if STACK_DIRECTION == 0
if (STACK_DIR == 0) /* unknown growth direction */
if (STACK_DIR == 0) /* Unknown growth direction. */
find_stack_direction ();
#endif
/* Reclaim garbage, defined as all alloca()ed storage that
was allocated from deeper in the stack than currently. */
/* Reclaim garbage, defined as all alloca'd storage that
was allocated from deeper in the stack than currently. */
{
register header *hp; /* traverses linked list */
register header *hp; /* Traverses linked list. */
#ifdef emacs
BLOCK_INPUT;
#endif
for (hp = last_alloca_header; hp != NULL;)
if ((STACK_DIR > 0 && hp->h.deep > depth)
|| (STACK_DIR < 0 && hp->h.deep < depth))
{
register header *np = hp->h.next;
register header *np = hp->h.next;
free ((pointer) hp); /* collect garbage */
free ((pointer) hp); /* Collect garbage. */
hp = np; /* -> next header */
hp = np; /* -> next header. */
}
else
break; /* rest are not deeper */
break; /* Rest are not deeper. */
last_alloca_header = hp; /* -> last valid storage */
last_alloca_header = hp; /* -> last valid storage. */
#ifdef emacs
UNBLOCK_INPUT;
#endif
}
if (size == 0)
return NULL; /* no allocation required */
return NULL; /* No allocation required. */
/* Allocate combined header + user data storage. */
/* Allocate combined header + user data storage. */
{
register pointer new = xmalloc (sizeof (header) + size);
/* address of header */
register pointer new = malloc (sizeof (header) + size);
/* Address of header. */
((header *)new)->h.next = last_alloca_header;
((header *)new)->h.deep = depth;
((header *) new)->h.next = last_alloca_header;
((header *) new)->h.deep = depth;
last_alloca_header = (header *)new;
last_alloca_header = (header *) new;
/* User storage begins just after header. */
/* User storage begins just after header. */
return (pointer)((char *)new + sizeof(header));
return (pointer) ((char *) new + sizeof (header));
}
}
#if defined (CRAY) && defined (CRAY_STACKSEG_END)
#ifdef DEBUG_I00AFUNC
#include <stdio.h>
#endif
#ifndef CRAY_STACK
#define CRAY_STACK
#ifndef CRAY2
/* Stack structures for CRAY-1, CRAY X-MP, and CRAY Y-MP */
struct stack_control_header
{
long shgrow:32; /* Number of times stack has grown. */
long shaseg:32; /* Size of increments to stack. */
long shhwm:32; /* High water mark of stack. */
long shsize:32; /* Current size of stack (all segments). */
};
/* The stack segment linkage control information occurs at
the high-address end of a stack segment. (The stack
grows from low addresses to high addresses.) The initial
part of the stack segment linkage control information is
0200 (octal) words. This provides for register storage
for the routine which overflows the stack. */
struct stack_segment_linkage
{
long ss[0200]; /* 0200 overflow words. */
long sssize:32; /* Number of words in this segment. */
long ssbase:32; /* Offset to stack base. */
long:32;
long sspseg:32; /* Offset to linkage control of previous
segment of stack. */
long:32;
long sstcpt:32; /* Pointer to task common address block. */
long sscsnm; /* Private control structure number for
microtasking. */
long ssusr1; /* Reserved for user. */
long ssusr2; /* Reserved for user. */
long sstpid; /* Process ID for pid based multi-tasking. */
long ssgvup; /* Pointer to multitasking thread giveup. */
long sscray[7]; /* Reserved for Cray Research. */
long ssa0;
long ssa1;
long ssa2;
long ssa3;
long ssa4;
long ssa5;
long ssa6;
long ssa7;
long sss0;
long sss1;
long sss2;
long sss3;
long sss4;
long sss5;
long sss6;
long sss7;
};
#else /* CRAY2 */
/* The following structure defines the vector of words
returned by the STKSTAT library routine. */
struct stk_stat
{
long now; /* Current total stack size. */
long maxc; /* Amount of contiguous space which would
be required to satisfy the maximum
stack demand to date. */
long high_water; /* Stack high-water mark. */
long overflows; /* Number of stack overflow ($STKOFEN) calls. */
long hits; /* Number of internal buffer hits. */
long extends; /* Number of block extensions. */
long stko_mallocs; /* Block allocations by $STKOFEN. */
long underflows; /* Number of stack underflow calls ($STKRETN). */
long stko_free; /* Number of deallocations by $STKRETN. */
long stkm_free; /* Number of deallocations by $STKMRET. */
long segments; /* Current number of stack segments. */
long maxs; /* Maximum number of stack segments so far. */
long pad_size; /* Stack pad size. */
long current_address; /* Current stack segment address. */
long current_size; /* Current stack segment size. This
number is actually corrupted by STKSTAT to
include the fifteen word trailer area. */
long initial_address; /* Address of initial segment. */
long initial_size; /* Size of initial segment. */
};
/* The following structure describes the data structure which trails
any stack segment. I think that the description in 'asdef' is
out of date. I only describe the parts that I am sure about. */
struct stk_trailer
{
long this_address; /* Address of this block. */
long this_size; /* Size of this block (does not include
this trailer). */
long unknown2;
long unknown3;
long link; /* Address of trailer block of previous
segment. */
long unknown5;
long unknown6;
long unknown7;
long unknown8;
long unknown9;
long unknown10;
long unknown11;
long unknown12;
long unknown13;
long unknown14;
};
#endif /* CRAY2 */
#endif /* not CRAY_STACK */
#ifdef CRAY2
/* Determine a "stack measure" for an arbitrary ADDRESS.
I doubt that "lint" will like this much. */
static long
i00afunc (long *address)
{
struct stk_stat status;
struct stk_trailer *trailer;
long *block, size;
long result = 0;
/* We want to iterate through all of the segments. The first
step is to get the stack status structure. We could do this
more quickly and more directly, perhaps, by referencing the
$LM00 common block, but I know that this works. */
STKSTAT (&status);
/* Set up the iteration. */
trailer = (struct stk_trailer *) (status.current_address
+ status.current_size
- 15);
/* There must be at least one stack segment. Therefore it is
a fatal error if "trailer" is null. */
if (trailer == 0)
abort ();
/* Discard segments that do not contain our argument address. */
while (trailer != 0)
{
block = (long *) trailer->this_address;
size = trailer->this_size;
if (block == 0 || size == 0)
abort ();
trailer = (struct stk_trailer *) trailer->link;
if ((block <= address) && (address < (block + size)))
break;
}
/* Set the result to the offset in this segment and add the sizes
of all predecessor segments. */
result = address - block;
if (trailer == 0)
{
return result;
}
do
{
if (trailer->this_size <= 0)
abort ();
result += trailer->this_size;
trailer = (struct stk_trailer *) trailer->link;
}
while (trailer != 0);
/* We are done. Note that if you present a bogus address (one
not in any segment), you will get a different number back, formed
from subtracting the address of the first block. This is probably
not what you want. */
return (result);
}
#else /* not CRAY2 */
/* Stack address function for a CRAY-1, CRAY X-MP, or CRAY Y-MP.
Determine the number of the cell within the stack,
given the address of the cell. The purpose of this
routine is to linearize, in some sense, stack addresses
for alloca. */
static long
i00afunc (long address)
{
long stkl = 0;
long size, pseg, this_segment, stack;
long result = 0;
struct stack_segment_linkage *ssptr;
/* Register B67 contains the address of the end of the
current stack segment. If you (as a subprogram) store
your registers on the stack and find that you are past
the contents of B67, you have overflowed the segment.
B67 also points to the stack segment linkage control
area, which is what we are really interested in. */
stkl = CRAY_STACKSEG_END ();
ssptr = (struct stack_segment_linkage *) stkl;
/* If one subtracts 'size' from the end of the segment,
one has the address of the first word of the segment.
If this is not the first segment, 'pseg' will be
nonzero. */
pseg = ssptr->sspseg;
size = ssptr->sssize;
this_segment = stkl - size;
/* It is possible that calling this routine itself caused
a stack overflow. Discard stack segments which do not
contain the target address. */
while (!(this_segment <= address && address <= stkl))
{
#ifdef DEBUG_I00AFUNC
fprintf (stderr, "%011o %011o %011o\n", this_segment, address, stkl);
#endif
if (pseg == 0)
break;
stkl = stkl - pseg;
ssptr = (struct stack_segment_linkage *) stkl;
size = ssptr->sssize;
pseg = ssptr->sspseg;
this_segment = stkl - size;
}
result = address - this_segment;
/* If you subtract pseg from the current end of the stack,
you get the address of the previous stack segment's end.
This seems a little convoluted to me, but I'll bet you save
a cycle somewhere. */
while (pseg != 0)
{
#ifdef DEBUG_I00AFUNC
fprintf (stderr, "%011o %011o\n", pseg, size);
#endif
stkl = stkl - pseg;
ssptr = (struct stack_segment_linkage *) stkl;
size = ssptr->sssize;
pseg = ssptr->sspseg;
result += size;
}
return (result);
}
#endif /* not CRAY2 */
#endif /* CRAY */
#endif /* no alloca */
#endif /* not GCC version 2 */

View File

@@ -1,5 +1,5 @@
/* argmatch.c -- find a match for a string in an array
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -12,24 +12,27 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by David MacKenzie <djm@ai.mit.edu> */
/* Written by David MacKenzie <djm@gnu.ai.mit.edu> */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <argmatch.h>
#include <sys/types.h>
#include <stdio.h>
#ifdef STDC_HEADERS
#include <string.h>
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
#endif
extern char *program_name;
/* If ARG is an unambiguous match for an element of the
null-terminated array OPTLIST, return the index in OPTLIST
of the matched element, else -1 if it does not match any element

View File

@@ -1,18 +1,12 @@
#ifndef ARGMATCH_H
#define ARGMATCH_H 1
/* argmatch.h -- declarations for matching arguments against option lists */
#ifndef __P
# if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
# define __P(args) args
# else
# define __P(args) ()
# endif /* GCC. */
#endif /* Not __P. */
#if defined __STDC__ || __GNUC__
# define __ARGMATCH_P(args) args
#else
# define __ARGMATCH_P(args) ()
#endif
int
argmatch __P ((const char *arg, const char *const *optlist));
int argmatch __ARGMATCH_P ((const char *, const char * const *));
void invalid_arg __ARGMATCH_P ((const char *, const char *, int));
void
invalid_arg __P ((const char *kind, const char *value, int problem));
#endif /* ARGMATCH_H */
extern char *program_name;

View File

@@ -1,5 +1,5 @@
/* backupfile.c -- make Emacs style backup file names
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990,1991,1992,1993,1995,1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -12,75 +12,89 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* David MacKenzie <djm@gnu.ai.mit.edu>.
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>.
Some algorithms adapted from GNU Emacs. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <argmatch.h>
#include <backupfile.h>
#include <stdio.h>
#include <ctype.h>
#include <sys/types.h>
#include "backupfile.h"
#ifdef HAVE_STRING_H
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
#endif
#ifdef HAVE_DIRENT_H
#if HAVE_DIRENT_H
# include <dirent.h>
# define NLENGTH(direct) (strlen((direct)->d_name))
#else /* not HAVE_DIRENT_H */
# define NLENGTH(direct) strlen ((direct)->d_name)
#else
# define dirent direct
# define NLENGTH(direct) ((direct)->d_namlen)
# ifdef HAVE_SYS_NDIR_H
# define NLENGTH(direct) ((size_t) (direct)->d_namlen)
# if HAVE_SYS_NDIR_H
# include <sys/ndir.h>
# endif /* HAVE_SYS_NDIR_H */
# ifdef HAVE_SYS_DIR_H
# endif
# if HAVE_SYS_DIR_H
# include <sys/dir.h>
# endif /* HAVE_SYS_DIR_H */
# ifdef HAVE_NDIR_H
# endif
# if HAVE_NDIR_H
# include <ndir.h>
# endif /* HAVE_NDIR_H */
#endif /* HAVE_DIRENT_H */
# endif
#endif
#ifdef CLOSEDIR_VOID
#if CLOSEDIR_VOID
/* Fake a return value. */
# define CLOSEDIR(d) (closedir (d), 0)
#else
# define CLOSEDIR(d) closedir (d)
#endif
#ifdef STDC_HEADERS
#if STDC_HEADERS
# include <stdlib.h>
#else
char *malloc ();
#endif
#if defined (STDC_HEADERS) || (!defined (isascii) && !defined (HAVE_ISASCII))
# define IN_CTYPE_DOMAIN(c) 1
#if HAVE_DIRENT_H || HAVE_NDIR_H || HAVE_SYS_DIR_H || HAVE_SYS_NDIR_H
# define HAVE_DIR 1
#else
# define IN_CTYPE_DOMAIN(c) isascii(c)
# define HAVE_DIR 0
#endif
#define ISDIGIT(c) (IN_CTYPE_DOMAIN ((unsigned char) (c)) \
&& isdigit ((unsigned char) (c)))
#if defined (HAVE_UNISTD_H)
#include <unistd.h>
#if HAVE_LIMITS_H
# include <limits.h>
#endif
#ifndef CHAR_BIT
#define CHAR_BIT 8
#endif
/* Upper bound on the string length of an integer converted to string.
302 / 1000 is ceil (log10 (2.0)). Subtract 1 for the sign bit;
add 1 for integer division truncation; add 1 more for a minus sign. */
#define INT_STRLEN_BOUND(t) ((sizeof (t) * CHAR_BIT - 1) * 302 / 1000 + 2)
#if defined (_POSIX_VERSION)
/* POSIX does not require that the d_ino field be present, and some
systems do not provide it. */
# define REAL_DIR_ENTRY(dp) 1
#else
/* ISDIGIT differs from isdigit, as follows:
- Its arg may be any int or unsigned int; it need not be an unsigned char.
- It's guaranteed to evaluate its argument exactly once.
- It's typically faster.
Posix 1003.2-1992 section 2.5.2.1 page 50 lines 1556-1558 says that
only '0' through '9' are digits. Prefer ISDIGIT to isdigit unless
it's important to use the locale's definition of `digit' even when the
host does not conform to Posix. */
#define ISDIGIT(c) ((unsigned) (c) - '0' <= 9)
#if D_INO_IN_DIRENT
# define REAL_DIR_ENTRY(dp) ((dp)->d_ino != 0)
#else
# define REAL_DIR_ENTRY(dp) 1
#endif
/* Which type of backup file names are generated. */
@@ -88,15 +102,10 @@ enum backup_type backup_type = none;
/* The extension added to file names to produce a simple (as opposed
to numbered) backup file name. */
char *simple_backup_suffix = "~";
const char *simple_backup_suffix = ".orig";
char *basename ();
char *dirname ();
static char *concat ();
char *find_backup_file_name ();
static char *make_version_name ();
static int max_backup_version ();
static int version_number ();
static int max_backup_version __BACKUPFILE_P ((const char *, const char *));
static int version_number __BACKUPFILE_P ((const char *, const char *, size_t));
/* Return the name of the new backup file for file FILE,
allocated with malloc. Return 0 if out of memory.
@@ -107,33 +116,51 @@ char *
find_backup_file_name (file)
const char *file;
{
char *dir;
char *base_versions;
int highest_backup;
size_t backup_suffix_size_max;
size_t file_len = strlen (file);
size_t numbered_suffix_size_max = INT_STRLEN_BOUND (int) + 4;
char *s;
const char *suffix = simple_backup_suffix;
if (backup_type == simple)
return concat (file, simple_backup_suffix);
base_versions = concat (basename (file), ".~");
if (base_versions == 0)
return 0;
dir = dirname (file);
if (dir == 0)
/* Allow room for simple or `.~N~' backups. */
backup_suffix_size_max = strlen (simple_backup_suffix) + 1;
if (HAVE_DIR && backup_suffix_size_max < numbered_suffix_size_max)
backup_suffix_size_max = numbered_suffix_size_max;
s = malloc (file_len + backup_suffix_size_max + numbered_suffix_size_max);
if (s)
{
free (base_versions);
return 0;
strcpy (s, file);
#if HAVE_DIR
if (backup_type != simple)
{
int highest_backup;
size_t dir_len = base_name (s) - s;
strcpy (s + dir_len, ".");
highest_backup = max_backup_version (file + dir_len, s);
if (! (backup_type == numbered_existing && highest_backup == 0))
{
char *numbered_suffix = s + (file_len + backup_suffix_size_max);
sprintf (numbered_suffix, ".~%d~", highest_backup + 1);
suffix = numbered_suffix;
}
strcpy (s, file);
}
#endif /* HAVE_DIR */
addext (s, suffix, '~');
}
highest_backup = max_backup_version (base_versions, dir);
free (base_versions);
free (dir);
if (backup_type == numbered_existing && highest_backup == 0)
return concat (file, simple_backup_suffix);
return make_version_name (file, highest_backup + 1);
return s;
}
#if HAVE_DIR
/* Return the number of the highest-numbered backup file for file
FILE in directory DIR. If there are no numbered backups
of FILE in DIR, or an error occurs reading DIR, return 0.
FILE should already have ".~" appended to it. */
*/
static int
max_backup_version (file, dir)
@@ -155,7 +182,7 @@ max_backup_version (file, dir)
while ((dp = readdir (dirp)) != 0)
{
if (!REAL_DIR_ENTRY (dp) || NLENGTH (dp) <= file_name_length)
if (!REAL_DIR_ENTRY (dp) || NLENGTH (dp) < file_name_length + 4)
continue;
this_version = version_number (file, dp->d_name, file_name_length);
@@ -167,62 +194,59 @@ max_backup_version (file, dir)
return highest_version;
}
/* Return a string, allocated with malloc, containing
"FILE.~VERSION~". Return 0 if out of memory. */
static char *
make_version_name (file, version)
const char *file;
int version;
{
char *backup_name;
backup_name = malloc (strlen (file) + 16);
if (backup_name == 0)
return 0;
sprintf (backup_name, "%s.~%d~", file, version);
return backup_name;
}
/* If BACKUP is a numbered backup of BASE, return its version number;
otherwise return 0. BASE_LENGTH is the length of BASE.
BASE should already have ".~" appended to it. */
*/
static int
version_number (base, backup, base_length)
const char *base;
const char *backup;
int base_length;
size_t base_length;
{
int version;
const char *p;
version = 0;
if (!strncmp (base, backup, base_length) && ISDIGIT (backup[base_length]))
if (strncmp (base, backup, base_length) == 0
&& backup[base_length] == '.'
&& backup[base_length + 1] == '~')
{
for (p = &backup[base_length]; ISDIGIT (*p); ++p)
for (p = &backup[base_length + 2]; ISDIGIT (*p); ++p)
version = version * 10 + *p - '0';
if (p[0] != '~' || p[1])
version = 0;
}
return version;
}
#endif /* HAVE_DIR */
/* Return the newly-allocated concatenation of STR1 and STR2.
If out of memory, return 0. */
static char *
concat (str1, str2)
const char *str1;
const char *str2;
static const char * const backup_args[] =
{
char *newstr;
int str1_length = strlen (str1);
"never", "simple", "nil", "existing", "t", "numbered", 0
};
newstr = malloc (str1_length + strlen (str2) + 1);
if (newstr == 0)
return 0;
strcpy (newstr, str1);
strcpy (newstr + str1_length, str2);
return newstr;
static const enum backup_type backup_types[] =
{
simple, simple, numbered_existing, numbered_existing, numbered, numbered
};
/* Return the type of backup indicated by VERSION.
Unique abbreviations are accepted. */
enum backup_type
get_version (version)
const char *version;
{
int i;
if (version == 0 || *version == 0)
return numbered_existing;
i = argmatch (version, backup_args);
if (i < 0)
{
invalid_arg ("version control type", version, i);
exit (2);
}
return backup_types[i];
}

View File

@@ -1,5 +1,5 @@
/* backupfile.h -- declarations for making Emacs style backup file names
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990, 1991, 1992, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -12,8 +12,9 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
along with this program; see the file COPYING.
If not, write to the Free Software Foundation,
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* When to make backup files. */
enum backup_type
@@ -33,10 +34,17 @@ enum backup_type
};
extern enum backup_type backup_type;
extern char *simple_backup_suffix;
extern char const *simple_backup_suffix;
#ifdef __STDC__
char *find_backup_file_name (const char *file);
#else
char *find_backup_file_name ();
#ifndef __BACKUPFILE_P
# if defined __STDC__ || __GNUC__
# define __BACKUPFILE_P(args) args
# else
# define __BACKUPFILE_P(args) ()
# endif
#endif
char *base_name __BACKUPFILE_P ((char const *));
char *find_backup_file_name __BACKUPFILE_P ((char const *));
enum backup_type get_version __BACKUPFILE_P ((char const *));
void addext __BACKUPFILE_P ((char *, char const *, int));

View File

@@ -1,38 +1,30 @@
/* basename.c -- return the last element in a path
Copyright (C) 1990 Free Software Foundation, Inc.
/* basename.c -- return the last element in a path */
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
/* Return NAME with any leading path stripped off.
Don't use strrchr/rindex. */
#ifndef FILESYSTEM_PREFIX_LEN
# define FILESYSTEM_PREFIX_LEN(f) 0
#endif
#ifndef ISSLASH
# define ISSLASH(c) ((c) == '/')
#endif
/* In general, we can't use the builtin `basename' function if available,
since it has different meanings in different environments.
In some environments the builtin `basename' modifies its argument. */
char *
basename (name)
const char *name;
base_name (name)
char const *name;
{
const char *base = name;
char const *base = name += FILESYSTEM_PREFIX_LEN (name);
for (; *name; name++)
if (ISSLASH (*name))
base = name + 1;
while (*name)
{
if (*name == '/')
base = name + 1;
++name;
}
return (char *) base;
}

View File

@@ -22,6 +22,7 @@
# include <config.h>
#endif
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif

53
lib/chown.c Normal file
View File

@@ -0,0 +1,53 @@
/* provide consistent interface to chown for systems that don't interpret
an ID of -1 as meaning `don't change the corresponding ID'.
Copyright (C) 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* written by Jim Meyering */
#include <config.h>
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
# include <unistd.h>
#endif
/* FIXME: describe. */
int
chown (file, gid, uid)
const char *file;
gid_t git;
uid_t uit;
{
if (gid == (gid_t) -1 || uid == (uid_t) -1)
{
struct stat file_stats;
/* Stat file to get id(s) that should remain unchanged. */
if (stat (file, &file_stats))
return 1;
if (gid == (gid_t) -1)
gid = file_stats.st_gid;
if (uid == (uid_t) -1)
uid = file_stats.st_uid;
}
#undef chown
return chown (file, gid, uid);
}

View File

@@ -1,23 +1,23 @@
/* error.c -- error handler for noninteractive utilities
Copyright (C) 1990, 91, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
@@ -47,6 +47,9 @@ void exit ();
# define _(String) String
#endif
/* Get prototypes for the functions defined here. */
#include <error.h>
/* If NULL, error will flush stdout, then print on stderr the program
name, a colon and a space. Otherwise, error will call this
function without parameters instead. */
@@ -65,7 +68,7 @@ unsigned int error_message_count;
# define program_name program_invocation_name
# include <errno.h>
#else
#else /* not _LIBC */
/* The calling program should define program_name and set it to the
name of the executing program. */
@@ -89,7 +92,8 @@ private_strerror (errnum)
}
# define strerror private_strerror
# endif /* HAVE_STRERROR */
#endif /* _LIBC */
#endif /* not _LIBC */
/* Print the program name and error message MESSAGE, which is a printf-style
format string with optional args.

View File

@@ -1,22 +1,22 @@
/* error.h -- declaration for error-reporting function
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _error_h_
# define _error_h_
#ifndef ERROR_H_
# define ERROR_H_
# ifndef __attribute__
/* This feature is available in gcc versions 2.5 and later. */
@@ -62,4 +62,4 @@ extern unsigned int error_message_count;
variable controls whether this mode is selected or not. */
extern int error_one_per_line;
#endif /* _error_h_ */
#endif /* not ERROR_H_ */

View File

@@ -1,5 +1,5 @@
/* Convert file size to number of blocks on System V-like machines.
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -25,6 +25,10 @@
# include <sys/types.h>
# include <sys/param.h>
# if HAVE_UNISTD_H
# include <unistd.h>
# endif
# ifndef NINDIR
/* Some SysV's, like Irix, seem to lack these. Hope they're correct. */
/* Size of a indirect block, in bytes. */

View File

@@ -198,6 +198,17 @@ ftypelet (bits)
if (S_ISNWK (bits))
return 'n';
#endif
#ifdef S_ISOFD
/* Cray migrated dmf file. */
if (S_ISOFD (bits))
return 'M';
#endif
#ifdef S_ISOFL
/* Cray migrated dmf file. */
if (S_ISOFL (bits))
return 'M';
#endif
return '?';
}

View File

@@ -1,46 +1,42 @@
/* Copyright (C) 1991, 1992, 1993 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1992, 1993, 1997 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
NOTE: The canonical source of this file is maintained with the GNU C
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <errno.h>
#include <fnmatch.h>
#include <ctype.h>
/* Comment out all this code if we are using the GNU C Library, and are not
actually compiling the library itself. This code is part of the GNU C
Library, but also included in many other GNU distributions. Compiling
and linking in this code is a waste when using the GNU C library
(especially if it is a shared library). Rather than having every GNU
program understand `configure --with-gnu-libc' and omit the object files,
it is simpler to just do this in the source for each such file. */
#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
#ifndef errno
extern int errno;
#if defined (STDC_HEADERS) || !defined (isascii)
# define ISASCII(c) 1
#else
# define ISASCII(c) isascii(c)
#endif
#define ISUPPER(c) (ISASCII (c) && isupper (c))
# ifndef errno
extern int errno;
# endif
/* Match STRING against the filename pattern PATTERN, returning zero if
it matches, nonzero if not. */
int
@@ -52,8 +48,8 @@ fnmatch (pattern, string, flags)
register const char *p = pattern, *n = string;
register char c;
/* Note that this evalutes C many times. */
#define FOLD(c) ((flags & FNM_CASEFOLD) && isupper (c) ? tolower (c) : (c))
/* Note that this evaluates C many times. */
# define FOLD(c) ((flags & FNM_CASEFOLD) && ISUPPER (c) ? tolower (c) : (c))
while ((c = *p++) != '\0')
{
@@ -197,6 +193,6 @@ fnmatch (pattern, string, flags)
return 0;
return FNM_NOMATCH;
}
#endif /* _LIBC or not __GNU_LIBRARY__. */
# undef FOLD
}

View File

@@ -1,5 +1,5 @@
/* fsusage.c -- return space usage of mounted filesystems
Copyright (C) 1991, 1992 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,8 +15,8 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
@@ -25,40 +25,40 @@
int statfs ();
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
#if HAVE_SYS_PARAM_H
# include <sys/param.h>
#endif
#ifdef HAVE_SYS_MOUNT_H
#include <sys/mount.h>
#if HAVE_SYS_MOUNT_H
# include <sys/mount.h>
#endif
#ifdef HAVE_SYS_VFS_H
#include <sys/vfs.h>
#if HAVE_SYS_VFS_H
# include <sys/vfs.h>
#endif
#ifdef HAVE_SYS_FS_S5PARAM_H /* Fujitsu UXP/V */
#include <sys/fs/s5param.h>
#if HAVE_SYS_FS_S5PARAM_H /* Fujitsu UXP/V */
# include <sys/fs/s5param.h>
#endif
#if defined(HAVE_SYS_FILSYS_H) && !defined(_CRAY)
#include <sys/filsys.h> /* SVR2. */
#if defined (HAVE_SYS_FILSYS_H) && !defined (_CRAY)
# include <sys/filsys.h> /* SVR2 */
#endif
#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#if HAVE_FCNTL_H
# include <fcntl.h>
#endif
#ifdef HAVE_SYS_STATFS_H
#include <sys/statfs.h>
#if HAVE_SYS_STATFS_H
# include <sys/statfs.h>
#endif
#ifdef HAVE_DUSTAT_H /* AIX PS/2. */
#include <sys/dustat.h>
#if HAVE_DUSTAT_H /* AIX PS/2 */
# include <sys/dustat.h>
#endif
#ifdef HAVE_SYS_STATVFS_H /* SVR4. */
#include <sys/statvfs.h>
#if HAVE_SYS_STATVFS_H /* SVR4 */
# include <sys/statvfs.h>
int statvfs ();
#endif
@@ -78,11 +78,11 @@ adjust_blocks (blocks, fromsize, tosize)
if (fromsize <= 0)
return -1;
if (fromsize == tosize) /* E.g., from 512 to 512. */
if (fromsize == tosize) /* e.g., from 512 to 512 */
return blocks;
else if (fromsize > tosize) /* E.g., from 2048 to 512. */
else if (fromsize > tosize) /* e.g., from 2048 to 512 */
return blocks * (fromsize / tosize);
else /* E.g., from 256 to 512. */
else /* e.g., from 256 to 512 */
return (blocks + (blocks < 0 ? -1 : 1)) / (tosize / fromsize);
}
@@ -90,42 +90,56 @@ adjust_blocks (blocks, fromsize, tosize)
the filesystem on which PATH resides.
DISK is the device on which PATH is mounted, for space-getting
methods that need to know it.
Return 0 if successful, -1 if not. */
Return 0 if successful, -1 if not. When returning -1, ensure that
ERRNO is either a system error value, or zero if DISK is NULL
on a system that requires a non-NULL value. */
int
get_fs_usage (path, disk, fsp)
const char *path;
const char *disk;
struct fs_usage *fsp;
{
#if defined (STAT_STATFS3_OSF1)
#ifdef STAT_STATFS3_OSF1
# define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_fsize, 512)
struct statfs fsd;
if (statfs (path, &fsd, sizeof (struct statfs)) != 0)
return -1;
#define CONVERT_BLOCKS(b) adjust_blocks ((b), fsd.f_fsize, 512)
#endif /* STAT_STATFS3_OSF1 */
#ifdef STAT_STATFS2_FS_DATA /* Ultrix. */
#ifdef STAT_STATFS2_FS_DATA /* Ultrix */
# define CONVERT_BLOCKS(B) adjust_blocks ((B), 1024, 512)
struct fs_data fsd;
if (statfs (path, &fsd) != 1)
return -1;
#define CONVERT_BLOCKS(b) adjust_blocks ((b), 1024, 512)
fsp->fsu_blocks = CONVERT_BLOCKS (fsd.fd_req.btot);
fsp->fsu_bfree = CONVERT_BLOCKS (fsd.fd_req.bfree);
fsp->fsu_bavail = CONVERT_BLOCKS (fsd.fd_req.bfreen);
fsp->fsu_files = fsd.fd_req.gtot;
fsp->fsu_ffree = fsd.fd_req.gfree;
#endif
#ifdef STAT_READ_FILSYS /* SVR2. */
#ifndef SUPERBOFF
#define SUPERBOFF (SUPERB * 512)
#endif
#endif /* STAT_STATFS2_FS_DATA */
#ifdef STAT_READ_FILSYS /* SVR2 */
# ifndef SUPERBOFF
# define SUPERBOFF (SUPERB * 512)
# endif
# define CONVERT_BLOCKS(B) \
adjust_blocks ((B), (fsd.s_type == Fs2b ? 1024 : 512), 512)
struct filsys fsd;
int fd;
if (! disk)
{
errno = 0;
return -1;
}
fd = open (disk, O_RDONLY);
if (fd < 0)
return -1;
@@ -136,21 +150,24 @@ get_fs_usage (path, disk, fsp)
return -1;
}
close (fd);
#define CONVERT_BLOCKS(b) adjust_blocks ((b), (fsd.s_type == Fs2b ? 1024 : 512), 512)
fsp->fsu_blocks = CONVERT_BLOCKS (fsd.s_fsize);
fsp->fsu_bfree = CONVERT_BLOCKS (fsd.s_tfree);
fsp->fsu_bavail = CONVERT_BLOCKS (fsd.s_tfree);
fsp->fsu_files = (fsd.s_isize - 2) * INOPB * (fsd.s_type == Fs2b ? 2 : 1);
fsp->fsu_ffree = fsd.s_tinode;
#endif
#ifdef STAT_STATFS2_BSIZE /* 4.3BSD, SunOS 4, HP-UX, AIX. */
#endif /* STAT_READ_FILSYS */
#ifdef STAT_STATFS2_BSIZE /* 4.3BSD, SunOS 4, HP-UX, AIX */
# define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_bsize, 512)
struct statfs fsd;
if (statfs (path, &fsd) < 0)
return -1;
#ifdef STATFS_TRUNCATES_BLOCK_COUNTS
# ifdef STATFS_TRUNCATES_BLOCK_COUNTS
/* In SunOS 4.1.2, 4.1.3, and 4.1.3_U1, the block counts in the
struct statfs are truncated to 2GB. These conditions detect that
truncation, presumably without botching the 4.1.1 case, in which
@@ -162,20 +179,35 @@ get_fs_usage (path, disk, fsp)
fsd.f_bfree = fsd.f_spare[1];
fsd.f_bavail = fsd.f_spare[2];
}
#endif /* STATFS_TRUNCATES_BLOCK_COUNTS */
# endif /* STATFS_TRUNCATES_BLOCK_COUNTS */
#define CONVERT_BLOCKS(b) adjust_blocks ((b), fsd.f_bsize, 512)
#endif
#endif /* STAT_STATFS2_BSIZE */
#ifdef STAT_STATFS2_FSIZE /* 4.4BSD */
# define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_fsize, 512)
#ifdef STAT_STATFS2_FSIZE /* 4.4BSD. */
struct statfs fsd;
if (statfs (path, &fsd) < 0)
return -1;
#define CONVERT_BLOCKS(b) adjust_blocks ((b), fsd.f_fsize, 512)
#endif
#ifdef STAT_STATFS4 /* SVR3, Dynix, Irix, AIX. */
#endif /* STAT_STATFS2_FSIZE */
#ifdef STAT_STATFS4 /* SVR3, Dynix, Irix, AIX */
# if _AIX || defined(_CRAY)
# define CONVERT_BLOCKS(B) adjust_blocks ((B), fsd.f_bsize, 512)
# ifdef _CRAY
# define f_bavail f_bfree
# endif
# else
# define CONVERT_BLOCKS(B) (B)
# ifndef _SEQUENT_ /* _SEQUENT_ is DYNIX/ptx */
# ifndef DOLPHIN /* DOLPHIN 3.8.alfa/7.18 has f_bavail */
# define f_bavail f_bfree
# endif
# endif
# endif
struct statfs fsd;
if (statfs (path, &fsd, sizeof fsd, 0) < 0)
@@ -183,38 +215,31 @@ get_fs_usage (path, disk, fsp)
/* Empirically, the block counts on most SVR3 and SVR3-derived
systems seem to always be in terms of 512-byte blocks,
no matter what value f_bsize has. */
# if _AIX || defined(_CRAY)
# define CONVERT_BLOCKS(b) adjust_blocks ((b), fsd.f_bsize, 512)
# ifdef _CRAY
# define f_bavail f_bfree
# endif
# else
# define CONVERT_BLOCKS(b) (b)
# ifndef _SEQUENT_ /* _SEQUENT_ is DYNIX/ptx. */
# ifndef DOLPHIN /* DOLPHIN 3.8.alfa/7.18 has f_bavail */
# define f_bavail f_bfree
# endif
# endif
# endif
#endif
#ifdef STAT_STATVFS /* SVR4. */
#endif /* STAT_STATFS4 */
#ifdef STAT_STATVFS /* SVR4 */
# define CONVERT_BLOCKS(B) \
adjust_blocks ((B), fsd.f_frsize ? fsd.f_frsize : fsd.f_bsize, 512)
struct statvfs fsd;
if (statvfs (path, &fsd) < 0)
return -1;
/* f_frsize isn't guaranteed to be supported. */
#define CONVERT_BLOCKS(b) \
adjust_blocks ((b), fsd.f_frsize ? fsd.f_frsize : fsd.f_bsize, 512)
#endif
#if !defined(STAT_STATFS2_FS_DATA) && !defined(STAT_READ_FILSYS) /* !Ultrix && !SVR2. */
#endif /* STAT_STATVFS */
#if !defined(STAT_STATFS2_FS_DATA) && !defined(STAT_READ_FILSYS)
/* !Ultrix && !SVR2 */
fsp->fsu_blocks = CONVERT_BLOCKS (fsd.f_blocks);
fsp->fsu_bfree = CONVERT_BLOCKS (fsd.f_bfree);
fsp->fsu_bavail = CONVERT_BLOCKS (fsd.f_bavail);
fsp->fsu_files = fsd.f_files;
fsp->fsu_ffree = fsd.f_ffree;
#endif
#endif /* not STAT_STATFS2_FS_DATA && not STAT_READ_FILSYS */
return 0;
}
@@ -245,4 +270,5 @@ statfs (path, fsb)
fsb->f_fsid.val[1] = fsd.du_pckno;
return 0;
}
#endif /* _AIX && _I386 */

View File

@@ -1,5 +1,5 @@
/* full-write.c -- an interface to write that retries after interrupts
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
Copyright (C) 1993, 1994, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -18,13 +18,13 @@
Copied largely from GNU C's cccp.c.
*/
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
@@ -48,6 +48,10 @@ full_write (desc, ptr, len)
while (len > 0)
{
int written = write (desc, ptr, len);
/* FIXME: write on my slackware Linux 1.2.13 returns zero when
I try to write more data than there is room on a floppy disk.
This puts dd into an infinite loop. Reproduce with
dd if=/dev/zero of=/dev/fd0. */
if (written < 0)
{
#ifdef EINTR

46
lib/getdate.h Normal file
View File

@@ -0,0 +1,46 @@
/* Copyright (C) 1995 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
# ifndef PARAMS
# if defined (__GNUC__) || __STDC__
# define PARAMS(args) args
# else
# define PARAMS(args) ()
# endif
# endif
#if defined (vms)
# include <types.h>
# include <time.h>
#else
# include <sys/types.h>
# ifdef TIME_WITH_SYS_TIME
# include <sys/time.h>
# include <time.h>
# else
# ifdef HAVE_SYS_TIME_H
# include <sys/time.h>
# else
# include <time.h>
# endif
# endif
#endif /* defined (vms) */
time_t get_date PARAMS ((const char *p, const time_t *now));

File diff suppressed because it is too large Load Diff

59
lib/getgroups.c Normal file
View File

@@ -0,0 +1,59 @@
/* provide consistent interface to getgroups for systems that don't allow N==0
Copyright (C) 1996 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* written by Jim Meyering */
#include <config.h>
#include <stdio.h>
#include <sys/types.h>
char *xmalloc ();
/* On at least Ultrix 4.3 and NextStep 3.2, getgroups (0, 0) always fails.
On other systems, it returns the number of supplemental groups for the
process is returned.
This function handles that special case and lets the system-
provided function handle all others. */
int
getgroups (n, group)
size_t n;
GETGROUPS_T *group;
{
int n_groups;
GETGROUPS_T *gbuf;
#undef getgroups
if (n != 0)
return getgroups (n, group);
n = 20;
gbuf = NULL;
while (1)
{
gbuf = (GETGROUPS_T *) xrealloc (gbuf, n * sizeof (GETGROUPS_T));
n_groups = getgroups (n, gbuf);
if (n_groups < n)
break;
n += 10;
}
free (gbuf);
return n_groups;
}

View File

@@ -14,8 +14,8 @@ You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _getline_h_
# define _getline_h_ 1
#ifndef GETLINE_H_
# define GETLINE_H_ 1
# include <stdio.h>
@@ -24,8 +24,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# define PARAMS(args) args
# else
# define PARAMS(args) ()
# endif /* GCC. */
# endif /* Not PARAMS. */
# endif
# endif
int
getline PARAMS ((char **_lineptr, size_t *_n, FILE *_stream));
@@ -33,4 +33,4 @@ getline PARAMS ((char **_lineptr, size_t *_n, FILE *_stream));
int
getdelim PARAMS ((char **_lineptr, size_t *_n, int _delimiter, FILE *_stream));
#endif
#endif /* not GETLINE_H_ */

File diff suppressed because it is too large Load Diff

View File

@@ -3,22 +3,28 @@
"Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
before changing it!
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 1996
Copyright (C) 1987, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97
Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
the C library, however. The master source lives in /gd/gnu/lib.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA. */
/* This tells Alpha OSF/1 not to define a getopt prototype in <stdio.h>.
Ditto for AIX 3.2 and <stdlib.h>. */
@@ -48,18 +54,24 @@
program understand `configure --with-gnu-libc' and omit the object files,
it is simpler to just do this in the source for each such file. */
#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
#define GETOPT_INTERFACE_VERSION 2
#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
#include <gnu-versions.h>
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
#define ELIDE_CODE
#endif
#endif
#ifndef ELIDE_CODE
/* This needs to come after some library #include
to get __GNU_LIBRARY__ defined. */
#ifdef __GNU_LIBRARY__
#ifdef __GNU_LIBRARY__
/* Don't include stdlib.h for non-GNU C libraries because some of them
contain conflicting prototypes for getopt. */
#include <stdlib.h>
#if defined (_LIBC) || defined (HAVE_UNISTD_H)
#include <unistd.h>
#endif
#endif /* GNU C library. */
#ifdef VMS
@@ -69,7 +81,7 @@
#endif
#endif
#ifdef WIN32
#if defined (WIN32) && !defined (__CYGWIN32__)
/* It's not Unix, really. See? Capital letters. */
#include <windows.h>
#define getpid() GetCurrentProcessId()
@@ -116,14 +128,20 @@ char *optarg = NULL;
On entry to `getopt', zero means this is the first call; initialize.
When `getopt' returns EOF, this is the index of the first of the
When `getopt' returns -1, this is the index of the first of the
non-option elements that the caller should itself scan.
Otherwise, `optind' communicates from one call to the next
how much of ARGV has been scanned so far. */
/* XXX 1003.2 says this must be 1 before any call. */
int optind = 0;
/* 1003.2 says this must be 1 before any call. */
int optind = 1;
/* Formerly, initialization of getopt depended on optind==0, which
causes problems with re-calling getopt as programs generally don't
know that. */
int __getopt_initialized = 0;
/* The next char to be scanned in the option-element
in which the last option character we returned was found.
@@ -172,7 +190,7 @@ int optopt = '?';
The special argument `--' forces an end of option-scanning regardless
of the value of `ordering'. In the case of RETURN_IN_ORDER, only
`--' can cause `getopt' to return EOF with `optind' != ARGC. */
`--' can cause `getopt' to return -1 with `optind' != ARGC. */
static enum
{
@@ -182,7 +200,7 @@ static enum
/* Value of POSIXLY_CORRECT environment variable. */
static char *posixly_correct;
#ifdef __GNU_LIBRARY__
#ifdef __GNU_LIBRARY__
/* We want to avoid inclusion of string.h with non-GNU libraries
because there are many ways it can cause trouble.
On some systems, it contains special magic macros that don't work
@@ -233,12 +251,46 @@ extern int strlen (const char *);
static int first_nonopt;
static int last_nonopt;
#ifdef _LIBC
/* Bash 2.0 gives us an environment variable containing flags
indicating ARGV elements that should not be considered arguments. */
static const char *nonoption_flags;
/* Defined in getopt_init.c */
extern char *__getopt_nonoption_flags;
static int nonoption_flags_max_len;
static int nonoption_flags_len;
static int original_argc;
static char *const *original_argv;
extern pid_t __libc_pid;
/* Make sure the environment variable bash 2.0 puts in the environment
is valid for the getopt call we must make sure that the ARGV passed
to getopt is that one passed to the process. */
static void
__attribute__ ((unused))
store_args_and_env (int argc, char *const *argv)
{
/* XXX This is no good solution. We should rather copy the args so
that we can compare them later. But we must not use malloc(3). */
original_argc = argc;
original_argv = argv;
}
text_set_element (__libc_subinit, store_args_and_env);
# define SWAP_FLAGS(ch1, ch2) \
if (nonoption_flags_len > 0) \
{ \
char __tmp = __getopt_nonoption_flags[ch1]; \
__getopt_nonoption_flags[ch1] = __getopt_nonoption_flags[ch2]; \
__getopt_nonoption_flags[ch2] = __tmp; \
}
#else /* !_LIBC */
# define SWAP_FLAGS(ch1, ch2)
#endif /* _LIBC */
/* Exchange two adjacent subsequences of ARGV.
One subsequence is elements [first_nonopt,last_nonopt)
which contains all the non-options that have been skipped so far.
@@ -266,6 +318,28 @@ exchange (argv)
It leaves the longer segment in the right place overall,
but it consists of two parts that need to be swapped next. */
#ifdef _LIBC
/* First make sure the handling of the `__getopt_nonoption_flags'
string can work normally. Our top argument must be in the range
of the string. */
if (nonoption_flags_len > 0 && top >= nonoption_flags_max_len)
{
/* We must extend the array. The user plays games with us and
presents new arguments. */
char *new_str = malloc (top + 1);
if (new_str == NULL)
nonoption_flags_len = nonoption_flags_max_len = 0;
else
{
memcpy (new_str, __getopt_nonoption_flags, nonoption_flags_max_len);
memset (&new_str[nonoption_flags_max_len], '\0',
top + 1 - nonoption_flags_max_len);
nonoption_flags_max_len = top + 1;
__getopt_nonoption_flags = new_str;
}
}
#endif
while (top > middle && middle > bottom)
{
if (top - middle > middle - bottom)
@@ -280,6 +354,7 @@ exchange (argv)
tem = argv[bottom + i];
argv[bottom + i] = argv[top - (middle - bottom) + i];
argv[top - (middle - bottom) + i] = tem;
SWAP_FLAGS (bottom + i, top - (middle - bottom) + i);
}
/* Exclude the moved bottom segment from further swapping. */
top -= len;
@@ -296,6 +371,7 @@ exchange (argv)
tem = argv[bottom + i];
argv[bottom + i] = argv[middle + i];
argv[middle + i] = tem;
SWAP_FLAGS (bottom + i, middle + i);
}
/* Exclude the moved top segment from further swapping. */
bottom += len;
@@ -311,17 +387,19 @@ exchange (argv)
/* Initialize the internal data when the first call is made. */
#if defined (__STDC__) && __STDC__
static const char *_getopt_initialize (const char *);
static const char *_getopt_initialize (int, char *const *, const char *);
#endif
static const char *
_getopt_initialize (optstring)
_getopt_initialize (argc, argv, optstring)
int argc;
char *const *argv;
const char *optstring;
{
/* Start processing options with ARGV-element 1 (since ARGV-element 0
is the program name); the sequence of previously skipped
non-option ARGV-elements is empty. */
first_nonopt = last_nonopt = optind = 1;
first_nonopt = last_nonopt = optind;
nextchar = NULL;
@@ -344,20 +422,38 @@ _getopt_initialize (optstring)
else
ordering = PERMUTE;
if (posixly_correct == NULL)
#ifdef _LIBC
if (posixly_correct == NULL
&& argc == original_argc && argv == original_argv)
{
/* Bash 2.0 puts a special variable in the environment for each
command it runs, specifying which ARGV elements are the results of
file name wildcard expansion and therefore should not be
considered as options. */
char var[100];
sprintf (var, "_%d_GNU_nonoption_argv_flags_", getpid ());
nonoption_flags = getenv (var);
if (nonoption_flags == NULL)
nonoption_flags_len = 0;
else
nonoption_flags_len = strlen (nonoption_flags);
if (nonoption_flags_max_len == 0)
{
if (__getopt_nonoption_flags == NULL
|| __getopt_nonoption_flags[0] == '\0')
nonoption_flags_max_len = -1;
else
{
const char *orig_str = __getopt_nonoption_flags;
int len = nonoption_flags_max_len = strlen (orig_str);
if (nonoption_flags_max_len < argc)
nonoption_flags_max_len = argc;
__getopt_nonoption_flags =
(char *) malloc (nonoption_flags_max_len);
if (__getopt_nonoption_flags == NULL)
nonoption_flags_max_len = -1;
else
{
memcpy (__getopt_nonoption_flags, orig_str, len);
memset (&__getopt_nonoption_flags[len], '\0',
nonoption_flags_max_len - len);
}
}
}
nonoption_flags_len = nonoption_flags_max_len;
}
else
nonoption_flags_len = 0;
#endif
return optstring;
}
@@ -375,7 +471,7 @@ _getopt_initialize (optstring)
updating `optind' and `nextchar' so that the next call to `getopt' can
resume the scan with the following option character or ARGV-element.
If there are no more option characters, `getopt' returns `EOF'.
If there are no more option characters, `getopt' returns -1.
Then `optind' is the index in ARGV of the first ARGV-element
that is not an option. (The ARGV-elements have been permuted
so that those that are not options now come last.)
@@ -429,18 +525,25 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{
optarg = NULL;
if (optind == 0)
if (optind == 0 || !__getopt_initialized)
{
optstring = _getopt_initialize (optstring);
optind = 1; /* Don't scan ARGV[0], the program name. */
if (optind == 0)
optind = 1; /* Don't scan ARGV[0], the program name. */
optstring = _getopt_initialize (argc, argv, optstring);
__getopt_initialized = 1;
}
/* Test whether ARGV[optind] points to a non-option argument.
Either it does not have option syntax, or there is an environment flag
from the shell indicating it is not an option. */
from the shell indicating it is not an option. The later information
is only used when the used in the GNU libc. */
#ifdef _LIBC
#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0' \
|| (optind < nonoption_flags_len \
&& nonoption_flags[optind] == '1'))
&& __getopt_nonoption_flags[optind] == '1'))
#else
#define NONOPTION_P (argv[optind][0] != '-' || argv[optind][1] == '\0')
#endif
if (nextchar == NULL || *nextchar == '\0')
{
@@ -498,7 +601,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
that we previously skipped, so the caller will digest them. */
if (first_nonopt != last_nonopt)
optind = first_nonopt;
return EOF;
return -1;
}
/* If we have come to a non-option and did not permute it,
@@ -507,7 +610,7 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
if (NONOPTION_P)
{
if (ordering == REQUIRE_ORDER)
return EOF;
return -1;
optarg = argv[optind++];
return 1;
}
@@ -543,22 +646,19 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
const struct option *pfound = NULL;
int exact = 0;
int ambig = 0;
int indfound;
int indfound = -1;
int option_index;
for (nameend = nextchar; *nameend && *nameend != '='; nameend++)
/* Do nothing. */ ;
#ifdef lint /* Suppress `used before initialized' warning. */
indfound = 0;
#endif
/* Test all long options for either exact match
or abbreviated matches. */
for (p = longopts, option_index = 0; p->name; p++, option_index++)
if (!strncmp (p->name, nextchar, nameend - nextchar))
{
if (nameend - nextchar == strlen (p->name))
if ((unsigned int) (nameend - nextchar)
== (unsigned int) strlen (p->name))
{
/* Exact match found. */
pfound = p;
@@ -601,16 +701,16 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
else
{
if (opterr)
if (argv[optind - 1][1] == '-')
/* --option */
fprintf (stderr,
_("%s: option `--%s' doesn't allow an argument\n"),
argv[0], pfound->name);
else
/* +option or -option */
fprintf (stderr,
_("%s: option `%c%s' doesn't allow an argument\n"),
argv[0], argv[optind - 1][0], pfound->name);
if (argv[optind - 1][1] == '-')
/* --option */
fprintf (stderr,
_("%s: option `--%s' doesn't allow an argument\n"),
argv[0], pfound->name);
else
/* +option or -option */
fprintf (stderr,
_("%s: option `%c%s' doesn't allow an argument\n"),
argv[0], argv[optind - 1][0], pfound->name);
nextchar += strlen (nextchar);
@@ -626,8 +726,8 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{
if (opterr)
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]);
_("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]);
nextchar += strlen (nextchar);
optopt = pfound->val;
return optstring[0] == ':' ? ':' : '?';
@@ -694,6 +794,130 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
optopt = c;
return '?';
}
/* Convenience. Treat POSIX -W foo same as long option --foo */
if (temp[0] == 'W' && temp[1] == ';')
{
char *nameend;
const struct option *p;
const struct option *pfound = NULL;
int exact = 0;
int ambig = 0;
int indfound = 0;
int option_index;
/* This is an option that requires an argument. */
if (*nextchar != '\0')
{
optarg = nextchar;
/* If we end this ARGV-element by taking the rest as an arg,
we must advance to the next element now. */
optind++;
}
else if (optind == argc)
{
if (opterr)
{
/* 1003.2 specifies the format of this message. */
fprintf (stderr, _("%s: option requires an argument -- %c\n"),
argv[0], c);
}
optopt = c;
if (optstring[0] == ':')
c = ':';
else
c = '?';
return c;
}
else
/* We already incremented `optind' once;
increment it again when taking next ARGV-elt as argument. */
optarg = argv[optind++];
/* optarg is now the argument, see if it's in the
table of longopts. */
for (nextchar = nameend = optarg; *nameend && *nameend != '='; nameend++)
/* Do nothing. */ ;
/* Test all long options for either exact match
or abbreviated matches. */
for (p = longopts, option_index = 0; p->name; p++, option_index++)
if (!strncmp (p->name, nextchar, nameend - nextchar))
{
if ((unsigned int) (nameend - nextchar) == strlen (p->name))
{
/* Exact match found. */
pfound = p;
indfound = option_index;
exact = 1;
break;
}
else if (pfound == NULL)
{
/* First nonexact match found. */
pfound = p;
indfound = option_index;
}
else
/* Second or later nonexact match found. */
ambig = 1;
}
if (ambig && !exact)
{
if (opterr)
fprintf (stderr, _("%s: option `-W %s' is ambiguous\n"),
argv[0], argv[optind]);
nextchar += strlen (nextchar);
optind++;
return '?';
}
if (pfound != NULL)
{
option_index = indfound;
if (*nameend)
{
/* Don't test has_arg with >, because some C compilers don't
allow it to be used on enums. */
if (pfound->has_arg)
optarg = nameend + 1;
else
{
if (opterr)
fprintf (stderr, _("\
%s: option `-W %s' doesn't allow an argument\n"),
argv[0], pfound->name);
nextchar += strlen (nextchar);
return '?';
}
}
else if (pfound->has_arg == 1)
{
if (optind < argc)
optarg = argv[optind++];
else
{
if (opterr)
fprintf (stderr,
_("%s: option `%s' requires an argument\n"),
argv[0], argv[optind - 1]);
nextchar += strlen (nextchar);
return optstring[0] == ':' ? ':' : '?';
}
}
nextchar += strlen (nextchar);
if (longind != NULL)
*longind = option_index;
if (pfound->flag)
{
*(pfound->flag) = pfound->val;
return 0;
}
return pfound->val;
}
nextchar = NULL;
return 'W'; /* Let the application handle it. */
}
if (temp[1] == ':')
{
if (temp[2] == ':')
@@ -724,8 +948,8 @@ _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
{
/* 1003.2 specifies the format of this message. */
fprintf (stderr,
_("%s: option requires an argument -- %c\n"),
argv[0], c);
_("%s: option requires an argument -- %c\n"),
argv[0], c);
}
optopt = c;
if (optstring[0] == ':')
@@ -756,7 +980,7 @@ getopt (argc, argv, optstring)
0);
}
#endif /* _LIBC or not __GNU_LIBRARY__. */
#endif /* Not ELIDE_CODE. */
#ifdef TEST
@@ -776,7 +1000,7 @@ main (argc, argv)
int this_option_optind = optind ? optind : 1;
c = getopt (argc, argv, "abc:d:0123456789");
if (c == EOF)
if (c == -1)
break;
switch (c)

View File

@@ -1,19 +1,25 @@
/* Declarations for getopt.
Copyright (C) 1989, 90, 91, 92, 93, 94 Free Software Foundation, Inc.
Copyright (C) 1989,90,91,92,93,94,96,97 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
the C library, however. The master source lives in /gd/gnu/lib.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA. */
#ifndef _GETOPT_H
#define _GETOPT_H 1
@@ -36,7 +42,7 @@ extern char *optarg;
On entry to `getopt', zero means this is the first call; initialize.
When `getopt' returns EOF, this is the index of the first of the
When `getopt' returns -1, this is the index of the first of the
non-option elements that the caller should itself scan.
Otherwise, `optind' communicates from one call to the next

View File

@@ -1,20 +1,25 @@
/* getopt_long and getopt_long_only entry points for GNU getopt.
Copyright (C) 1987, 88, 89, 90, 91, 92, 1993, 1994
Free Software Foundation, Inc.
Copyright (C) 1987,88,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
the C library, however. The master source lives in /gd/gnu/lib.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -40,15 +45,21 @@
program understand `configure --with-gnu-libc' and omit the object files,
it is simpler to just do this in the source for each such file. */
#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
#define GETOPT_INTERFACE_VERSION 2
#if !defined (_LIBC) && defined (__GLIBC__) && __GLIBC__ >= 2
#include <gnu-versions.h>
#if _GNU_GETOPT_INTERFACE_VERSION == GETOPT_INTERFACE_VERSION
#define ELIDE_CODE
#endif
#endif
#ifndef ELIDE_CODE
/* This needs to come after some library #include
to get __GNU_LIBRARY__ defined. */
#ifdef __GNU_LIBRARY__
#include <stdlib.h>
#else
char *getenv ();
#endif
#ifndef NULL
@@ -83,7 +94,7 @@ getopt_long_only (argc, argv, options, long_options, opt_index)
}
#endif /* _LIBC or not __GNU_LIBRARY__. */
#endif /* Not ELIDE_CODE. */
#ifdef TEST
@@ -114,7 +125,7 @@ main (argc, argv)
c = getopt_long (argc, argv, "abc:d:0123456789",
long_options, &option_index);
if (c == EOF)
if (c == -1)
break;
switch (c)

View File

@@ -177,7 +177,7 @@ readname (name, size, stream)
/* Skip blank space. */
while ((c = getc (stream)) != EOF && isspace (c))
/* Do nothing. */ ;
while (c != EOF && !isspace (c))
{
(*name)[name_index++] = c;

View File

@@ -17,14 +17,14 @@
/* Written by David MacKenzie <djm@gnu.ai.mit.edu> */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include "backupfile.h"
#ifdef STDC_HEADERS
#include <stdlib.h>
#if STDC_HEADERS
# include <stdlib.h>
#endif
int argmatch ();
@@ -32,12 +32,12 @@ void invalid_arg ();
extern char *program_name;
static char *backup_args[] =
static const char *const backup_args[] =
{
"never", "simple", "nil", "existing", "t", "numbered", 0
};
static enum backup_type backup_types[] =
static const enum backup_type backup_types[] =
{
simple, simple, numbered_existing, numbered_existing, numbered, numbered
};

View File

@@ -120,7 +120,7 @@ group_member (gid)
break;
}
}
free_group_info (gi);
return found;

View File

@@ -1,7 +1,7 @@
#ifndef _group_member_h_
# define _group_member_h_ 1
#ifndef GROUP_MEMBER_H_
# define GROUP_MEMBER_H_ 1
int
group_member ();
#endif /* _group_member_h_ */
#endif /* GROUP_MEMBER_H_ */

46
lib/interlock Executable file
View File

@@ -0,0 +1,46 @@
#! /bin/sh
# interlock - wrap program invocation in lock to allow
# parallel builds to work.
# Written by Tom Tromey <tromey@cygnus.com>, Aug 10 1996
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Usage:
# interlock lock-dir-name program args-to-program...
dirname="$1"
program="$2"
shift
shift
while (mkdir $dirname > /dev/null 2>&1 && exit 1 || exit 0); do
# Wait a bit.
sleep 1
done
# Race condition here: if interrupted after the loop but before this
# trap, the lock can be left around.
trap "rmdir $dirname > /dev/null 2>&1" 1 2 3 15
# We have the lock, so run the program.
$program ${1+"$@"}
ret=$?
# Release the lock.
rmdir $dirname > /dev/null 2>&1
exit $ret

View File

@@ -12,8 +12,8 @@
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* A `struct linebuffer' holds a line of text. */
@@ -24,20 +24,21 @@ struct linebuffer
char *buffer;
};
#undef __P
#undef PARAMS
#if defined (__STDC__) && __STDC__
#define __P(x) x
# define PARAMS(Args) Args
#else
#define __P(x) ()
# define PARAMS(Args) ()
#endif
/* Initialize linebuffer LINEBUFFER for use. */
void initbuffer __P ((struct linebuffer *linebuffer));
void initbuffer PARAMS ((struct linebuffer *linebuffer));
/* Read an arbitrarily long line of text from STREAM into LINEBUFFER.
Remove any newline. Does not null terminate.
Return LINEBUFFER, except at end of file return 0. */
struct linebuffer *readline __P ((struct linebuffer *linebuffer, FILE *stream));
struct linebuffer *readline PARAMS ((struct linebuffer *linebuffer,
FILE *stream));
/* Free linebuffer LINEBUFFER and its data, all allocated with malloc. */
void freebuffer __P ((struct linebuffer *));
void freebuffer PARAMS ((struct linebuffer *));

View File

@@ -36,25 +36,24 @@ static struct option const long_options[] =
Be careful not to gobble up `--'. */
void
parse_long_options (argc, argv, command_name, version_string, usage)
parse_long_options (argc, argv, command_name, package, version, usage)
int argc;
char **argv;
const char *command_name;
const char *version_string;
const char *package;
const char *version;
void (*usage)();
{
int c;
int saved_opterr;
int saved_optind;
saved_opterr = opterr;
saved_optind = optind;
/* Don't print an error message for unrecognized options. */
opterr = 0;
if (argc == 2
&& (c = getopt_long (argc, argv, "+", long_options, (int *) 0)) != EOF)
&& (c = getopt_long (argc, argv, "+", long_options, NULL)) != -1)
{
switch (c)
{
@@ -62,7 +61,7 @@ parse_long_options (argc, argv, command_name, version_string, usage)
(*usage) (0);
case 'v':
printf ("%s - %s\n", command_name, version_string);
printf ("%s (%s) %s\n", command_name, package, version);
exit (0);
default:
@@ -74,6 +73,7 @@ parse_long_options (argc, argv, command_name, version_string, usage)
/* Restore previous value. */
opterr = saved_opterr;
/* Restore optind in case it has advanced past a leading `--'. */
optind = saved_optind;
/* Reset this to zero so that getopt internals get initialized from
the probably-new parameters when/if getopt is called later. */
optind = 0;
}

View File

@@ -1,10 +1,31 @@
#undef __P
/* long-options.h -- declaration for --help- and --version-handling function.
Copyright (C) 1993, 1994 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Jim Meyering. */
#undef PARAMS
#if defined (__STDC__) && __STDC__
#define __P(args) args
# define PARAMS(Args) Args
#else
#define __P(args) ()
# define PARAMS(Args) ()
#endif
void
parse_long_options __P ((int _argc, char **_argv, const char *_command_name,
const char *_version_string, void (*_usage) (int)));
parse_long_options PARAMS ((int _argc, char **_argv,
const char *_command_name,
const char *_package,
const char *_version, void (*_usage) (int)));

View File

@@ -1,5 +1,5 @@
/* makepath.c -- Ensure that a directory path exists.
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,52 +17,52 @@
/* Written by David MacKenzie <djm@gnu.ai.mit.edu> and Jim Meyering. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef __GNUC__
#define alloca __builtin_alloca
#else
#ifdef HAVE_ALLOCA_H
#include <alloca.h>
#else
#ifdef _AIX
#pragma alloca
#if __GNUC__
# define alloca __builtin_alloca
#else
# if HAVE_ALLOCA_H
# include <alloca.h>
# else
# ifdef _AIX
# pragma alloca
# else
char *alloca ();
#endif
#endif
# endif
# endif
#endif
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#ifdef HAVE_UNISTD_H
#include <unistd.h>
#if HAVE_UNISTD_H
# include <unistd.h>
#endif
#ifdef STAT_MACROS_BROKEN
#undef S_ISDIR
#endif /* STAT_MACROS_BROKEN. */
#if STAT_MACROS_BROKEN
# undef S_ISDIR
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
#ifdef STDC_HEADERS
#include <stdlib.h>
#if STDC_HEADERS
# include <stdlib.h>
#endif
#ifdef HAVE_ERRNO_H
#include <errno.h>
#if HAVE_ERRNO_H
# include <errno.h>
#endif
#ifndef errno
extern int errno;
#endif
#ifdef HAVE_STRING_H
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
@@ -76,9 +76,34 @@ typedef int uid_t;
typedef int gid_t;
#endif
#include "save-cwd.h"
#include "makepath.h"
#include "error.h"
void error ();
void strip_trailing_slashes ();
#define CLEANUP_CWD \
do \
{ \
/* We're done operating on basename_dir. \
Restore working directory. */ \
if (saved_cwd) \
{ \
int fail = restore_cwd (&cwd, NULL, NULL); \
free_cwd (&cwd); \
if (fail) \
return 1; \
} \
} \
while (0)
#define CLEANUP \
do \
{ \
umask (oldmask); \
CLEANUP_CWD; \
} \
while (0)
/* Ensure that the directory ARGPATH exists.
Remove any trailing slashes from ARGPATH before calling this function.
@@ -120,17 +145,10 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
const char *verbose_fmt_string;
#endif
{
char *dirpath; /* A copy we can scribble NULs on. */
struct stat stats;
int retval = 0;
int oldmask = umask (0);
/* FIXME: move this alloca and strcpy into the if-block.
Set dirpath to argpath in the else-block. */
dirpath = (char *) alloca (strlen (argpath) + 1);
strcpy (dirpath, argpath);
if (stat (dirpath, &stats))
if (stat (argpath, &stats))
{
char *slash;
int tmp_mode; /* Initial perms for leading dirs. */
@@ -141,6 +159,19 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
struct ptr_list *next;
};
struct ptr_list *p, *leading_dirs = NULL;
int saved_cwd = 0;
struct saved_cwd cwd;
char *basename_dir;
int first_subdir = 1;
char *dirpath;
/* Temporarily relax umask in case it's overly restrictive. */
int oldmask = umask (0);
/* Make a copy of ARGPATH that we can scribble NULs on. */
dirpath = (char *) alloca (strlen (argpath) + 1);
strcpy (dirpath, argpath);
strip_trailing_slashes (dirpath);
/* If leading directories shouldn't be writable or executable,
or should have set[ug]id or sticky bits set and we are setting
@@ -159,17 +190,36 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
}
slash = dirpath;
/* Skip over leading slashes. */
while (*slash == '/')
slash++;
while ((slash = strchr (slash, '/')))
while (1)
{
*slash = '\0';
if (stat (dirpath, &stats))
/* slash points to the leftmost unprocessed component of dirpath. */
basename_dir = slash;
slash = strchr (slash, '/');
if (slash == NULL)
break;
if (first_subdir)
{
if (mkdir (dirpath, tmp_mode))
first_subdir = 0;
saved_cwd = !save_cwd (&cwd);
}
if (!saved_cwd)
basename_dir = dirpath;
*slash = '\0';
if (stat (basename_dir, &stats))
{
if (mkdir (basename_dir, tmp_mode))
{
error (0, errno, "cannot create directory `%s'", dirpath);
umask (oldmask);
CLEANUP;
return 1;
}
else
@@ -178,15 +228,17 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
error (0, 0, verbose_fmt_string, dirpath);
if (owner != (uid_t) -1 && group != (gid_t) -1
&& chown (dirpath, owner, group)
&& chown (basename_dir, owner, group)
#if defined(AFS) && defined (EPERM)
&& errno != EPERM
#endif
)
{
error (0, errno, "%s", dirpath);
retval = 1;
CLEANUP;
return 1;
}
if (re_protect)
{
struct ptr_list *new = (struct ptr_list *)
@@ -200,7 +252,14 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
else if (!S_ISDIR (stats.st_mode))
{
error (0, 0, "`%s' exists but is not a directory", dirpath);
umask (oldmask);
CLEANUP;
return 1;
}
if (saved_cwd && chdir (basename_dir) < 0)
{
error (0, errno, "cannot chdir to directory, %s", dirpath);
CLEANUP;
return 1;
}
@@ -212,40 +271,49 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
slash++;
}
if (!saved_cwd)
basename_dir = dirpath;
/* We're done making leading directories.
Create the final component of the path. */
/* The path could end in "/." or contain "/..", so test
if we really have to create the directory. */
if (stat (dirpath, &stats) && mkdir (dirpath, mode))
if (stat (basename_dir, &stats) && mkdir (basename_dir, mode))
{
error (0, errno, "cannot create directory `%s'", dirpath);
umask (oldmask);
CLEANUP;
return 1;
}
/* Done creating directories. Restore original umask. */
umask (oldmask);
if (verbose_fmt_string != NULL)
error (0, 0, verbose_fmt_string, dirpath);
if (owner != (uid_t) -1 && group != (gid_t) -1)
{
if (chown (dirpath, owner, group)
if (chown (basename_dir, owner, group)
#ifdef AFS
&& errno != EPERM
#endif
)
{
error (0, errno, "%s", dirpath);
error (0, errno, "cannot chown %s", dirpath);
retval = 1;
}
/* chown may have turned off some permission bits we wanted. */
if ((mode & 07000) != 0 && chmod (dirpath, mode))
if ((mode & 07000) != 0 && chmod (basename_dir, mode))
{
error (0, errno, "%s", dirpath);
error (0, errno, "cannot chmod %s", dirpath);
retval = 1;
}
}
CLEANUP_CWD;
/* If the mode for leading directories didn't include owner "wx"
privileges, we have to reset their protections to the correct
value. */
@@ -263,10 +331,11 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
{
/* We get here if the entire path already exists. */
const char *dirpath = argpath;
if (!S_ISDIR (stats.st_mode))
{
error (0, 0, "`%s' exists but is not a directory", dirpath);
umask (oldmask);
return 1;
}
@@ -296,6 +365,5 @@ make_path (argpath, mode, parent_mode, owner, group, preserve_existing,
}
}
umask (oldmask);
return retval;
}

View File

@@ -1,8 +1,8 @@
#if __STDC__
# undef __P
# define __P(args) args
#if __STDC__
# define __P(Args) Args
#else
# define __P(args) ()
# define __P(Args) ()
#endif
int

183
lib/md5.c
View File

@@ -1,11 +1,13 @@
/* md5.c - Functions to compute MD5 message digest of files or memory blocks
according to the definition of MD5 in RFC 1321 from April 1992.
Copyright (C) 1995 Software Foundation, Inc.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -16,7 +18,7 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>. */
/* Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. */
#ifdef HAVE_CONFIG_H
# include <config.h>
@@ -24,7 +26,7 @@
#include <sys/types.h>
#if STDC_HEADERS
#if STDC_HEADERS || defined _LIBC
# include <stdlib.h>
# include <string.h>
#else
@@ -35,6 +37,13 @@
#include "md5.h"
#ifdef _LIBC
# include <endian.h>
# if __BYTE_ORDER == __BIG_ENDIAN
# define WORDS_BIGENDIAN 1
# endif
#endif
#ifdef WORDS_BIGENDIAN
# define SWAP(n) \
(((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24))
@@ -58,10 +67,16 @@ md5_init_ctx (ctx)
ctx->B = 0xefcdab89;
ctx->C = 0x98badcfe;
ctx->D = 0x10325476;
ctx->total[0] = ctx->total[1] = 0;
ctx->buflen = 0;
}
/* Put result from CTX in first 16 bytes following RESBUF. The result must
be in little endian byte order. */
/* Put result from CTX in first 16 bytes following RESBUF. The result
must be in little endian byte order.
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
void *
md5_read_ctx (ctx, resbuf)
const struct md5_ctx *ctx;
@@ -75,6 +90,39 @@ md5_read_ctx (ctx, resbuf)
return resbuf;
}
/* Process the remaining bytes in the internal buffer and the usual
prolog according to the standard and write the result to RESBUF.
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
void *
md5_finish_ctx (ctx, resbuf)
struct md5_ctx *ctx;
void *resbuf;
{
/* Take yet unprocessed bytes into account. */
md5_uint32 bytes = ctx->buflen;
size_t pad;
/* Now count remaining bytes. */
ctx->total[0] += bytes;
if (ctx->total[0] < bytes)
++ctx->total[1];
pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes;
memcpy (&ctx->buffer[bytes], fillbuf, pad);
/* Put the 64-bit file length in *bits* at the end of the buffer. */
*(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3);
*(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) |
(ctx->total[0] >> 29));
/* Process last bytes. */
md5_process_block (ctx->buffer, bytes + pad + 8, ctx);
return md5_read_ctx (ctx, resbuf);
}
/* Compute MD5 message digest for bytes read from STREAM. The
resulting message digest number will be written into the 16 bytes
beginning at RESBLOCK. */
@@ -86,16 +134,12 @@ md5_stream (stream, resblock)
/* Important: BLOCKSIZE must be a multiple of 64. */
#define BLOCKSIZE 4096
struct md5_ctx ctx;
md5_uint32 len[2];
char buffer[BLOCKSIZE + 72];
size_t pad, sum;
size_t sum;
/* Initialize the computation context. */
md5_init_ctx (&ctx);
len[0] = 0;
len[1] = 0;
/* Iterate over full file contents. */
while (1)
{
@@ -108,7 +152,7 @@ md5_stream (stream, resblock)
/* Read block. Take care for partial reads. */
do
{
n = fread (buffer, 1, BLOCKSIZE - sum, stream);
n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream);
sum += n;
}
@@ -116,13 +160,6 @@ md5_stream (stream, resblock)
if (n == 0 && ferror (stream))
return 1;
/* RFC 1321 specifies the possible length of the file up to 2^64 bits.
Here we only compute the number of bytes. Do a double word
increment. */
len[0] += sum;
if (len[0] < sum)
++len[1];
/* If end of file is reached, end the loop. */
if (n == 0)
break;
@@ -133,27 +170,12 @@ md5_stream (stream, resblock)
md5_process_block (buffer, BLOCKSIZE, &ctx);
}
/* We can copy 64 byte because the buffer is always big enough. FILLBUF
contains the needed bits. */
memcpy (&buffer[sum], fillbuf, 64);
/* Compute amount of padding bytes needed. Alignment is done to
(N + PAD) % 64 == 56
There is always at least one byte padded. I.e. even the alignment
is correctly aligned 64 padding bytes are added. */
pad = sum & 63;
pad = pad >= 56 ? 64 + 56 - pad : 56 - pad;
/* Put the 64-bit file length in *bits* at the end of the buffer. */
*(md5_uint32 *) &buffer[sum + pad] = SWAP (len[0] << 3);
*(md5_uint32 *) &buffer[sum + pad + 4] = SWAP ((len[1] << 3)
| (len[0] >> 29));
/* Process last bytes. */
md5_process_block (buffer, sum + pad + 8, &ctx);
/* Add the last bytes if necessary. */
if (sum > 0)
md5_process_bytes (buffer, sum, &ctx);
/* Construct result in desired memory. */
md5_read_ctx (&ctx, resblock);
md5_finish_ctx (&ctx, resblock);
return 0;
}
@@ -168,37 +190,61 @@ md5_buffer (buffer, len, resblock)
void *resblock;
{
struct md5_ctx ctx;
char restbuf[64 + 72];
size_t blocks = len & ~63;
size_t pad, rest;
/* Initialize the computation context. */
md5_init_ctx (&ctx);
/* Process whole buffer but last len % 64 bytes. */
md5_process_block (buffer, blocks, &ctx);
/* REST bytes are not processed yet. */
rest = len - blocks;
/* Copy to own buffer. */
memcpy (restbuf, &buffer[blocks], rest);
/* Append needed fill bytes at end of buffer. We can copy 64 byte
because the buffer is always big enough. */
memcpy (&restbuf[rest], fillbuf, 64);
/* PAD bytes are used for padding to correct alignment. Note that
always at least one byte is padded. */
pad = rest >= 56 ? 64 + 56 - rest : 56 - rest;
/* Put length of buffer in *bits* in last eight bytes. */
*(md5_uint32 *) &restbuf[rest + pad] = (md5_uint32) SWAP (len << 3);
*(md5_uint32 *) &restbuf[rest + pad + 4] = (md5_uint32) SWAP (len >> 29);
/* Process last bytes. */
md5_process_block (restbuf, rest + pad + 8, &ctx);
md5_process_bytes (buffer, len, &ctx);
/* Put result in desired memory area. */
return md5_read_ctx (&ctx, resblock);
return md5_finish_ctx (&ctx, resblock);
}
void
md5_process_bytes (buffer, len, ctx)
const void *buffer;
size_t len;
struct md5_ctx *ctx;
{
/* When we already have some bits in our internal buffer concatenate
both inputs first. */
if (ctx->buflen != 0)
{
size_t left_over = ctx->buflen;
size_t add = 128 - left_over > len ? len : 128 - left_over;
memcpy (&ctx->buffer[left_over], buffer, add);
ctx->buflen += add;
if (left_over + add > 64)
{
md5_process_block (ctx->buffer, (left_over + add) & ~63, ctx);
/* The regions in the following copy operation cannot overlap. */
memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63],
(left_over + add) & 63);
ctx->buflen = (left_over + add) & 63;
}
buffer = (const char *) buffer + add;
len -= add;
}
/* Process available complete blocks. */
if (len > 64)
{
md5_process_block (buffer, len & ~63, ctx);
buffer = (const char *) buffer + (len & ~63);
len &= 63;
}
/* Move remaining bytes in internal buffer. */
if (len > 0)
{
memcpy (ctx->buffer, buffer, len);
ctx->buflen = len;
}
}
@@ -229,6 +275,13 @@ md5_process_block (buffer, len, ctx)
md5_uint32 C = ctx->C;
md5_uint32 D = ctx->D;
/* First increment the byte count. RFC 1321 specifies the possible
length of the file up to 2^64 bits. Here we only compute the
number of bytes. Do a double word increment. */
ctx->total[0] += len;
if (ctx->total[0] < len)
++ctx->total[1];
/* Process all bytes in the buffer with 64 bytes in each round of
the loop. */
while (words < endp)

107
lib/md5.h
View File

@@ -1,23 +1,25 @@
/* md5.h - Declaration of functions and data types used for MD5 sum
computing library functions.
Copyright (C) 1995 Free Software Foundation, Inc.
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef _MD5_H
#define _MD5_H
#define _MD5_H 1
#include <stdio.h>
@@ -32,33 +34,38 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
the resulting executable. Locally running cross-compiled executables
is usually not possible. */
#if defined __STDC__ && __STDC__
# define UINT_MAX_32_BITS 4294967295U
#ifdef _LIBC
# include <sys/types.h>
typedef u_int32_t md5_uint32;
#else
# define UINT_MAX_32_BITS 0xFFFFFFFF
#endif
# if defined __STDC__ && __STDC__
# define UINT_MAX_32_BITS 4294967295U
# else
# define UINT_MAX_32_BITS 0xFFFFFFFF
# endif
/* If UINT_MAX isn't defined, assume it's a 32-bit type.
This should be valid for all systems GNU cares about because
that doesn't include 16-bit systems, and only modern systems
(that certainly have <limits.h>) have 64+-bit integral types. */
#ifndef UINT_MAX
# define UINT_MAX UINT_MAX_32_BITS
#endif
# ifndef UINT_MAX
# define UINT_MAX UINT_MAX_32_BITS
# endif
#if UINT_MAX == UINT_MAX_32_BITS
typedef unsigned int md5_uint32;
#else
# if USHRT_MAX == UINT_MAX_32_BITS
typedef unsigned short md5_uint32;
# if UINT_MAX == UINT_MAX_32_BITS
typedef unsigned int md5_uint32;
# else
# if ULONG_MAX == UINT_MAX_32_BITS
typedef unsigned long md5_uint32;
# if USHRT_MAX == UINT_MAX_32_BITS
typedef unsigned short md5_uint32;
# else
/* The following line is intended to evoke an error.
Using #error is not portable enough. */
"Cannot determine unsigned 32-bit data type."
# if ULONG_MAX == UINT_MAX_32_BITS
typedef unsigned long md5_uint32;
# else
/* The following line is intended to evoke an error.
Using #error is not portable enough. */
"Cannot determine unsigned 32-bit data type."
# endif
# endif
# endif
#endif
@@ -77,6 +84,10 @@ struct md5_ctx
md5_uint32 B;
md5_uint32 C;
md5_uint32 D;
md5_uint32 total[2];
md5_uint32 buflen;
char buffer[128];
};
/*
@@ -86,30 +97,50 @@ struct md5_ctx
/* Initialize structure containing state of computation.
(RFC 1321, 3.3: Step 3) */
void md5_init_ctx __P ((struct md5_ctx *ctx));
extern void md5_init_ctx __P ((struct md5_ctx *ctx));
/* Starting with the result of former calls of this function (or the
initialzation function update the context for the next LEN bytes
initialization function update the context for the next LEN bytes
starting at BUFFER.
It is necessary that LEN is a multiple of 64!!! */
void md5_process_block __P ((const void *buffer, size_t len,
struct md5_ctx *ctx));
extern void md5_process_block __P ((const void *buffer, size_t len,
struct md5_ctx *ctx));
/* Starting with the result of former calls of this function (or the
initialization function update the context for the next LEN bytes
starting at BUFFER.
It is NOT required that LEN is a multiple of 64. */
extern void md5_process_bytes __P ((const void *buffer, size_t len,
struct md5_ctx *ctx));
/* Process the remaining bytes in the buffer and put result from CTX
in first 16 bytes following RESBUF. The result is always in little
endian byte order, so that a byte-wise output yields to the wanted
ASCII representation of the message digest.
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
extern void *md5_finish_ctx __P ((struct md5_ctx *ctx, void *resbuf));
/* Put result from CTX in first 16 bytes following RESBUF. The result is
always in little endian byte order, so that a byte-wise output yields
to the wanted ASCII representation of the message digest. */
void *md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf));
to the wanted ASCII representation of the message digest.
IMPORTANT: On some systems it is required that RESBUF is correctly
aligned for a 32 bits value. */
extern void *md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf));
/* Compute MD5 message digest for bytes read from STREAM. The
resulting message digest number will be written into the 16 bytes
beginning at RESBLOCK. */
int md5_stream __P ((FILE *stream, void *resblock));
extern int md5_stream __P ((FILE *stream, void *resblock));
/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The
result is always in little endian byte order, so that a byte-wise
output yields to the wanted ASCII representation of the message
digest. */
void *md5_buffer __P ((const char *buffer, size_t len, void *resblock));
extern void *md5_buffer __P ((const char *buffer, size_t len, void *resblock));
#endif

View File

@@ -1,9 +1,9 @@
#undef __P
#undef PARAMS
#if defined (__STDC__) && __STDC__
# define __P(args) args
# define PARAMS(Args) Args
#else
# define __P(args) ()
# define PARAMS(Args) ()
#endif
int
memcasecmp __P((const void *vs1, const void *vs2, size_t n));
memcasecmp PARAMS ((const void *vs1, const void *vs2, size_t n));

View File

@@ -1,5 +1,5 @@
/* Copyright (C) 1991, 1993 Free Software Foundation, Inc.
Based on strlen implemention by Torbjorn Granlund (tege@sics.se),
/* Copyright (C) 1991, 1993, 1997 Free Software Foundation, Inc.
Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
with help from Dan Sahlin (dan@sics.se) and
commentary by Jim Blandy (jimb@ai.mit.edu);
adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),

View File

@@ -1,4 +1,4 @@
/* Copyright (C) 1991, 1993 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1993, 1995 Free Software Foundation, Inc.
Contributed by Torbjorn Granlund (tege@sics.se).
NOTE: The canonical source of this file is maintained with the GNU C Library.
@@ -364,3 +364,8 @@ memcmp (s1, s2, len)
return 0;
}
#ifdef weak_alias
#undef bcmp
weak_alias (memcmp, bcmp)
#endif

View File

@@ -1,3 +1,25 @@
/* Copyright (C) 1995, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Jim Meyering <meyering@na-net.ornl.gov>. */
#if HAVE_CONFIG_H
# include <config.h>
#endif
/* Copy LEN bytes starting at SRCADDR to DESTADDR. Result undefined
if the source overlaps with the destination.
Return DESTADDR. */

View File

@@ -3,7 +3,7 @@
In the public domain.
By David MacKenzie <djm@gnu.ai.mit.edu>. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif

View File

@@ -1,4 +1,4 @@
/* mkdir.c -- BSD compatible make directory function for System V
/* BSD compatible make directory function for System V
Copyright (C) 1988, 1990 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -15,8 +15,8 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
@@ -26,12 +26,12 @@
extern int errno;
#endif
#ifdef STAT_MACROS_BROKEN
#undef S_ISDIR
#if STAT_MACROS_BROKEN
# undef S_ISDIR
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
/* mkdir adapted from GNU tar. */

View File

@@ -1,22 +1,22 @@
/* Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc.
/* Copyright (C) 1993, 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
Contributed by Paul Eggert (eggert@twinsun.com).
This file is part of the GNU C Library.
NOTE: The canonical source of this file is maintained with the GNU C
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If
not, write to the Free Software Foundation, Inc., 59 Temple Place -
Suite 330, Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Define this to have a standalone program to test this implementation of
mktime. */
@@ -26,6 +26,12 @@ Suite 330, Boston, MA 02111-1307, USA. */
#include <config.h>
#endif
#ifdef _LIBC
# define HAVE_LIMITS_H 1
# define HAVE_LOCALTIME_R 1
# define STDC_HEADERS 1
#endif
/* Assume that leap seconds are possible, unless told otherwise.
If the host has a `zic' command with a `-L leapsecondfilename' option,
then it supports leap seconds; otherwise it probably doesn't. */
@@ -36,13 +42,13 @@ Suite 330, Boston, MA 02111-1307, USA. */
#include <sys/types.h> /* Some systems define `time_t' here. */
#include <time.h>
#if __STDC__ || __GNU_LIBRARY__ || STDC_HEADERS
#if HAVE_LIMITS_H
#include <limits.h>
#endif
#if DEBUG
#include <stdio.h>
#if __STDC__ || __GNU_LIBRARY__ || STDC_HEADERS
#if STDC_HEADERS
#include <stdlib.h>
#endif
/* Make it work even if the system's libc has its own mktime routine. */
@@ -69,8 +75,10 @@ Suite 330, Boston, MA 02111-1307, USA. */
#endif
#ifndef TIME_T_MIN
#define TIME_T_MIN (0 < (time_t) -1 ? (time_t) 0 \
: ~ (time_t) 0 << (sizeof (time_t) * CHAR_BIT - 1))
/* The outer cast to time_t works around a bug in Cray C 5.0.3.0. */
#define TIME_T_MIN ((time_t) \
(0 < (time_t) -1 ? (time_t) 0 \
: ~ (time_t) 0 << (sizeof (time_t) * CHAR_BIT - 1)))
#endif
#ifndef TIME_T_MAX
#define TIME_T_MAX (~ (time_t) 0 - TIME_T_MIN)
@@ -101,10 +109,10 @@ time_t __mktime_internal __P ((struct tm *,
time_t *));
#if ! HAVE_LOCALTIME_R && ! defined (localtime_r)
#ifdef _LIBC
#define localtime_r __localtime_r
#else
#if ! HAVE_LOCALTIME_R && ! defined (localtime_r)
/* Approximate localtime_r as best we can in its absence. */
#define localtime_r my_localtime_r
static struct tm *localtime_r __P ((const time_t *, struct tm *));
@@ -119,8 +127,8 @@ localtime_r (t, tp)
*tp = *l;
return tp;
}
#endif /* ! _LIBC */
#endif /* ! HAVE_LOCALTIME_R && ! defined (localtime_r) */
#endif /* ! _LIBC */
/* Yield the difference between (YEAR-YDAY HOUR:MIN:SEC) and (*TP),
@@ -133,11 +141,19 @@ ydhms_tm_diff (year, yday, hour, min, sec, tp)
int year, yday, hour, min, sec;
const struct tm *tp;
{
time_t ay = year + (time_t) (TM_YEAR_BASE - 1);
time_t by = tp->tm_year + (time_t) (TM_YEAR_BASE - 1);
time_t intervening_leap_days =
(ay/4 - by/4) - (ay/100 - by/100) + (ay/400 - by/400);
time_t years = ay - by;
/* Compute intervening leap days correctly even if year is negative.
Take care to avoid int overflow. time_t overflow is OK, since
only the low order bits of the correct time_t answer are needed.
Don't convert to time_t until after all divisions are done, since
time_t might be unsigned. */
int a4 = (year >> 2) + (TM_YEAR_BASE >> 2) - ! (year & 3);
int b4 = (tp->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (tp->tm_year & 3);
int a100 = a4 / 25 - (a4 % 25 < 0);
int b100 = b4 / 25 - (b4 % 25 < 0);
int a400 = a100 >> 2;
int b400 = b100 >> 2;
int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400);
time_t years = year - (time_t) tp->tm_year;
time_t days = (365 * years + intervening_leap_days
+ (yday - tp->tm_yday));
return (60 * (60 * (24 * days + (hour - tp->tm_hour))
@@ -146,12 +162,20 @@ ydhms_tm_diff (year, yday, hour, min, sec, tp)
}
static time_t localtime_offset;
/* Convert *TP to a time_t value. */
time_t
mktime (tp)
struct tm *tp;
{
static time_t localtime_offset;
#ifdef _LIBC
/* POSIX.1 8.1.1 requires that whenever mktime() is called, the
time zone names contained in the external variable `tzname' shall
be set as if the tzset() function had been called. */
__tzset ();
#endif
return __mktime_internal (tp, localtime_r, &localtime_offset);
}

View File

@@ -24,30 +24,30 @@
changing the mode of many files, this probably results in a
performance gain. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include "modechange.h"
#ifdef STDC_HEADERS
#include <stdlib.h>
#if STDC_HEADERS
# include <stdlib.h>
#else
char *malloc ();
#endif
#ifndef NULL
#define NULL 0
# define NULL 0
#endif
#ifdef STAT_MACROS_BROKEN
#undef S_ISDIR
#endif /* STAT_MACROS_BROKEN. */
#if STAT_MACROS_BROKEN
# undef S_ISDIR
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
/* Return newly allocated memory to hold one element of type TYPE. */

View File

@@ -46,11 +46,11 @@ struct mode_change
#ifndef __P
# if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
# define __P(args) args
# define __P(Args) Args
# else
# define __P(args) ()
# endif /* GCC. */
#endif /* Not __P. */
# define __P(Args) ()
# endif
#endif
struct mode_change *mode_compile __P ((const char *, unsigned));
unsigned short mode_adjust __P ((unsigned, const struct mode_change *));

View File

@@ -1,5 +1,5 @@
/* mountlist.c -- return a list of mounted filesystems
Copyright (C) 1991, 1992 Free Software Foundation, Inc.
Copyright (C) 1991, 1992, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,7 +16,7 @@
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
# include <config.h>
#endif
#include <stdio.h>
@@ -24,14 +24,14 @@
#include "mountlist.h"
#ifdef STDC_HEADERS
#include <stdlib.h>
# include <stdlib.h>
#else
void free ();
#endif
#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
#include <string.h>
# include <string.h>
#else
#include <strings.h>
# include <strings.h>
#endif
char *strstr ();
@@ -41,62 +41,73 @@ char *xstrdup ();
void error ();
#ifdef HAVE_SYS_PARAM_H
#include <sys/param.h>
# include <sys/param.h>
#endif
#if defined (MOUNTED_GETFSSTAT) /* __alpha running OSF_1 */
# include <sys/mount.h>
# include <sys/fs_types.h>
# include <sys/mount.h>
# include <sys/fs_types.h>
#endif /* MOUNTED_GETFSSTAT */
#ifdef MOUNTED_GETMNTENT1 /* 4.3BSD, SunOS, HP-UX, Dynix, Irix. */
#include <mntent.h>
#if !defined(MOUNTED)
# include <mntent.h>
# if !defined(MOUNTED)
# if defined(MNT_MNTTAB) /* HP-UX. */
# define MOUNTED MNT_MNTTAB
# define MOUNTED MNT_MNTTAB
# endif
# if defined(MNTTABNAME) /* Dynix. */
# define MOUNTED MNTTABNAME
# define MOUNTED MNTTABNAME
# endif
#endif
# endif
#endif
#ifdef MOUNTED_GETMNTINFO /* 4.4BSD. */
#include <sys/mount.h>
# include <sys/mount.h>
#endif
#ifdef MOUNTED_GETMNT /* Ultrix. */
#include <sys/mount.h>
#include <sys/fs_types.h>
# include <sys/mount.h>
# include <sys/fs_types.h>
#endif
#ifdef MOUNTED_FREAD /* SVR2. */
#include <mnttab.h>
# include <mnttab.h>
#endif
#ifdef MOUNTED_FREAD_FSTYP /* SVR3. */
#include <mnttab.h>
#include <sys/fstyp.h>
#include <sys/statfs.h>
# include <mnttab.h>
# include <sys/fstyp.h>
# include <sys/statfs.h>
#endif
#ifdef MOUNTED_LISTMNTENT
#include <mntent.h>
# include <mntent.h>
#endif
#ifdef MOUNTED_GETMNTENT2 /* SVR4. */
#include <sys/mnttab.h>
# include <sys/mnttab.h>
#endif
#ifdef MOUNTED_VMOUNT /* AIX. */
#include <fshelp.h>
#include <sys/vfs.h>
# include <fshelp.h>
# include <sys/vfs.h>
#endif
#ifdef DOLPHIN
/* So special that it's not worth putting this in autoconf. */
#undef MOUNTED_FREAD_FSTYP
#define MOUNTED_GETMNTTBL
# undef MOUNTED_FREAD_FSTYP
# define MOUNTED_GETMNTTBL
#endif
#ifdef HAVE_SYS_MNTENT_H
/* This is to get MNTOPT_IGNORE on e.g. SVR4. */
# include <sys/mntent.h>
#endif
#if defined (MNTOPT_IGNORE) && defined (HAVE_HASMNTOPT)
# define MNT_IGNORE(M) hasmntopt ((M), MNTOPT_IGNORE)
#else
# define MNT_IGNORE(M) 0
#endif
#ifdef MOUNTED_GETMNTENT1 /* 4.3BSD, SunOS, HP-UX, Dynix, Irix. */
@@ -127,37 +138,97 @@ xatoi (cp)
}
#endif /* MOUNTED_GETMNTENT1. */
#if defined (MOUNTED_GETMNTINFO) && !defined (__NetBSD__)
#if defined (MOUNTED_GETMNTINFO) && !defined (__NetBSD__) && !defined (__OpenBSD__)
static char *
fstype_to_string (t)
short t;
{
switch (t)
{
case MOUNT_UFS:
return "ufs";
case MOUNT_NFS:
return "nfs";
#ifdef MOUNT_PC
# ifdef MOUNT_PC
case MOUNT_PC:
return "pc";
#endif
#ifdef MOUNT_MFS
# endif
# ifdef MOUNT_MFS
case MOUNT_MFS:
return "mfs";
#endif
#ifdef MOUNT_LO
# endif
# ifdef MOUNT_LO
case MOUNT_LO:
return "lo";
#endif
#ifdef MOUNT_TFS
# endif
# ifdef MOUNT_TFS
case MOUNT_TFS:
return "tfs";
#endif
#ifdef MOUNT_TMP
# endif
# ifdef MOUNT_TMP
case MOUNT_TMP:
return "tmp";
#endif
# endif
# ifdef MOUNT_UFS
case MOUNT_UFS:
return "ufs" ;
# endif
# ifdef MOUNT_NFS
case MOUNT_NFS:
return "nfs" ;
# endif
# ifdef MOUNT_MSDOS
case MOUNT_MSDOS:
return "msdos" ;
# endif
# ifdef MOUNT_LFS
case MOUNT_LFS:
return "lfs" ;
# endif
# ifdef MOUNT_LOFS
case MOUNT_LOFS:
return "lofs" ;
# endif
# ifdef MOUNT_FDESC
case MOUNT_FDESC:
return "fdesc" ;
# endif
# ifdef MOUNT_PORTAL
case MOUNT_PORTAL:
return "portal" ;
# endif
# ifdef MOUNT_NULL
case MOUNT_NULL:
return "null" ;
# endif
# ifdef MOUNT_UMAP
case MOUNT_UMAP:
return "umap" ;
# endif
# ifdef MOUNT_KERNFS
case MOUNT_KERNFS:
return "kernfs" ;
# endif
# ifdef MOUNT_PROCFS
case MOUNT_PROCFS:
return "procfs" ;
# endif
# ifdef MOUNT_AFS
case MOUNT_AFS:
return "afs" ;
# endif
# ifdef MOUNT_CD9660
case MOUNT_CD9660:
return "cd9660" ;
# endif
# ifdef MOUNT_UNION
case MOUNT_UNION:
return "union" ;
# endif
# ifdef MOUNT_DEVFS
case MOUNT_DEVFS:
return "devfs" ;
# endif
# ifdef MOUNT_EXT2FS
case MOUNT_EXT2FS:
return "ext2fs" ;
# endif
default:
return "?";
}
@@ -204,7 +275,7 @@ read_filesystem_list (need_fs_type, all_fs)
struct tabmntent *mntlist, *p;
struct mntent *mnt;
struct mount_entry *me;
/* the third and fourth arguments could be used to filter mounts,
but Crays doesn't seem to have any mounts that we want to
remove. Specifically, automount create normal NFS mounts.
@@ -285,11 +356,11 @@ read_filesystem_list (need_fs_type, all_fs)
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
me->me_devname = xstrdup (fsp->f_mntfromname);
me->me_mountdir = xstrdup (fsp->f_mntonname);
#ifdef __NetBSD__
# if defined (__NetBSD__) || defined (__OpenBSD__)
me->me_type = xstrdup (fsp->f_fstypename);
#else
# else
me->me_type = fstype_to_string (fsp->f_type);
#endif
# endif
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
me->me_next = NULL;
@@ -376,17 +447,17 @@ read_filesystem_list (need_fs_type, all_fs)
while (fread (&mnt, sizeof mnt, 1, fp) > 0)
{
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
#ifdef GETFSTYP /* SVR3. */
# ifdef GETFSTYP /* SVR3. */
me->me_devname = xstrdup (mnt.mt_dev);
#else
# else
me->me_devname = xmalloc (strlen (mnt.mt_dev) + 6);
strcpy (me->me_devname, "/dev/");
strcpy (me->me_devname + 5, mnt.mt_dev);
#endif
# endif
me->me_mountdir = xstrdup (mnt.mt_filsys);
me->me_dev = (dev_t) -1; /* Magic; means not known yet. */
me->me_type = "";
#ifdef GETFSTYP /* SVR3. */
# ifdef GETFSTYP /* SVR3. */
if (need_fs_type)
{
struct statfs fsd;
@@ -396,7 +467,7 @@ read_filesystem_list (need_fs_type, all_fs)
&& sysfs (GETFSTYP, fsd.f_fstyp, typebuf) != -1)
me->me_type = xstrdup (typebuf);
}
#endif
# endif
me->me_next = NULL;
/* Add to the linked list. */
@@ -442,6 +513,10 @@ read_filesystem_list (need_fs_type, all_fs)
while ((ret = getmntent (fp, &mnt)) == 0)
{
/* Don't show automounted filesystems twice on e.g., Solaris. */
if (!all_fs && MNT_IGNORE (&mnt))
continue;
me = (struct mount_entry *) xmalloc (sizeof (struct mount_entry));
me->me_devname = xstrdup (mnt.mnt_special);
me->me_mountdir = xstrdup (mnt.mnt_mountp);

View File

@@ -1,34 +1,50 @@
/* obstack.c - subroutines used implicitly by object stack macros
Copyright (C) 1988, 89, 90, 91, 92, 93, 94 Free Software Foundation, Inc.
Copyright (C) 1988,89,90,91,92,93,94,96 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
#include "obstack.h"
/* This is just to get __GNU_LIBRARY__ defined. */
#include <stdio.h>
/* NOTE BEFORE MODIFYING THIS FILE: This version number must be
incremented whenever callers compiled using an old obstack.h can no
longer properly call the functions in this obstack.c. */
#define OBSTACK_INTERFACE_VERSION 1
/* Comment out all this code if we are using the GNU C Library, and are not
actually compiling the library itself. This code is part of the GNU C
Library, but also included in many other GNU distributions. Compiling
actually compiling the library itself, and the installed library
supports the same library interface we do. This code is part of the GNU
C Library, but also included in many other GNU distributions. Compiling
and linking in this code is a waste when using the GNU C library
(especially if it is a shared library). Rather than having every GNU
program understand `configure --with-gnu-libc' and omit the object files,
it is simpler to just do this in the source for each such file. */
program understand `configure --with-gnu-libc' and omit the object
files, it is simpler to just do this in the source for each such file. */
#if defined (_LIBC) || !defined (__GNU_LIBRARY__)
#include <stdio.h> /* Random thing to get __GNU_LIBRARY__. */
#if !defined (_LIBC) && defined (__GNU_LIBRARY__) && __GNU_LIBRARY__ > 1
#include <gnu-versions.h>
#if _GNU_OBSTACK_INTERFACE_VERSION == OBSTACK_INTERFACE_VERSION
#define ELIDE_CODE
#endif
#endif
#ifndef ELIDE_CODE
#if defined (__STDC__) && __STDC__
@@ -40,7 +56,7 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Determine default alignment. */
struct fooalign {char x; double d;};
#define DEFAULT_ALIGNMENT \
((PTR_INT_TYPE) ((char *)&((struct fooalign *) 0)->d - (char *)0))
((PTR_INT_TYPE) ((char *) &((struct fooalign *) 0)->d - (char *) 0))
/* If malloc were really smart, it would round addresses to DEFAULT_ALIGNMENT.
But in fact it might be less smart and round addresses to as much as
DEFAULT_ROUNDING. So we prepare for it to do that. */
@@ -55,6 +71,28 @@ union fooround {long x; double d;};
#define COPYING_UNIT int
#endif
/* The functions allocating more room by calling `obstack_chunk_alloc'
jump to the handler pointed to by `obstack_alloc_failed_handler'.
This variable by default points to the internal function
`print_and_abort'. */
#if defined (__STDC__) && __STDC__
static void print_and_abort (void);
void (*obstack_alloc_failed_handler) (void) = print_and_abort;
#else
static void print_and_abort ();
void (*obstack_alloc_failed_handler) () = print_and_abort;
#endif
/* Exit value used when `print_and_abort' is used. */
#if defined (__STDC__) && __STDC__
#include <stdlib.h>
#endif
#ifndef EXIT_FAILURE
#define EXIT_FAILURE 1
#endif
int obstack_exit_failure = EXIT_FAILURE;
/* The non-GNU-C macros copy the obstack into this global variable
to avoid multiple evaluation. */
@@ -66,18 +104,33 @@ struct obstack *_obstack;
For free, do not use ?:, since some compilers, like the MIPS compilers,
do not allow (expr) ? void : void. */
#if defined (__STDC__) && __STDC__
#define CALL_CHUNKFUN(h, size) \
(((h) -> use_extra_arg) \
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
: (*(h)->chunkfun) ((size)))
: (*(struct _obstack_chunk *(*) (long)) (h)->chunkfun) ((size)))
#define CALL_FREEFUN(h, old_chunk) \
do { \
if ((h) -> use_extra_arg) \
(*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
else \
(*(h)->freefun) ((old_chunk)); \
(*(void (*) (void *)) (h)->freefun) ((old_chunk)); \
} while (0)
#else
#define CALL_CHUNKFUN(h, size) \
(((h) -> use_extra_arg) \
? (*(h)->chunkfun) ((h)->extra_arg, (size)) \
: (*(struct _obstack_chunk *(*) ()) (h)->chunkfun) ((size)))
#define CALL_FREEFUN(h, old_chunk) \
do { \
if ((h) -> use_extra_arg) \
(*(h)->freefun) ((h)->extra_arg, (old_chunk)); \
else \
(*(void (*) ()) (h)->freefun) ((old_chunk)); \
} while (0)
#endif
/* Initialize an obstack H for use. Specify chunk size SIZE (0 means default).
@@ -94,10 +147,15 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
struct obstack *h;
int size;
int alignment;
#if defined (__STDC__) && __STDC__
POINTER (*chunkfun) (long);
void (*freefun) (void *);
#else
POINTER (*chunkfun) ();
void (*freefun) ();
#endif
{
register struct _obstack_chunk* chunk; /* points to new chunk */
register struct _obstack_chunk *chunk; /* points to new chunk */
if (alignment == 0)
alignment = DEFAULT_ALIGNMENT;
@@ -118,25 +176,27 @@ _obstack_begin (h, size, alignment, chunkfun, freefun)
size = 4096 - extra;
}
#if defined (__STDC__) && __STDC__
h->chunkfun = (struct _obstack_chunk * (*)(void *, long)) chunkfun;
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
#else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun;
#endif
h->chunk_size = size;
h->alignment_mask = alignment - 1;
h->use_extra_arg = 0;
chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
if (!chunk)
{
h->alloc_failed = 1;
return 0;
}
h->alloc_failed = 0;
(*obstack_alloc_failed_handler) ();
h->next_free = h->object_base = chunk->contents;
h->chunk_limit = chunk->limit
= (char *) chunk + h->chunk_size;
chunk->prev = 0;
/* The initial chunk now contains no empty object. */
h->maybe_empty_object = 0;
h->alloc_failed = 0;
return 1;
}
@@ -145,11 +205,16 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
struct obstack *h;
int size;
int alignment;
#if defined (__STDC__) && __STDC__
POINTER (*chunkfun) (POINTER, long);
void (*freefun) (POINTER, POINTER);
#else
POINTER (*chunkfun) ();
void (*freefun) ();
#endif
POINTER arg;
{
register struct _obstack_chunk* chunk; /* points to new chunk */
register struct _obstack_chunk *chunk; /* points to new chunk */
if (alignment == 0)
alignment = DEFAULT_ALIGNMENT;
@@ -170,8 +235,13 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
size = 4096 - extra;
}
#if defined(__STDC__) && __STDC__
h->chunkfun = (struct _obstack_chunk * (*)(void *,long)) chunkfun;
h->freefun = (void (*) (void *, struct _obstack_chunk *)) freefun;
#else
h->chunkfun = (struct _obstack_chunk * (*)()) chunkfun;
h->freefun = freefun;
#endif
h->chunk_size = size;
h->alignment_mask = alignment - 1;
h->extra_arg = arg;
@@ -179,17 +249,14 @@ _obstack_begin_1 (h, size, alignment, chunkfun, freefun, arg)
chunk = h->chunk = CALL_CHUNKFUN (h, h -> chunk_size);
if (!chunk)
{
h->alloc_failed = 1;
return 0;
}
h->alloc_failed = 0;
(*obstack_alloc_failed_handler) ();
h->next_free = h->object_base = chunk->contents;
h->chunk_limit = chunk->limit
= (char *) chunk + h->chunk_size;
chunk->prev = 0;
/* The initial chunk now contains no empty object. */
h->maybe_empty_object = 0;
h->alloc_failed = 0;
return 1;
}
@@ -204,8 +271,8 @@ _obstack_newchunk (h, length)
struct obstack *h;
int length;
{
register struct _obstack_chunk* old_chunk = h->chunk;
register struct _obstack_chunk* new_chunk;
register struct _obstack_chunk *old_chunk = h->chunk;
register struct _obstack_chunk *new_chunk;
register long new_size;
register int obj_size = h->next_free - h->object_base;
register int i;
@@ -219,11 +286,7 @@ _obstack_newchunk (h, length)
/* Allocate and initialize the new chunk. */
new_chunk = CALL_CHUNKFUN (h, new_size);
if (!new_chunk)
{
h->alloc_failed = 1;
return;
}
h->alloc_failed = 0;
(*obstack_alloc_failed_handler) ();
h->chunk = new_chunk;
new_chunk->prev = old_chunk;
new_chunk->limit = h->chunk_limit = (char *) new_chunk + new_size;
@@ -278,14 +341,14 @@ _obstack_allocated_p (h, obj)
struct obstack *h;
POINTER obj;
{
register struct _obstack_chunk* lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk* plp; /* point to previous chunk if any */
register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk *plp; /* point to previous chunk if any */
lp = (h)->chunk;
/* We use >= rather than > since the object cannot be exactly at
the beginning of the chunk but might be an empty object exactly
at the end of an adjacent chunk. */
while (lp != 0 && ((POINTER)lp >= obj || (POINTER)(lp)->limit < obj))
at the end of an adjacent chunk. */
while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
{
plp = lp->prev;
lp = plp;
@@ -306,14 +369,14 @@ _obstack_free (h, obj)
struct obstack *h;
POINTER obj;
{
register struct _obstack_chunk* lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk* plp; /* point to previous chunk if any */
register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk *plp; /* point to previous chunk if any */
lp = h->chunk;
/* We use >= because there cannot be an object at the beginning of a chunk.
But there can be an empty object at that address
at the end of another chunk. */
while (lp != 0 && ((POINTER)lp >= obj || (POINTER)(lp)->limit < obj))
while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
{
plp = lp->prev;
CALL_FREEFUN (h, lp);
@@ -324,7 +387,7 @@ _obstack_free (h, obj)
}
if (lp)
{
h->object_base = h->next_free = (char *)(obj);
h->object_base = h->next_free = (char *) (obj);
h->chunk_limit = lp->limit;
h->chunk = lp;
}
@@ -340,14 +403,14 @@ obstack_free (h, obj)
struct obstack *h;
POINTER obj;
{
register struct _obstack_chunk* lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk* plp; /* point to previous chunk if any */
register struct _obstack_chunk *lp; /* below addr of any objects in this chunk */
register struct _obstack_chunk *plp; /* point to previous chunk if any */
lp = h->chunk;
/* We use >= because there cannot be an object at the beginning of a chunk.
But there can be an empty object at that address
at the end of another chunk. */
while (lp != 0 && ((POINTER)lp >= obj || (POINTER)(lp)->limit < obj))
while (lp != 0 && ((POINTER) lp >= obj || (POINTER) (lp)->limit < obj))
{
plp = lp->prev;
CALL_FREEFUN (h, lp);
@@ -358,7 +421,7 @@ obstack_free (h, obj)
}
if (lp)
{
h->object_base = h->next_free = (char *)(obj);
h->object_base = h->next_free = (char *) (obj);
h->chunk_limit = lp->limit;
h->chunk = lp;
}
@@ -367,6 +430,39 @@ obstack_free (h, obj)
abort ();
}
int
_obstack_memory_used (h)
struct obstack *h;
{
register struct _obstack_chunk* lp;
register int nbytes = 0;
for (lp = h->chunk; lp != 0; lp = lp->prev)
{
nbytes += lp->limit - (char *) lp;
}
return nbytes;
}
/* Define the error handler. */
#ifndef _
# ifdef HAVE_LIBINTL_H
# include <libintl.h>
# ifndef _
# define _(Str) gettext (Str)
# endif
# else
# define _(Str) (Str)
# endif
#endif
static void
print_and_abort ()
{
fputs (_("memory exhausted\n"), stderr);
exit (obstack_exit_failure);
}
#if 0
/* These are now turned off because the applications do not use it
and it uses bcopy via obstack_grow, which causes trouble on sysV. */
@@ -405,6 +501,13 @@ int (obstack_room) (obstack)
return obstack_room (obstack);
}
int (obstack_make_room) (obstack, length)
struct obstack *obstack;
int length;
{
return obstack_make_room (obstack, length);
}
void (obstack_grow) (obstack, pointer, length)
struct obstack *obstack;
POINTER pointer;
@@ -482,4 +585,4 @@ POINTER (obstack_copy0) (obstack, pointer, length)
#endif /* 0 */
#endif /* _LIBC or not __GNU_LIBRARY__. */
#endif /* !ELIDE_CODE */

View File

@@ -1,19 +1,23 @@
/* obstack.h - object stack macros
Copyright (C) 1988, 89, 90, 91, 92, 93, 94 Free Software Foundation, Inc.
Copyright (C) 1988,89,90,91,92,93,94,96,97 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This file is part of the GNU C Library. Its master source is NOT part of
the C library, however. The master source lives in /gd/gnu/lib.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB. If not,
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* Summary:
@@ -103,20 +107,16 @@ Summary:
#ifndef __OBSTACK_H__
#define __OBSTACK_H__
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
/* We use subtraction of (char *)0 instead of casting to int
/* We use subtraction of (char *) 0 instead of casting to int
because on word-addressable machines a simple cast to int
may ignore the byte-within-word field of the pointer. */
#ifndef __PTR_TO_INT
#define __PTR_TO_INT(P) ((P) - (char *)0)
#define __PTR_TO_INT(P) ((P) - (char *) 0)
#endif
#ifndef __INT_TO_PTR
#define __INT_TO_PTR(P) ((P) + (char *)0)
#define __INT_TO_PTR(P) ((P) + (char *) 0)
#endif
/* We need the type of the resulting object. In ANSI C it is ptrdiff_t
@@ -142,14 +142,16 @@ Summary:
#define PTR_INT_TYPE long
#endif
#if HAVE_STRING_H || STDC_HEADERS
# include <string.h>
# ifndef bcopy
# define bcopy(s, d, n) memcpy ((d), (s), (n))
# endif
#else /* HAVE_STRING_H || STDC_HEADERS */
# include <strings.h>
#endif /* not (HAVE_STRING_H || STDC_HEADERS) */
#if defined (_LIBC) || defined (HAVE_STRING_H)
#include <string.h>
#define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
#else
#ifdef memcpy
#define _obstack_memcpy(To, From, N) memcpy ((To), (From), (N))
#else
#define _obstack_memcpy(To, From, N) bcopy ((From), (To), (N))
#endif
#endif
struct _obstack_chunk /* Lives at front of each chunk. */
{
@@ -161,21 +163,32 @@ struct _obstack_chunk /* Lives at front of each chunk. */
struct obstack /* control current object in current chunk */
{
long chunk_size; /* preferred size to allocate chunks in */
struct _obstack_chunk* chunk; /* address of current struct obstack_chunk */
struct _obstack_chunk *chunk; /* address of current struct obstack_chunk */
char *object_base; /* address of object we are building */
char *next_free; /* where to add next char to current object */
char *chunk_limit; /* address of char after current chunk */
PTR_INT_TYPE temp; /* Temporary for some macros. */
int alignment_mask; /* Mask of alignment for each object. */
#if defined (__STDC__) && __STDC__
/* These prototypes vary based on `use_extra_arg', and we use
casts to the prototypeless function type in all assignments,
but having prototypes here quiets -Wstrict-prototypes. */
struct _obstack_chunk *(*chunkfun) (void *, long);
void (*freefun) (void *, struct _obstack_chunk *);
void *extra_arg; /* first arg for chunk alloc/dealloc funcs */
#else
struct _obstack_chunk *(*chunkfun) (); /* User's fcn to allocate a chunk. */
void (*freefun) (); /* User's function to free a chunk. */
char *extra_arg; /* first arg for chunk alloc/dealloc funcs */
#endif
unsigned use_extra_arg:1; /* chunk alloc/dealloc funcs take extra arg */
unsigned maybe_empty_object:1;/* There is a possibility that the current
chunk contains a zero-length object. This
prevents freeing the chunk if we allocate
a bigger chunk to replace it. */
unsigned alloc_failed:1; /* chunk alloc func returned 0 */
unsigned alloc_failed:1; /* No longer used, as we now call the failed
handler on error, but retained for binary
compatibility. */
};
/* Declare the external functions we use; they are in obstack.c. */
@@ -184,14 +197,17 @@ struct obstack /* control current object in current chunk */
extern void _obstack_newchunk (struct obstack *, int);
extern void _obstack_free (struct obstack *, void *);
extern int _obstack_begin (struct obstack *, int, int,
void *(*) (), void (*) ());
void *(*) (long), void (*) (void *));
extern int _obstack_begin_1 (struct obstack *, int, int,
void *(*) (), void (*) (), void *);
void *(*) (void *, long),
void (*) (void *, void *), void *);
extern int _obstack_memory_used (struct obstack *);
#else
extern void _obstack_newchunk ();
extern void _obstack_free ();
extern int _obstack_begin ();
extern int _obstack_begin_1 ();
extern int _obstack_memory_used ();
#endif
#if defined (__STDC__) && __STDC__
@@ -222,6 +238,7 @@ void * obstack_finish (struct obstack *obstack);
int obstack_object_size (struct obstack *obstack);
int obstack_room (struct obstack *obstack);
void obstack_make_room (struct obstack *obstack, int size);
void obstack_1grow_fast (struct obstack *obstack, int data_char);
void obstack_ptr_grow_fast (struct obstack *obstack, void *data);
void obstack_int_grow_fast (struct obstack *obstack, int data);
@@ -231,17 +248,30 @@ void * obstack_base (struct obstack *obstack);
void * obstack_next_free (struct obstack *obstack);
int obstack_alignment_mask (struct obstack *obstack);
int obstack_chunk_size (struct obstack *obstack);
int obstack_memory_used (struct obstack *obstack);
#endif /* __STDC__ */
/* Non-ANSI C cannot really support alternative functions for these macros,
so we do not declare them. */
/* Error handler called when `obstack_chunk_alloc' failed to allocate
more memory. This can be set to a user defined function. The
default action is to print a message and abort. */
#if defined (__STDC__) && __STDC__
extern void (*obstack_alloc_failed_handler) (void);
#else
extern void (*obstack_alloc_failed_handler) ();
#endif
/* Exit value used when `print_and_abort' is used. */
extern int obstack_exit_failure;
/* Pointer to beginning of object being allocated or to be allocated next.
Note that this might not be the final address of the object
because a new chunk might be needed to hold the final size. */
#define obstack_base(h) ((h)->alloc_failed ? 0 : (h)->object_base)
#define obstack_base(h) ((h)->object_base)
/* Size for allocating ordinary chunks. */
@@ -249,12 +279,40 @@ int obstack_chunk_size (struct obstack *obstack);
/* Pointer to next byte not yet allocated in current chunk. */
#define obstack_next_free(h) ((h)->alloc_failed ? 0 : (h)->next_free)
#define obstack_next_free(h) ((h)->next_free)
/* Mask specifying low bits that should be clear in address of an object. */
#define obstack_alignment_mask(h) ((h)->alignment_mask)
/* To prevent prototype warnings provide complete argument list in
standard C version. */
#if defined (__STDC__) && __STDC__
#define obstack_init(h) \
_obstack_begin ((h), 0, 0, \
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
#define obstack_begin(h, size) \
_obstack_begin ((h), (size), 0, \
(void *(*) (long)) obstack_chunk_alloc, (void (*) (void *)) obstack_chunk_free)
#define obstack_specify_allocation(h, size, alignment, chunkfun, freefun) \
_obstack_begin ((h), (size), (alignment), \
(void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun))
#define obstack_specify_allocation_with_arg(h, size, alignment, chunkfun, freefun, arg) \
_obstack_begin_1 ((h), (size), (alignment), \
(void *(*) (long)) (chunkfun), (void (*) (void *)) (freefun), (arg))
#define obstack_chunkfun(h, newchunkfun) \
((h) -> chunkfun = (struct _obstack_chunk *(*)(long)) (newchunkfun))
#define obstack_freefun(h, newfreefun) \
((h) -> freefun = (void (*)(void *)) (newfreefun))
#else
#define obstack_init(h) \
_obstack_begin ((h), 0, 0, \
(void *(*) ()) obstack_chunk_alloc, (void (*) ()) obstack_chunk_free)
@@ -277,11 +335,15 @@ int obstack_chunk_size (struct obstack *obstack);
#define obstack_freefun(h, newfreefun) \
((h) -> freefun = (void (*)()) (newfreefun))
#endif
#define obstack_1grow_fast(h,achar) (*((h)->next_free)++ = achar)
#define obstack_blank_fast(h,n) ((h)->next_free += (n))
#define obstack_memory_used(h) _obstack_memory_used (h)
#if defined (__GNUC__) && defined (__STDC__)
#if defined (__GNUC__) && defined (__STDC__) && __STDC__
/* NextStep 2.0 cc is really gcc 1.93 but it defines __GNUC__ = 2 and
does not implement __extension__. But that compiler doesn't define
__GNUC_MINOR__. */
@@ -297,7 +359,6 @@ int obstack_chunk_size (struct obstack *obstack);
#define obstack_object_size(OBSTACK) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
__o->alloc_failed ? 0 : \
(unsigned) (__o->next_free - __o->object_base); })
#define obstack_room(OBSTACK) \
@@ -305,17 +366,22 @@ int obstack_chunk_size (struct obstack *obstack);
({ struct obstack *__o = (OBSTACK); \
(unsigned) (__o->chunk_limit - __o->next_free); })
#define obstack_make_room(OBSTACK,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
if (__o->chunk_limit - __o->next_free < __len) \
_obstack_newchunk (__o, __len); \
(void) 0; })
#define obstack_grow(OBSTACK,where,length) \
__extension__ \
({ struct obstack *__o = (OBSTACK); \
int __len = (length); \
if (__o->next_free + __len > __o->chunk_limit) \
_obstack_newchunk (__o, __len); \
if (!__o->alloc_failed) \
{ \
bcopy ((char *) (where), __o->next_free, __len); \
__o->next_free += __len; \
} \
_obstack_memcpy (__o->next_free, (char *) (where), __len); \
__o->next_free += __len; \
(void) 0; })
#define obstack_grow0(OBSTACK,where,length) \
@@ -324,12 +390,9 @@ __extension__ \
int __len = (length); \
if (__o->next_free + __len + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, __len + 1); \
if (!__o->alloc_failed) \
{ \
bcopy ((char *) (where), __o->next_free, __len); \
__o->next_free += __len; \
*(__o->next_free)++ = 0; \
} \
_obstack_memcpy (__o->next_free, (char *) (where), __len); \
__o->next_free += __len; \
*(__o->next_free)++ = 0; \
(void) 0; })
#define obstack_1grow(OBSTACK,datum) \
@@ -337,8 +400,7 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + 1 > __o->chunk_limit) \
_obstack_newchunk (__o, 1); \
if (!__o->alloc_failed) \
*(__o->next_free)++ = (datum); \
*(__o->next_free)++ = (datum); \
(void) 0; })
/* These assume that the obstack alignment is good enough for pointers or ints,
@@ -350,8 +412,7 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (void *) > __o->chunk_limit) \
_obstack_newchunk (__o, sizeof (void *)); \
if (!__o->alloc_failed) \
*((void **)__o->next_free)++ = ((void *)datum); \
*((void **)__o->next_free)++ = ((void *)datum); \
(void) 0; })
#define obstack_int_grow(OBSTACK,datum) \
@@ -359,12 +420,11 @@ __extension__ \
({ struct obstack *__o = (OBSTACK); \
if (__o->next_free + sizeof (int) > __o->chunk_limit) \
_obstack_newchunk (__o, sizeof (int)); \
if (!__o->alloc_failed) \
*((int *)__o->next_free)++ = ((int)datum); \
*((int *)__o->next_free)++ = ((int)datum); \
(void) 0; })
#define obstack_ptr_grow_fast(h,aptr) (*((void **)(h)->next_free)++ = (void *)aptr)
#define obstack_int_grow_fast(h,aint) (*((int *)(h)->next_free)++ = (int)aint)
#define obstack_ptr_grow_fast(h,aptr) (*((void **) (h)->next_free)++ = (void *)aptr)
#define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
#define obstack_blank(OBSTACK,length) \
__extension__ \
@@ -372,8 +432,7 @@ __extension__ \
int __len = (length); \
if (__o->chunk_limit - __o->next_free < __len) \
_obstack_newchunk (__o, __len); \
if (!__o->alloc_failed) \
__o->next_free += __len; \
__o->next_free += __len; \
(void) 0; })
#define obstack_alloc(OBSTACK,length) \
@@ -400,21 +459,16 @@ __extension__ \
__extension__ \
({ struct obstack *__o1 = (OBSTACK); \
void *value; \
if (__o1->alloc_failed) \
value = 0; \
else \
{ \
value = (void *) __o1->object_base; \
if (__o1->next_free == value) \
__o1->maybe_empty_object = 1; \
__o1->next_free \
= __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
& ~ (__o1->alignment_mask)); \
if (__o1->next_free - (char *)__o1->chunk \
> __o1->chunk_limit - (char *)__o1->chunk) \
__o1->next_free = __o1->chunk_limit; \
__o1->object_base = __o1->next_free; \
} \
value = (void *) __o1->object_base; \
if (__o1->next_free == value) \
__o1->maybe_empty_object = 1; \
__o1->next_free \
= __INT_TO_PTR ((__PTR_TO_INT (__o1->next_free)+__o1->alignment_mask)\
& ~ (__o1->alignment_mask)); \
if (__o1->next_free - (char *)__o1->chunk \
> __o1->chunk_limit - (char *)__o1->chunk) \
__o1->next_free = __o1->chunk_limit; \
__o1->object_base = __o1->next_free; \
value; })
#define obstack_free(OBSTACK, OBJ) \
@@ -428,7 +482,7 @@ __extension__ \
#else /* not __GNUC__ or not __STDC__ */
#define obstack_object_size(h) \
(unsigned) ((h)->alloc_failed ? 0 : (h)->next_free - (h)->object_base)
(unsigned) ((h)->next_free - (h)->object_base)
#define obstack_room(h) \
(unsigned) ((h)->chunk_limit - (h)->next_free)
@@ -439,50 +493,49 @@ __extension__ \
Casting the third operand to void was tried before,
but some compilers won't accept it. */
#define obstack_make_room(h,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0))
#define obstack_grow(h,where,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
((h)->alloc_failed ? 0 : \
(bcopy ((char *) (where), (h)->next_free, (h)->temp), \
(h)->next_free += (h)->temp)))
_obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \
(h)->next_free += (h)->temp)
#define obstack_grow0(h,where,length) \
( (h)->temp = (length), \
(((h)->next_free + (h)->temp + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), (h)->temp + 1), 0) : 0), \
((h)->alloc_failed ? 0 : \
(bcopy ((char *) (where), (h)->next_free, (h)->temp), \
_obstack_memcpy ((h)->next_free, (char *) (where), (h)->temp), \
(h)->next_free += (h)->temp, \
*((h)->next_free)++ = 0)))
*((h)->next_free)++ = 0)
#define obstack_1grow(h,datum) \
( (((h)->next_free + 1 > (h)->chunk_limit) \
? (_obstack_newchunk ((h), 1), 0) : 0), \
((h)->alloc_failed ? 0 : \
(*((h)->next_free)++ = (datum))))
(*((h)->next_free)++ = (datum)))
#define obstack_ptr_grow(h,datum) \
( (((h)->next_free + sizeof (char *) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (char *)), 0) : 0), \
((h)->alloc_failed ? 0 : \
(*((char **)(((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *)datum))))
(*((char **) (((h)->next_free+=sizeof(char *))-sizeof(char *))) = ((char *) datum)))
#define obstack_int_grow(h,datum) \
( (((h)->next_free + sizeof (int) > (h)->chunk_limit) \
? (_obstack_newchunk ((h), sizeof (int)), 0) : 0), \
((h)->alloc_failed ? 0 : \
(*((int *)(((h)->next_free+=sizeof(int))-sizeof(int))) = ((int)datum))))
(*((int *) (((h)->next_free+=sizeof(int))-sizeof(int))) = ((int) datum)))
#define obstack_ptr_grow_fast(h,aptr) (*((char **)(h)->next_free)++ = (char *)aptr)
#define obstack_int_grow_fast(h,aint) (*((int *)(h)->next_free)++ = (int)aint)
#define obstack_ptr_grow_fast(h,aptr) (*((char **) (h)->next_free)++ = (char *) aptr)
#define obstack_int_grow_fast(h,aint) (*((int *) (h)->next_free)++ = (int) aint)
#define obstack_blank(h,length) \
( (h)->temp = (length), \
(((h)->chunk_limit - (h)->next_free < (h)->temp) \
? (_obstack_newchunk ((h), (h)->temp), 0) : 0), \
((h)->alloc_failed ? 0 : \
((h)->next_free += (h)->temp)))
((h)->next_free += (h)->temp))
#define obstack_alloc(h,length) \
(obstack_blank ((h), (length)), obstack_finish ((h)))
@@ -494,30 +547,29 @@ __extension__ \
(obstack_grow0 ((h), (where), (length)), obstack_finish ((h)))
#define obstack_finish(h) \
( (h)->alloc_failed ? 0 : \
(((h)->next_free == (h)->object_base \
( ((h)->next_free == (h)->object_base \
? (((h)->maybe_empty_object = 1), 0) \
: 0), \
(h)->temp = __PTR_TO_INT ((h)->object_base), \
(h)->next_free \
= __INT_TO_PTR ((__PTR_TO_INT ((h)->next_free)+(h)->alignment_mask) \
& ~ ((h)->alignment_mask)), \
(((h)->next_free - (char *)(h)->chunk \
> (h)->chunk_limit - (char *)(h)->chunk) \
(((h)->next_free - (char *) (h)->chunk \
> (h)->chunk_limit - (char *) (h)->chunk) \
? ((h)->next_free = (h)->chunk_limit) : 0), \
(h)->object_base = (h)->next_free, \
__INT_TO_PTR ((h)->temp)))
__INT_TO_PTR ((h)->temp))
#if defined (__STDC__) && __STDC__
#define obstack_free(h,obj) \
( (h)->temp = (char *)(obj) - (char *) (h)->chunk, \
( (h)->temp = (char *) (obj) - (char *) (h)->chunk, \
(((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
? (int) ((h)->next_free = (h)->object_base \
= (h)->temp + (char *) (h)->chunk) \
: (((obstack_free) ((h), (h)->temp + (char *) (h)->chunk), 0), 0)))
#else
#define obstack_free(h,obj) \
( (h)->temp = (char *)(obj) - (char *) (h)->chunk, \
( (h)->temp = (char *) (obj) - (char *) (h)->chunk, \
(((h)->temp > 0 && (h)->temp < (h)->chunk_limit - (char *) (h)->chunk)\
? (int) ((h)->next_free = (h)->object_base \
= (h)->temp + (char *) (h)->chunk) \

View File

@@ -33,7 +33,10 @@ char *stpcpy ();
BASE in the returned concatenation. */
char *
path_concat (const char *dir, const char *base, char **base_in_result)
path_concat (dir, base, base_in_result)
const char *dir;
const char *base;
char **base_in_result;
{
char *p;
char *p_concat;

View File

@@ -67,9 +67,56 @@ static struct tm t;
time_t mktime ();
#define yyparse posixtime_yyparse
/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
as well as gratuitiously global symbol names, so we can have multiple
yacc generated parsers in the same program. Note that these are only
the variables produced by yacc. If other parser generators (bison,
byacc, etc) produce additional global names that conflict at link time,
then those parser generators need to be fixed instead of adding those
names to this list. */
#define yymaxdepth pt_maxdepth
#define yyparse pt_parse
#define yylex pt_lex
#define yyerror pt_error
#define yylval pt_lval
#define yychar pt_char
#define yydebug pt_debug
#define yypact pt_pact
#define yyr1 pt_r1
#define yyr2 pt_r2
#define yydef pt_def
#define yychk pt_chk
#define yypgo pt_pgo
#define yyact pt_act
#define yyexca pt_exca
#define yyerrflag pt_errflag
#define yynerrs pt_nerrs
#define yyps pt_ps
#define yypv pt_pv
#define yys pt_s
#define yy_yys pt_yys
#define yystate pt_state
#define yytmp pt_tmp
#define yyv pt_v
#define yy_yyv pt_yyv
#define yyval pt_val
#define yylloc pt_lloc
#define yyreds pt_reds /* With YYDEBUG defined */
#define yytoks pt_toks /* With YYDEBUG defined */
#define yylhs pt_yylhs
#define yylen pt_yylen
#define yydefred pt_yydefred
#define yydgoto pt_yydgoto
#define yysindex pt_yysindex
#define yyrindex pt_yyrindex
#define yygindex pt_yygindex
#define yytable pt_yytable
#define yycheck pt_yycheck
static int yylex ();
static int yyerror ();
%}
%token DIGIT

View File

@@ -1,33 +1,28 @@
/* Copyright (C) 1991, 1994 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1994, 1997 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#include <errno.h>
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
/* Define-away any (possibly conflicting) prototype of putenv.
Many systems omit the `const' attribute on the argument. */
#define putenv _sys_putenv
#if defined (__GNU_LIBRARY__) || defined (HAVE_STDLIB_H)
# include <stdlib.h>
#endif
@@ -38,8 +33,6 @@ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
# include <unistd.h>
#endif
#undef putenv
#if !defined (__GNU_LIBRARY__) && !defined (HAVE_STRCHR)
# define strchr index
#endif
@@ -56,7 +49,7 @@ extern char **environ;
/* Put STRING, which is of the form "NAME=VALUE", in the environment. */
int
putenv (string)
rpl_putenv (string)
const char *string;
{
const char *const name_end = strchr (string, '=');

File diff suppressed because it is too large Load Diff

View File

@@ -1,4 +1,4 @@
/* rename.c -- BSD compatible directory function for System V
/* BSD compatible rename and directory rename function for System V.
Copyright (C) 1988, 1990 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -15,8 +15,8 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
@@ -26,12 +26,12 @@
extern int errno;
#endif
#ifdef STAT_MACROS_BROKEN
#undef S_ISDIR
#endif /* STAT_MACROS_BROKEN. */
#if STAT_MACROS_BROKEN
# undef S_ISDIR
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
/* Rename file FROM to file TO.
@@ -67,6 +67,12 @@ rename (from, to)
return -1;
}
#ifdef MVDIR
/* If MVDIR is defined, it should be the full filename of a setuid root
program able to link and unlink directories. If MVDIR is not defined,
then the capability of renaming directories may be missing. */
if (S_ISDIR (from_stats.st_mode))
{
/* Need a setuid root process to link and unlink directories. */
@@ -90,6 +96,9 @@ rename (from, to)
}
}
else
#endif /* MVDIR */
{
if (link (from, to))
return -1;

View File

@@ -1,4 +1,4 @@
/* rmdir.c -- BSD compatible remove directory function for System V
/* BSD compatible remove directory function for System V
Copyright (C) 1988, 1990 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
@@ -15,8 +15,8 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
@@ -27,12 +27,12 @@
extern int errno;
#endif
#ifdef STAT_MACROS_BROKEN
#undef S_ISDIR
#if STAT_MACROS_BROKEN
# undef S_ISDIR
#endif
#if !defined(S_ISDIR) && defined(S_IFDIR)
#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
#endif
/* rmdir adapted from GNU tar. */

View File

@@ -1,30 +1,40 @@
/* rpmatch - determine whether string value is affirmation or negative
response according to current locale's data
Copyright (C) 1996 Free Software Foundation, Inc.
/* Determine whether string value is affirmation or negative response
according to current locale's data.
Copyright (C) 1996 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
#if STDC_HEADERS || _LIBC
# include <stddef.h>
# include <stdlib.h>
#else
# ifndef NULL
# define NULL 0
# endif
#endif
#include <regex.h>
#include <sys/types.h>
#if WITH_REGEX
# include <regex.h>
#else
# include <rx.h>
#endif
#if ENABLE_NLS
# include <libintl.h>
@@ -74,8 +84,8 @@ rpmatch (response)
static regex_t yesre, nore;
int result;
return ((result = try (response, _("^[yY][[:alpha:]]*"), 1, 0,
return ((result = try (response, _("^[yY]"), 1, 0,
&yesexpr, &yesre))
? result
: try (response, _("^[nN][[:alpha:]]*"), 0, -1, &noexpr, &nore));
: try (response, _("^[nN]"), 0, -1, &noexpr, &nore));
}

445
lib/rx.c

File diff suppressed because it is too large Load Diff

494
lib/rx.h

File diff suppressed because it is too large Load Diff

View File

@@ -16,13 +16,13 @@
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <sys/types.h>
#ifdef HAVE_UNISTD_H
#if HAVE_UNISTD_H
# include <unistd.h>
#endif

View File

@@ -1,5 +1,5 @@
/* save-cwd.c -- Save and restore current working directory.
Copyright (C) 1995 Free Software Foundation, Inc.
Copyright (C) 1995, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -38,7 +38,7 @@
#endif
#include <errno.h>
# ifndef errno
#ifndef errno
extern int errno;
#endif
@@ -96,7 +96,7 @@ save_cwd (cwd)
}
# endif /* __sun__ || sun */
#else
#define fchdir(x) (abort (), 0)
# define fchdir(x) (abort (), 0)
have_working_fchdir = 0;
#endif
}
@@ -152,4 +152,3 @@ free_cwd (cwd)
if (cwd->name)
free (cwd->name);
}

View File

@@ -15,8 +15,8 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */

View File

@@ -1,4 +1,4 @@
/* Copyright (C) 1991 Free Software Foundation, Inc.
/* Copyright (C) 1991, 1994, 1996, 1997 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -14,11 +14,11 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef HAVE_STRING_H
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
@@ -27,7 +27,7 @@
# endif
#endif
/* Return the length of the maximum inital segment of S
/* Return the length of the maximum initial segment of S
which contains no characters from REJECT. */
int
strcspn (s, reject)

File diff suppressed because it is too large Load Diff

View File

@@ -15,7 +15,7 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif

View File

@@ -14,8 +14,8 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#include <errno.h>
@@ -26,21 +26,21 @@ extern int errno;
#include <ctype.h>
#include <math.h>
#ifdef HAVE_FLOAT_H
#include <float.h>
#if HAVE_FLOAT_H
# include <float.h>
#else
#define DBL_MAX 1.7976931348623159e+308
#define DBL_MIN 2.2250738585072010e-308
# define DBL_MAX 1.7976931348623159e+308
# define DBL_MIN 2.2250738585072010e-308
#endif
#if STDC_HEADERS
#include <stdlib.h>
#include <string.h>
# include <stdlib.h>
# include <string.h>
#else
#define NULL 0
#ifndef HUGE_VAL
#define HUGE_VAL HUGE
#endif
# define NULL 0
# ifndef HUGE_VAL
# define HUGE_VAL HUGE
# endif
#endif
/* Convert NPTR to a double. If ENDPTR is not NULL, a pointer to the

View File

@@ -1,24 +1,23 @@
/* Copyright (C) 1991, 92, 94, 95, 96 Free Software Foundation, Inc.
/* strtol - Convert string representation of a number into an integer value.
Copyright (C) 1991, 92, 94, 95, 96, 97 Free Software Foundation, Inc.
NOTE: The canonical source of this file is maintained with the GNU C
Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu.
NOTE: The canonical source of this file is maintained with the GNU C Library.
Bugs can be reported to bug-glibc@prep.ai.mit.edu.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2, or (at your option) any
later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
USA. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
@@ -33,6 +32,9 @@ USA. */
#ifndef errno
extern int errno;
#endif
#ifndef __set_errno
# define __set_errno(Val) errno = (Val)
#endif
#ifdef HAVE_LIMITS_H
# include <limits.h>
@@ -41,6 +43,7 @@ extern int errno;
#ifdef STDC_HEADERS
# include <stddef.h>
# include <stdlib.h>
# include <string.h>
#else
# ifndef NULL
# define NULL 0
@@ -108,40 +111,38 @@ extern int errno;
#else
# define LONG long
# ifndef ULONG_MAX
# define ULONG_MAX ((unsigned long) ~(unsigned long) 0)
# endif
# ifndef LONG_MAX
# define LONG_MAX ((long int) (ULONG_MAX >> 1))
# endif
#ifndef ULONG_MAX
# define ULONG_MAX ((unsigned long) ~(unsigned long) 0)
#endif
#ifndef LONG_MAX
# define LONG_MAX ((long int) (ULONG_MAX >> 1))
#endif
#endif
#ifdef USE_WIDE_CHAR
# include <wchar.h>
# include <wctype.h>
# define L_(ch) L##ch
# define L_(Ch) L##Ch
# define UCHAR_TYPE wint_t
# define STRING_TYPE wchar_t
# define ISSPACE(ch) iswspace (ch)
# define ISALPHA(ch) iswalpha (ch)
# define TOUPPER(ch) towupper (ch)
# define ISSPACE(Ch) iswspace (Ch)
# define ISALPHA(Ch) iswalpha (Ch)
# define TOUPPER(Ch) towupper (Ch)
#else
# define L_(ch) ch
# define L_(Ch) Ch
# define UCHAR_TYPE unsigned char
# define STRING_TYPE char
# define ISSPACE(ch) isspace (ch)
# define ISALPHA(ch) isalpha (ch)
# define TOUPPER(ch) toupper (ch)
# define ISSPACE(Ch) isspace (Ch)
# define ISALPHA(Ch) isalpha (Ch)
# define TOUPPER(Ch) toupper (Ch)
#endif
#ifdef __STDC__
# define INTERNAL(x) INTERNAL1(x)
# define INTERNAL1(x) __##x##_internal
# define WEAKNAME(x) WEAKNAME1(x)
# define WEAKNAME1(x) __##x
# define INTERNAL(X) INTERNAL1(X)
# define INTERNAL1(X) __##X##_internal
# define WEAKNAME(X) WEAKNAME1(X)
#else
# define INTERNAL(x) __/**/x/**/_internal
# define WEAKNAME(x) __/**/x
# define INTERNAL(X) __/**/X/**/_internal
#endif
#ifdef USE_NUMBER_GROUPING
@@ -200,7 +201,10 @@ INTERNAL (strtol) (nptr, endptr, base, group)
#endif
if (base < 0 || base == 1 || base > 36)
base = 10;
{
__set_errno (EINVAL);
return 0;
}
save = s = nptr;
@@ -251,8 +255,9 @@ INTERNAL (strtol) (nptr, endptr, base, group)
/* Find the end of the digit string and check its grouping. */
end = s;
for (c = *end; c != L_('\0'); c = *++end)
if (c != thousands && (c < L_('0') || c > L_('9'))
&& (!ISALPHA (c) || TOUPPER (c) - L_('A') + 10 >= base))
if ((wchar_t) c != thousands
&& ((wchar_t) c < L_('0') || (wchar_t) c > L_('9'))
&& (!ISALPHA (c) || (int) (TOUPPER (c) - L_('A') + 10) >= base))
break;
if (*s == thousands)
end = s;
@@ -278,7 +283,7 @@ INTERNAL (strtol) (nptr, endptr, base, group)
c = TOUPPER (c) - L_('A') + 10;
else
break;
if (c >= base)
if ((int) c >= base)
break;
/* Check for overflow. */
if (i > cutoff || (i == cutoff && c > cutlim))
@@ -307,11 +312,13 @@ INTERNAL (strtol) (nptr, endptr, base, group)
? -((unsigned LONG int) (LONG_MIN + 1)) + 1
: (unsigned LONG int) LONG_MAX))
overflow = 1;
#else
overflow |= negative;
#endif
if (overflow)
{
errno = ERANGE;
__set_errno (ERANGE);
#if UNSIGNED
return ULONG_MAX;
#else
@@ -324,7 +331,7 @@ INTERNAL (strtol) (nptr, endptr, base, group)
noconv:
/* We must handle a special case here: the base is 0 or 16 and the
first two characters and '0' and 'x', but the rest are no
first two characters are '0' and 'x', but the rest are no
hexadecimal digits. This is no error case. We return 0 and
ENDPTR points to the `x`. */
if (endptr != NULL)
@@ -340,19 +347,23 @@ noconv:
/* External user entry point. */
#undef __P
#if defined (__STDC__) && __STDC__
# define __P(args) args
#else
# define __P(args) ()
#endif
#if _LIBC - 0 == 0
# undef PARAMS
# if defined (__STDC__) && __STDC__
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
/* Prototype. */
INT strtol __P ((const STRING_TYPE *nptr, STRING_TYPE **endptr,
int base));
INT strtol PARAMS ((const STRING_TYPE *nptr, STRING_TYPE **endptr, int base));
#endif
INT
#ifdef weak_function
weak_function
#endif
strtol (nptr, endptr, base)
const STRING_TYPE *nptr;
STRING_TYPE **endptr;

View File

@@ -1,5 +1,5 @@
/* xgetcwd.c -- return current directory with unlimited length
Copyright (C) 1992 Free Software Foundation, Inc.
Copyright (C) 1992, 1996 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -17,7 +17,7 @@
/* Written by David MacKenzie <djm@gnu.ai.mit.edu>. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
@@ -26,14 +26,15 @@
#ifndef errno
extern int errno;
#endif
#include <sys/types.h>
#include "pathmax.h"
#ifndef HAVE_GETCWD
char *getwd ();
# define getcwd(buf, max) getwd (buf)
#else
#if HAVE_GETCWD
char *getcwd ();
#else
char *getwd ();
# define getcwd(Buf, Max) getwd (Buf)
#endif
/* Amount to increase buffer size by in each try. */

View File

@@ -1,5 +1,5 @@
/* xgethostname.c -- return current hostname with unlimited length
Copyright (C) 1992 Free Software Foundation, Inc.
Copyright (C) 1992, 1996 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Written by Jim Meyering, meyering@comco.com */
/* written by Jim Meyering */
#ifdef HAVE_CONFIG_H
# include <config.h>
@@ -23,12 +23,23 @@
#include <sys/types.h>
#include <errno.h>
#ifndef errno
extern int errno;
#endif
#include "error.h"
#ifndef EXIT_FAILURE
# define EXIT_FAILURE 1
#endif
int gethostname ();
char *xmalloc ();
char *xrealloc ();
#ifndef INITIAL_HOSTNAME_LENGTH
# define INITIAL_HOSTNAME_LENGTH 33
# define INITIAL_HOSTNAME_LENGTH 34
#endif
char *
@@ -42,10 +53,20 @@ xgethostname ()
hostname = xmalloc (size);
while (1)
{
hostname[size - 1] = '\0';
/* Use size - 2 here rather than size - 1 to work around the bug
in SunOS5.5's gethostname whereby it NUL-terminates HOSTNAME
even when the name is longer than the supplied buffer. */
int k = size - 2;
errno = 0;
hostname[k] = '\0';
err = gethostname (hostname, size);
if (err == 0 && hostname[size - 1] == '\0')
if (err == 0 && hostname[k] == '\0')
break;
#ifdef ENAMETOOLONG
else if (err != 0 && errno != ENAMETOOLONG && errno != 0)
error (EXIT_FAILURE, errno, "gethostname");
#endif
size *= 2;
hostname = xrealloc (hostname, size);
}

View File

@@ -1,5 +1,5 @@
/* xmalloc.c -- malloc with out of memory checking
Copyright (C) 1990, 91, 92, 93, 94 Free Software Foundation, Inc.
Copyright (C) 1990, 91, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#if HAVE_CONFIG_H
# include <config.h>
#endif
@@ -30,23 +30,35 @@
#if STDC_HEADERS
# include <stdlib.h>
#else
VOID *calloc ();
VOID *malloc ();
VOID *realloc ();
void free ();
#endif
/* This is for other GNU distributions with internationalized messages.
The GNU C Library itself does not yet support such messages. */
#if HAVE_LIBINTL_H
#if ENABLE_NLS
# include <libintl.h>
# define _(Text) gettext (Text)
#else
# define gettext(msgid) (msgid)
# define textdomain(Domain)
# define _(Text) Text
#endif
#include "error.h"
#ifndef EXIT_FAILURE
# define EXIT_FAILURE 1
#endif
/* Prototypes for functions defined here. */
#if defined (__STDC__) && __STDC__
static VOID *fixup_null_alloc (size_t n);
VOID *xmalloc (size_t n);
VOID *xcalloc (size_t n, size_t s);
VOID *xrealloc (VOID *p, size_t n);
#endif
/* Exit value when the requested amount of memory is not available.
The caller may set it to some other value. */
int xmalloc_exit_failure = EXIT_FAILURE;
@@ -67,7 +79,7 @@ fixup_null_alloc (n)
if (n == 0)
p = malloc ((size_t) 1);
if (p == 0)
error (xmalloc_exit_failure, 0, gettext ("Memory exhausted"));
error (xmalloc_exit_failure, 0, _("Memory exhausted"));
return p;
}
@@ -85,6 +97,20 @@ xmalloc (n)
return p;
}
/* Allocate memory for N elements of S bytes, with error checking. */
VOID *
xcalloc (n, s)
size_t n, s;
{
VOID *p;
p = calloc (n, s);
if (p == 0)
p = fixup_null_alloc (n);
return p;
}
/* Change the size of an allocated block of memory P to N bytes,
with error checking.
If P is NULL, run xmalloc. */

View File

@@ -1,5 +1,5 @@
/* xstrdup.c -- copy a string with out of memory checking
Copyright (C) 1990 Free Software Foundation, Inc.
Copyright (C) 1990, 1996 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -15,16 +15,22 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#if defined(STDC_HEADERS) || defined(HAVE_STRING_H)
#include <string.h>
# include <string.h>
#else
#include <strings.h>
# include <strings.h>
#endif
#if defined (__STDC__) && __STDC__
char *xmalloc (size_t);
char *xstrdup (char *string);
#else
char *xmalloc ();
#endif
/* Return a newly allocated copy of STRING. */

View File

@@ -1,15 +1,14 @@
#ifndef XSTRTOD_H
# define XSTRTOD_H 1
# ifndef __P
# if defined (__GNUC__) || (defined (__STDC__) && __STDC__)
# define __P(args) args
# else
# define __P(args) ()
# endif /* GCC. */
# endif /* Not __P. */
#undef PARAMS
#if defined (__STDC__) && __STDC__
# define PARAMS(Args) Args
#else
# define PARAMS(Args) ()
#endif
int
xstrtod __P ((const char *str, const char **ptr, double *result));
xstrtod PARAMS ((const char *str, const char **ptr, double *result));
#endif /* XSTRTOD_H */
#endif /* not XSTRTOD_H */

View File

@@ -15,17 +15,17 @@
along with this program; if not, write to the Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* Jim Meyering (meyering@na-net.ornl.gov) */
/* Written by Jim Meyering. */
#ifdef HAVE_CONFIG_H
#include <config.h>
#if HAVE_CONFIG_H
# include <config.h>
#endif
#ifdef STDC_HEADERS
#include <stdlib.h>
#if STDC_HEADERS
# include <stdlib.h>
#endif
#ifdef HAVE_STRING_H
#if HAVE_STRING_H
# include <string.h>
#else
# include <strings.h>
@@ -91,19 +91,21 @@ __xstrtol (s, ptr, base, val, valid_suffixes)
return LONGINT_OVERFLOW;
if (*p == s)
return LONGINT_INVALID;
/* Let valid_suffixes == NULL mean `allow any suffix'. */
/* FIXME: update all callers except the one in tail.c changing
last parameter NULL to `""'. */
if (!valid_suffixes)
{
if (**p == '\0')
{
*val = tmp;
return LONGINT_OK;
}
else
return LONGINT_INVALID_SUFFIX_CHAR;
*val = tmp;
return LONGINT_OK;
}
if (**p != '\0' && strchr (valid_suffixes, **p))
if (**p != '\0')
{
if (!strchr (valid_suffixes, **p))
return LONGINT_INVALID_SUFFIX_CHAR;
switch (**p)
{
case 'b':
@@ -143,8 +145,8 @@ __xstrtol (s, ptr, base, val, valid_suffixes)
#ifdef TESTING_XSTRTO
#include <stdio.h>
#include "error.h"
# include <stdio.h>
# include "error.h"
char *program_name;
@@ -172,4 +174,5 @@ main (int argc, char** argv)
}
exit (0);
}
#endif /* TESTING_XSTRTO */

View File

@@ -1,66 +1,69 @@
#ifndef _xstrtol_h_
#define _xstrtol_h_ 1
#ifndef XSTRTOL_H_
# define XSTRTOL_H_ 1
#if STRING_TO_UNSIGNED
# define __xstrtol xstrtoul
# define __strtol strtoul
# define __unsigned unsigned
# define __ZLONG_MAX ULONG_MAX
#else
# define __xstrtol xstrtol
# define __strtol strtol
# define __unsigned /* empty */
# define __ZLONG_MAX LONG_MAX
#endif
# if STRING_TO_UNSIGNED
# define __xstrtol xstrtoul
# define __strtol strtoul
# define __unsigned unsigned
# define __ZLONG_MAX ULONG_MAX
# else
# define __xstrtol xstrtol
# define __strtol strtol
# define __unsigned /* empty */
# define __ZLONG_MAX LONG_MAX
# endif
#undef __P
#if defined (__STDC__) && __STDC__
#define __P(x) x
#else
#define __P(x) ()
#endif
# undef PARAMS
# if defined (__STDC__) && __STDC__
# define PARAMS(Args) Args
# else
# define PARAMS(Args) ()
# endif
#ifndef _STRTOL_ERROR
enum strtol_error
{
LONGINT_OK, LONGINT_INVALID, LONGINT_INVALID_SUFFIX_CHAR, LONGINT_OVERFLOW
};
typedef enum strtol_error strtol_error;
#endif
strtol_error
__xstrtol __P ((const char *s, char **ptr, int base,
__unsigned long int *val, const char *valid_suffixes));
__xstrtol PARAMS ((const char *s, char **ptr, int base,
__unsigned long int *val, const char *valid_suffixes));
#define _STRTOL_ERROR(exit_code, str, argument_type_string, err) \
#undef _STRTOL_ERROR
# define _STRTOL_ERROR(Exit_code, Str, Argument_type_string, Err) \
do \
{ \
switch ((err)) \
switch ((Err)) \
{ \
case LONGINT_OK: \
abort (); \
\
case LONGINT_INVALID: \
error ((exit_code), 0, "invalid %s `%s'", \
(argument_type_string), (str)); \
error ((Exit_code), 0, "invalid %s `%s'", \
(Argument_type_string), (Str)); \
break; \
\
case LONGINT_INVALID_SUFFIX_CHAR: \
error ((exit_code), 0, "invalid character following %s `%s'", \
(argument_type_string), (str)); \
error ((Exit_code), 0, "invalid character following %s `%s'", \
(Argument_type_string), (Str)); \
break; \
\
case LONGINT_OVERFLOW: \
/* FIXME: make this message dependent on STRING_TO_UNSIGNED */\
error ((exit_code), 0, "%s `%s' larger than maximum long int",\
(argument_type_string), (str)); \
error ((Exit_code), 0, "%s `%s' larger than maximum long int",\
(Argument_type_string), (Str)); \
break; \
} \
} \
while (0)
#define STRTOL_FATAL_ERROR(str, argument_type_string, err) \
_STRTOL_ERROR (2, str, argument_type_string, err)
# define STRTOL_FATAL_ERROR(Str, Argument_type_string, Err) \
_STRTOL_ERROR (2, Str, Argument_type_string, Err)
#define STRTOL_FAIL_WARN(str, argument_type_string, err) \
_STRTOL_ERROR (0, str, argument_type_string, err)
# define STRTOL_FAIL_WARN(Str, Argument_type_string, Err) \
_STRTOL_ERROR (0, Str, Argument_type_string, Err)
#endif /* _xstrtol_h_ */
#endif /* not XSTRTOL_H_ */

View File

@@ -1,7 +1,13 @@
#ifndef _xstrtoul_h_
# define _xstrtoul_h_ 1
#ifndef XSTRTOUL_H_
# define XSTRTOUL_H_ 1
# define STRING_TO_UNSIGNED 1
/* Undefine this symbol so we can include xstrtol.h a second time.
Otherwise, a program that wanted both xstrtol.h and xstrtoul.h
would never get the declaration corresponding to the header file
included after the first one. */
# undef XSTRTOL_H_
# include "xstrtol.h"
#endif /* _xstrtoul_h_ */
#endif /* not XSTRTOUL_H_ */

101
lib/ylwrap Executable file
View File

@@ -0,0 +1,101 @@
#! /bin/sh
# ylwrap - wrapper for lex/yacc invocations.
# Copyright (C) 1996, 1997 Free Software Foundation, Inc.
# Written by Tom Tromey <tromey@cygnus.com>.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# Usage:
# ylwrap PROGRAM INPUT [OUTPUT DESIRED]... -- [ARGS]...
# * PROGRAM is program to run.
# * INPUT is the input file
# * OUTPUT is file PROG generates
# * DESIRED is file we actually want
# * ARGS are passed to PROG
# Any number of OUTPUT,DESIRED pairs may be used.
# The program to run.
prog="$1"
shift
# The input.
input="$1"
shift
case "$input" in
/*)
# Absolute path; do nothing.
;;
*)
# Relative path. Make it absolute. Why? Because otherwise any
# debugging info in the generated file will point to the wrong
# place. This is really gross.
input="`pwd`/$input"
;;
esac
pairlist=
while test "$#" -ne 0; do
if test "$1" = "--"; then
break
fi
pairlist="$pairlist $1"
shift
done
# FIXME: add hostname here for parallel makes that run commands on
# other machines. But that might take us over the 14-char limit.
dirname=ylwrap$$
trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
mkdir $dirname || exit 1
cd $dirname
$prog ${1+"$@"} "$input"
status=$?
if test $status -eq 0; then
set X $pairlist
shift
first=yes
while test "$#" -ne 0; do
if test -f "$1"; then
# If $2 is an absolute path name, then just use that,
# otherwise prepend `../'.
case "$2" in
/*) target="$2";;
*) target="../$2";;
esac
mv "$1" "$target" || status=$?
else
# A missing file is only an error for the first file. This
# is a blatant hack to let us support using "yacc -d". If -d
# is not specified, we don't want an error when the header
# file is "missing".
if test $first = yes; then
status=1
fi
fi
shift
shift
first=no
done
else
status=$?
fi
# Remove the directory.
cd ..
rm -rf $dirname
exit $status

1
m4/.cvsignore Normal file
View File

@@ -0,0 +1 @@
Makefile

8
m4/Makefile.am Normal file
View File

@@ -0,0 +1,8 @@
## Process this file with automake to produce Makefile.in
# Generate this list with
# find . -type f -name '*.m4' -printf '%f\n'|sort |fmt |tr '\012' @ \
# |sed 's/@$/%/;s/@/ \\@/g' |tr @% '\012\012'
EXTRA_DIST = README \
chown.m4 getgroups.m4 getline.m4 getloadavg.m4 jm-mktime.m4 jm-winsz1.m4 \
jm-winsz2.m4 memcmp.m4 putenv.m4 strftime.m4 uptime.m4

196
m4/Makefile.in Normal file
View File

@@ -0,0 +1,196 @@
# Makefile.in generated automatically by automake 1.2 from Makefile.am
# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy, distribute and modify it.
# Generate this list with
# find . -type f -name '*.m4' -printf '%f\n'|sort |fmt |tr '\012' @ \
# |sed 's/@$/%/;s/@/ \\@/g' |tr @% '\012\012'
SHELL = /bin/sh
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
prefix = @prefix@
exec_prefix = @exec_prefix@
bindir = @bindir@
sbindir = @sbindir@
libexecdir = @libexecdir@
datadir = @datadir@
sysconfdir = @sysconfdir@
sharedstatedir = @sharedstatedir@
localstatedir = @localstatedir@
libdir = @libdir@
infodir = @infodir@
mandir = @mandir@
includedir = @includedir@
oldincludedir = /usr/include
pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
ACLOCAL = @ACLOCAL@
AUTOCONF = @AUTOCONF@
AUTOMAKE = @AUTOMAKE@
AUTOHEADER = @AUTOHEADER@
INSTALL = @INSTALL@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
transform = @program_transform_name@
NORMAL_INSTALL = true
PRE_INSTALL = true
POST_INSTALL = true
NORMAL_UNINSTALL = true
PRE_UNINSTALL = true
POST_UNINSTALL = true
CATALOGS = @CATALOGS@
CATOBJEXT = @CATOBJEXT@
CC = @CC@
CPP = @CPP@
DATADIRNAME = @DATADIRNAME@
GENCAT = @GENCAT@
GETLOADAVG_LIBS = @GETLOADAVG_LIBS@
GMOFILES = @GMOFILES@
GMSGFMT = @GMSGFMT@
GNU_PACKAGE = @GNU_PACKAGE@
GT_NO = @GT_NO@
GT_YES = @GT_YES@
INSTOBJEXT = @INSTOBJEXT@
INTLDEPS = @INTLDEPS@
INTLLIBS = @INTLLIBS@
INTLOBJS = @INTLOBJS@
KMEM_GROUP = @KMEM_GROUP@
LIBOBJS = @LIBOBJS@
LIB_CRYPT = @LIB_CRYPT@
MAINT = @MAINT@
MAKEINFO = @MAKEINFO@
MAN = @MAN@
MKINSTALLDIRS = @MKINSTALLDIRS@
MSGFMT = @MSGFMT@
NEED_SETGID = @NEED_SETGID@
OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@
OPTIONAL_BIN_ZCRIPTS = @OPTIONAL_BIN_ZCRIPTS@
PACKAGE = @PACKAGE@
PERL = @PERL@
POFILES = @POFILES@
POSUB = @POSUB@
POW_LIBM = @POW_LIBM@
RANLIB = @RANLIB@
SEQ_LIBM = @SEQ_LIBM@
SQRT_LIBM = @SQRT_LIBM@
U = @U@
USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
USE_NLS = @USE_NLS@
VERSION = @VERSION@
YACC = @YACC@
l = @l@
EXTRA_DIST = README \
chown.m4 getgroups.m4 getline.m4 getloadavg.m4 jm-mktime.m4 jm-winsz1.m4 \
jm-winsz2.m4 memcmp.m4 putenv.m4 strftime.m4 uptime.m4
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = ../config.h
CONFIG_CLEAN_FILES =
DIST_COMMON = README Makefile.am Makefile.in
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
TAR = tar
GZIP = --best
default: all
.SUFFIXES:
$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
cd $(top_srcdir) && $(AUTOMAKE) --gnits m4/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
cd $(top_builddir) \
&& CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
tags: TAGS
TAGS:
distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir)
subdir = m4
distdir: $(DISTFILES)
here=`cd $(top_builddir) && pwd`; \
top_distdir=`cd $(top_distdir) && pwd`; \
cd $(top_srcdir) \
&& $(AUTOMAKE) --include-deps --build-dir=$$here --srcdir-name=$(top_srcdir) --output-dir=$$top_distdir --gnits m4/Makefile
@for file in $(DISTFILES); do \
d=$(srcdir); \
test -f $(distdir)/$$file \
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|| cp -p $$d/$$file $(distdir)/$$file; \
done
info:
dvi:
check: all
$(MAKE)
installcheck:
install-exec:
@$(NORMAL_INSTALL)
install-data:
@$(NORMAL_INSTALL)
install: install-exec install-data all
@:
uninstall:
all: Makefile
install-strip:
$(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install
installdirs:
mostlyclean-generic:
test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES)
clean-generic:
test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
rm -f Makefile $(DISTCLEANFILES)
rm -f config.cache config.log stamp-h stamp-h[0-9]*
test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
mostlyclean: mostlyclean-generic
clean: clean-generic mostlyclean
distclean: distclean-generic clean
rm -f config.status
maintainer-clean: maintainer-clean-generic distclean
@echo "This command is intended for maintainers to use;"
@echo "it deletes files that may require special tools to rebuild."
.PHONY: default tags distdir info dvi installcheck install-exec \
install-data install uninstall all installdirs mostlyclean-generic \
distclean-generic clean-generic maintainer-clean-generic clean \
mostlyclean distclean maintainer-clean
# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

9
m4/README Normal file
View File

@@ -0,0 +1,9 @@
These files are used by a program called aclocal (part of the GNU automake
package). aclocal uses these files to create aclocal.m4 which is in turn
used by autoconf to create the configure script at the the top level in
this distribution.
Some of these files are copies of the ones in the automake-1.1l
distribution. Others are specific to this package.
Eventually, I expect that aclocal will evolve so that this directory
can contain only the .m4 files specific to this package.

40
m4/chown.m4 Normal file
View File

@@ -0,0 +1,40 @@
#serial 1
dnl From Jim Meyering.
dnl If you use this macro in a package, you should
dnl add the following two lines to acconfig.h:
dnl /* Define to rpl_chown if the replacement function should be used. */
dnl #undef chown
dnl
AC_DEFUN(jm_FUNC_CHOWN,
[AC_REQUIRE([AC_TYPE_UID_T])dnl
test -z "$ac_cv_header_unistd_h" \
&& AC_CHECK_HEADERS(unistd.h)
AC_CACHE_CHECK([for working chown], jm_cv_func_working_chown,
[AC_TRY_RUN([
# include <sys/types.h>
# include <fcntl.h>
# ifdef HAVE_UNISTD_H
# include <unistd.h>
# endif
int
main ()
{
char *f = "conftestchown";
if (creat (f, 0600) < 0)
exit (1);
exit (chown (f, (gid_t) -1, (uid_t) -1) == -1 ? 1 : 0);
}
],
jm_cv_func_working_chown=yes,
jm_cv_func_working_chown=no,
dnl When crosscompiling, assume chown is broken.
jm_cv_func_working_chown=no)
])
if test $jm_cv_func_working_chown = no; then
LIBOBJS="$LIBOBJS chown.o"
AC_DEFINE_UNQUOTED(chown, rpl_chown)
fi
])

49
m4/getgroups.m4 Normal file
View File

@@ -0,0 +1,49 @@
#serial 2
dnl From Jim Meyering.
dnl If you use this macro in a package, you should
dnl add the following two lines to acconfig.h:
dnl /* Define to rpl_getgroups if the replacement function should be used. */
dnl #undef getgroups
dnl
dnl Invoking code should check $GETGROUPS_LIB something like this:
dnl jm_FUNC_GETGROUPS
dnl test -n "$GETGROUPS_LIB" && LIBS="$GETGROUPS_LIB $LIBS"
dnl
AC_DEFUN(jm_FUNC_GETGROUPS,
[AC_REQUIRE([AC_TYPE_GETGROUPS])dnl
AC_REQUIRE([AC_TYPE_SIZE_T])dnl
AC_CHECK_FUNCS(getgroups)
# If we don't yet have getgroups, see if it's in -lbsd.
# This is reported to be necessary on an ITOS 3000WS running SEIUX 3.1.
if test $ac_cv_func_getgroups = no; then
jm_cv_sys_getgroups_saved_lib="$LIBS"
AC_CHECK_LIB(bsd, getgroups, [GETGROUPS_LIB=-lbsd])
LIBS="$jm_cv_sys_getgroups_saved_lib"
fi
# Run the program to test the functionality of the system-supplied
# getgroups function only if there is such a function.
if test $ac_cv_func_getgroups = yes; then
AC_CACHE_CHECK([for working getgroups], jm_cv_func_working_getgroups,
[AC_TRY_RUN([
int
main ()
{
/* On Ultrix 4.3, getgroups (0, 0) always fails. */
exit (getgroups (0, 0) == -1 ? 1 : 0);
}
],
jm_cv_func_working_getgroups=yes,
jm_cv_func_working_getgroups=no,
dnl When crosscompiling, assume getgroups is broken.
jm_cv_func_working_getgroups=no)
])
if test $jm_cv_func_working_getgroups = no; then
LIBOBJS="$LIBOBJS getgroups.o"
AC_DEFINE_UNQUOTED(getgroups, rpl_getgroups)
fi
fi
])

45
m4/getline.m4 Normal file
View File

@@ -0,0 +1,45 @@
#serial 1
dnl See if there's a working, system-supplied version of the getline function.
dnl We can't just to AC_REPLACE_FUNCS(getline) because some systems
dnl have a function by that name in -linet that doesn't have anything
dnl to do with the function we need.
AC_DEFUN(AM_FUNC_GETLINE,
[dnl
am_getline_needs_run_time_check=no
am_cv_func_working_getline=yes
AC_CHECK_FUNC(getline,
dnl Found it in some library. Verify that it works.
am_getline_needs_run_time_check=yes,
am_cv_func_working_getline=no)
if test $am_getline_needs_run_time_check = yes; then
AC_CACHE_CHECK([for working getline function], am_cv_func_working_getline,
[echo fooN |tr -d '\012'|tr N '\012' > conftestdata
AC_TRY_RUN([
# include <stdio.h>
# include <sys/types.h>
# if HAVE_STRING_H
# include <string.h>
# endif
int main ()
{ /* Based on a test program from Karl Heuer. */
char *line = NULL;
size_t siz = 0;
int len;
FILE *in = fopen ("./conftestdata", "r");
if (!in)
return 1;
len = getline (&line, &siz, in);
exit ((len == 4 && line && strcmp (line, "foo\n") == 0) ? 0 : 1);
}
], am_cv_func_working_getline=yes dnl The library version works.
, am_cv_func_working_getline=no dnl The library version does NOT work.
, am_cv_func_working_getline=no dnl We're cross compiling.
)])
fi
if test $am_cv_func_working_getline = no; then
LIBOBJS="$LIBOBJS getline.o"
AC_SUBST(LIBOBJS)dnl
fi
])

127
m4/getloadavg.m4 Normal file
View File

@@ -0,0 +1,127 @@
#serial 3
AC_DEFUN(AM_FUNC_GETLOADAVG,
[ac_have_func=no # yes means we've found a way to get the load average.
am_cv_saved_LIBS="$LIBS"
# On HPUX9, an unprivileged user can get load averages through this function.
AC_CHECK_FUNCS(pstat_getdynamic)
# Solaris has libkstat which does not require root.
AC_CHECK_LIB(kstat, kstat_open)
if test $ac_cv_lib_kstat_kstat_open = yes ; then ac_have_func=yes ; fi
# Some systems with -lutil have (and need) -lkvm as well, some do not.
# On Solaris, -lkvm requires nlist from -lelf, so check that first
# to get the right answer into the cache.
# For kstat on solaris, we need libelf to force the definition of SVR4 below.
AC_CHECK_LIB(elf, elf_begin, LIBS="-lelf $LIBS")
if test $ac_have_func = no; then
AC_CHECK_LIB(kvm, kvm_open, LIBS="-lkvm $LIBS")
# Check for the 4.4BSD definition of getloadavg.
AC_CHECK_LIB(util, getloadavg,
[LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes])
fi
if test $ac_have_func = no; then
# There is a commonly available library for RS/6000 AIX.
# Since it is not a standard part of AIX, it might be installed locally.
ac_save_LIBS="$LIBS"
LIBS="-L/usr/local/lib $LIBS"
AC_CHECK_LIB(getloadavg, getloadavg,
LIBS="-lgetloadavg $LIBS", LIBS="$ac_save_LIBS")
fi
# Make sure it is really in the library, if we think we found it.
AC_REPLACE_FUNCS(getloadavg)
if test $ac_cv_func_getloadavg = yes; then
AC_DEFINE(HAVE_GETLOADAVG)
ac_have_func=yes
else
AC_DEFINE(C_GETLOADAVG)
# Figure out what our getloadavg.c needs.
ac_have_func=no
AC_CHECK_HEADER(sys/dg_sys_info.h,
[ac_have_func=yes; AC_DEFINE(DGUX)
AC_CHECK_LIB(dgc, dg_sys_info)])
# We cannot check for <dwarf.h>, because Solaris 2 does not use dwarf (it
# uses stabs), but it is still SVR4. We cannot check for <elf.h> because
# Irix 4.0.5F has the header but not the library.
if test $ac_have_func = no && test $ac_cv_lib_elf_elf_begin = yes; then
ac_have_func=yes; AC_DEFINE(SVR4)
fi
if test $ac_have_func = no; then
AC_CHECK_HEADER(inq_stats/cpustats.h,
[ac_have_func=yes; AC_DEFINE(UMAX)
AC_DEFINE(UMAX4_3)])
fi
if test $ac_have_func = no; then
AC_CHECK_HEADER(sys/cpustats.h,
[ac_have_func=yes; AC_DEFINE(UMAX)])
fi
if test $ac_have_func = no; then
AC_CHECK_HEADERS(mach/mach.h)
fi
AC_CHECK_HEADER(nlist.h,
[AC_DEFINE(NLIST_STRUCT)
AC_CACHE_CHECK([for n_un in struct nlist], ac_cv_struct_nlist_n_un,
[AC_TRY_COMPILE([#include <nlist.h>],
[struct nlist n; n.n_un.n_name = 0;],
ac_cv_struct_nlist_n_un=yes, ac_cv_struct_nlist_n_un=no)])
if test $ac_cv_struct_nlist_n_un = yes; then
AC_DEFINE(NLIST_NAME_UNION)
fi
])dnl
fi # Do not have getloadavg in system libraries.
# Some definitions of getloadavg require that the program be installed setgid.
dnl FIXME Don't hardwire the path of getloadavg.c in the top-level directory.
AC_CACHE_CHECK(whether getloadavg requires setgid,
ac_cv_func_getloadavg_setgid,
[AC_EGREP_CPP([Yowza Am I SETGID yet],
[#include "$srcdir/lib/getloadavg.c"
#ifdef LDAV_PRIVILEGED
Yowza Am I SETGID yet
#endif],
ac_cv_func_getloadavg_setgid=yes, ac_cv_func_getloadavg_setgid=no)])
if test $ac_cv_func_getloadavg_setgid = yes; then
NEED_SETGID=true; AC_DEFINE(GETLOADAVG_PRIVILEGED)
else
NEED_SETGID=false
fi
AC_SUBST(NEED_SETGID)dnl
if test $ac_cv_func_getloadavg_setgid = yes; then
AC_CACHE_CHECK(group of /dev/kmem, ac_cv_group_kmem,
changequote(<<, >>)dnl
<<
# On Solaris, /dev/kmem is a symlink. Get info on the real file.
ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null`
# If we got an error (system does not support symlinks), try without -L.
test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem`
ac_cv_group_kmem=`echo $ac_ls_output \
| sed -ne 's/[ ][ ]*/ /g;
s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\) *.*/\1/;
/ /s/.* //;p;'`
>>
changequote([, ])dnl
)
KMEM_GROUP=$ac_cv_group_kmem
fi
AC_SUBST(KMEM_GROUP)dnl
if test x = "x$am_cv_saved_LIBS"; then
GETLOADAVG_LIBS="$LIBS"
else
GETLOADAVG_LIBS=`echo "$LIBS"|sed "s!$am_cv_saved_LIBS!!"`
fi
AC_SUBST(GETLOADAVG_LIBS)dnl
LIBS="$am_cv_saved_LIBS"
])

14
m4/jm-mktime.m4 Normal file
View File

@@ -0,0 +1,14 @@
#serial 1
dnl From Jim Meyering.
dnl If you use this macro in a package, you should
dnl add the following two lines to acconfig.h:
dnl /* Define to rpl_mktime if the replacement function should be used. */
dnl #undef mktime
dnl
AC_DEFUN(jm_FUNC_MKTIME,
[AC_REQUIRE([AM_FUNC_MKTIME])dnl
if test $am_cv_func_working_mktime = no; then
AC_DEFINE_UNQUOTED(mktime, rpl_mktime)
fi
])

19
m4/jm-winsz1.m4 Normal file
View File

@@ -0,0 +1,19 @@
dnl From Jim Meyering.
#serial 1
AC_DEFUN(jm_HEADER_TIOCGWINSZ_IN_TERMIOS_H,
[AC_REQUIRE([AM_SYS_POSIX_TERMIOS])
AC_CACHE_CHECK([whether use of TIOCGWINSZ requires termios.h],
jm_cv_sys_tiocgwinsz_needs_termios_h,
[jm_cv_sys_tiocgwinsz_needs_termios_h=no
if test $am_cv_sys_posix_termios = yes; then
AC_EGREP_CPP([yes],
[#include <sys/types.h>
# include <termios.h>
# ifdef TIOCGWINSZ
yes
# endif
], jm_cv_sys_tiocgwinsz_needs_termios_h=yes)
fi
])
])

22
m4/jm-winsz2.m4 Normal file
View File

@@ -0,0 +1,22 @@
#serial 2
AC_DEFUN(jm_HEADER_TIOCGWINSZ_NEEDS_SYS_IOCTL,
[AC_REQUIRE([jm_HEADER_TIOCGWINSZ_IN_TERMIOS_H])
AC_CACHE_CHECK([whether use of TIOCGWINSZ requires sys/ioctl.h],
jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h,
[jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h=no
if test $jm_cv_sys_tiocgwinsz_needs_termios_h = no; then
AC_EGREP_CPP([yes],
[#include <sys/types.h>
# include <sys/ioctl.h>
# ifdef TIOCGWINSZ
yes
# endif
], jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h=yes)
fi
])
if test $jm_cv_sys_tiocgwinsz_needs_sys_ioctl_h = yes; then
AC_DEFINE(GWINSZ_IN_SYS_IOCTL)
fi
])

13
m4/memcmp.m4 Normal file
View File

@@ -0,0 +1,13 @@
#serial 1
dnl If you use this macro in a package, you should
dnl add the following two lines to acconfig.h:
dnl /* Define to rpl_memcmp if the replacement function should be used. */
dnl #undef memcmp
dnl
AC_DEFUN(jm_FUNC_MEMCMP,
[AC_REQUIRE([AC_FUNC_MEMCMP])dnl
if test $ac_cv_func_memcmp_clean = no; then
AC_DEFINE_UNQUOTED(memcmp, rpl_memcmp)
fi
])

Some files were not shown because too many files have changed in this diff Show More