Login
[x]
Log in using an account from:
Fedora Account System
Red Hat Associate
Red Hat Customer
Or login using a Red Hat Bugzilla account
Forgot Password
Login:
Hide Forgot
Create an Account
Red Hat Bugzilla – Attachment 315714 Details for
Bug 461084
2006 DAYLIGHT SAVINGS TIME LOSES 1 HOUR ON RHEL4
[?]
New
Simple Search
Advanced Search
My Links
Browse
Requests
Reports
Current State
Search
Tabular reports
Graphical reports
Duplicates
Other Reports
User Changes
Plotly Reports
Bug Status
Bug Severity
Non-Defaults
|
Product Dashboard
Help
Page Help!
Bug Writing Guidelines
What's new
Browser Support Policy
5.0.4.rh83 Release notes
FAQ
Guides index
User guide
Web Services
Contact
Legal
This site requires JavaScript to be enabled to function correctly, please enable it.
[patch]
made a patch for this bug
coreutils-5.2.1-date.patch (text/plain), 116.21 KB, created by
xiaowei.hu
on 2008-09-04 02:42:52 UTC
(
hide
)
Description:
made a patch for this bug
Filename:
MIME Type:
Creator:
xiaowei.hu
Created:
2008-09-04 02:42:52 UTC
Size:
116.21 KB
patch
obsolete
>diff -uNr coreutils-5.2.1.org/lib/getdate.h coreutils-5.2.1/lib/getdate.h >--- coreutils-5.2.1.org/lib/getdate.h 2008-07-10 15:11:45.000000000 +0800 >+++ coreutils-5.2.1/lib/getdate.h 2008-07-10 15:13:39.000000000 +0800 >@@ -1,6 +1,6 @@ > /* Parse a string into an internal time stamp. > >- Copyright (C) 1995, 1997, 1998, 2003 Free Software Foundation, Inc. >+ Copyright (C) 1995, 1997, 1998, 2003, 2004 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 >@@ -20,21 +20,7 @@ > # include <config.h> > #endif > >-#ifdef vms >-# include <types.h> >-# include <time.h> >-#else >-# include <sys/types.h> >-# if TIME_WITH_SYS_TIME >-# include <sys/time.h> >-# include <time.h> >-# else >-# if HAVE_SYS_TIME_H >-# include <sys/time.h> >-# else >-# include <time.h> >-# endif >-# endif >-#endif /* defined (vms) */ >+#include <stdbool.h> >+#include "timespec.h" > >-time_t get_date (const char *p, const time_t *now); >+bool get_date (struct timespec *, char const *, struct timespec const *); >diff -uNr coreutils-5.2.1.org/lib/getdate.y coreutils-5.2.1/lib/getdate.y >--- coreutils-5.2.1.org/lib/getdate.y 2008-07-10 15:11:45.000000000 +0800 >+++ coreutils-5.2.1/lib/getdate.y 2008-07-10 15:15:32.000000000 +0800 >@@ -1,6 +1,6 @@ > %{ > /* Parse a string into an internal time stamp. >- Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc. >+ Copyright (C) 1999, 2000, 2002, 2003, 2004 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 >@@ -22,13 +22,20 @@ > <rsalz@bbn.com> and Jim Berets <jberets@bbn.com> in August, 1990. > > Modified by Paul Eggert <eggert@twinsun.com> in August 1999 to do >- the right thing about local DST. Unlike previous versions, this >- version is reentrant. */ >+ the right thing about local DST. Also modified by Paul Eggert >+ <eggert@cs.ucla.edu> in February 2004 to support >+ nanosecond-resolution time stamps, and in October 2004 to support >+ TZ strings in dates. */ >+ >+/* FIXME: Check for arithmetic overflow in all cases, not just >+ some of them. */ > > #ifdef HAVE_CONFIG_H > # include <config.h> > #endif > >+#include "getdate.h" >+ > #include <alloca.h> > > /* Since the code of getdate.y is not included in the Emacs executable >@@ -42,8 +49,12 @@ > #endif > > #include <ctype.h> >+#include <limits.h> >+#include <stdlib.h> >+#include <string.h> > >-#include <stdlib.h> /* for `free'; used by Bison 1.27 */ >+#include "setenv.h" >+#include "xalloc.h" > > #if STDC_HEADERS || (! defined isascii && ! HAVE_ISASCII) > # define IN_CTYPE_DOMAIN(c) 1 >@@ -54,18 +65,15 @@ > #define ISSPACE(c) (IN_CTYPE_DOMAIN (c) && isspace (c)) > #define ISALPHA(c) (IN_CTYPE_DOMAIN (c) && isalpha (c)) > #define ISLOWER(c) (IN_CTYPE_DOMAIN (c) && islower (c)) >-#define ISDIGIT_LOCALE(c) (IN_CTYPE_DOMAIN (c) && isdigit (c)) > >-/* ISDIGIT differs from ISDIGIT_LOCALE, as follows: >+/* 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 says that only '0' through '9' are digits. Prefer ISDIGIT to >- ISDIGIT_LOCALE unless it's important to use the locale's definition >+ 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) >- >-#include <string.h> >+#define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) > > #if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__ > # define __attribute__(x) >@@ -84,8 +92,8 @@ > representation. */ > typedef struct > { >- int value; >- int digits; >+ long int value; >+ size_t digits; > } textint; > > /* An entry in the lexical lookup table. */ >@@ -99,6 +107,8 @@ > /* Meridian: am, pm, or 24-hour style. */ > enum { MERam, MERpm, MER24 }; > >+enum { BILLION = 1000000000, LOG10_BILLION = 9 }; >+ > /* Information passed to and from the parser. */ > typedef struct > { >@@ -106,7 +116,7 @@ > const char *input; > > /* N, if this is the Nth Tuesday. */ >- int day_ordinal; >+ long int day_ordinal; > > /* Day of week; Sunday is 0. */ > int day_number; >@@ -115,58 +125,61 @@ > int local_isdst; > > /* Time zone, in minutes east of UTC. */ >- int time_zone; >+ long int time_zone; > > /* Style used for time. */ > int meridian; > >- /* Gregorian year, month, day, hour, minutes, and seconds. */ >+ /* Gregorian year, month, day, hour, minutes, seconds, and nanoseconds. */ > textint year; >- int month; >- int day; >- int hour; >- int minutes; >- int seconds; >- >- /* Relative year, month, day, hour, minutes, and seconds. */ >- int rel_year; >- int rel_month; >- int rel_day; >- int rel_hour; >- int rel_minutes; >- int rel_seconds; >+ long int month; >+ long int day; >+ long int hour; >+ long int minutes; >+ struct timespec seconds; /* includes nanoseconds */ >+ >+ /* Relative year, month, day, hour, minutes, seconds, and nanoseconds. */ >+ long int rel_year; >+ long int rel_month; >+ long int rel_day; >+ long int rel_hour; >+ long int rel_minutes; >+ long int rel_seconds; >+ long int rel_ns; > > /* Counts of nonterminals of various flavors parsed so far. */ >- int dates_seen; >- int days_seen; >- int local_zones_seen; >- int rels_seen; >- int times_seen; >- int zones_seen; >+ bool timespec_seen; >+ size_t dates_seen; >+ size_t days_seen; >+ size_t local_zones_seen; >+ size_t rels_seen; >+ size_t times_seen; >+ size_t zones_seen; > > /* Table of local time zone abbrevations, terminated by a null entry. */ > table local_time_zone_table[3]; > } parser_control; > >-#define PC (* (parser_control *) parm) >-#define YYLEX_PARAM parm >-#define YYPARSE_PARAM parm >- >-static int yyerror (); >-static int yylex (); >+union YYSTYPE; >+static int yylex (union YYSTYPE *, parser_control *); >+static int yyerror (parser_control *, char *); > > %} > >-/* We want a reentrant parser. */ >-%pure_parser >+/* We want a reentrant parser, even if the TZ manipulation and the calls to >+ localtime and gmtime are not reentrant. */ >+%pure-parser >+%parse-param { parser_control *pc } >+%lex-param { parser_control *pc } > > /* This grammar has 13 shift/reduce conflicts. */ > %expect 13 > > %union > { >- int intval; >+ long int intval; > textint textintval; >+ struct timespec timespec; > } > > %token tAGO tDST >@@ -175,113 +188,131 @@ > %token <intval> tMINUTE_UNIT tMONTH tMONTH_UNIT tSEC_UNIT tYEAR_UNIT tZONE > > %token <textintval> tSNUMBER tUNUMBER >+%token <timespec> tSDECIMAL_NUMBER tUDECIMAL_NUMBER > > %type <intval> o_merid >+%type <timespec> seconds signed_seconds unsigned_seconds > > %% > > spec: >+ timespec >+ | items >+ ; >+ >+timespec: >+ '@' seconds >+ { >+ pc->seconds = $2; >+ pc->timespec_seen = true; >+ } >+ ; >+ >+items: > /* empty */ >- | spec item >+ | items item > ; > > item: > time >- { PC.times_seen++; } >+ { pc->times_seen++; } > | local_zone >- { PC.local_zones_seen++; } >+ { pc->local_zones_seen++; } > | zone >- { PC.zones_seen++; } >+ { pc->zones_seen++; } > | date >- { PC.dates_seen++; } >+ { pc->dates_seen++; } > | day >- { PC.days_seen++; } >+ { pc->days_seen++; } > | rel >- { PC.rels_seen++; } >+ { pc->rels_seen++; } > | number > ; > > time: > tUNUMBER tMERIDIAN > { >- PC.hour = $1.value; >- PC.minutes = 0; >- PC.seconds = 0; >- PC.meridian = $2; >+ pc->hour = $1.value; >+ pc->minutes = 0; >+ pc->seconds.tv_sec = 0; >+ pc->seconds.tv_nsec = 0; >+ pc->meridian = $2; > } > | tUNUMBER ':' tUNUMBER o_merid > { >- PC.hour = $1.value; >- PC.minutes = $3.value; >- PC.seconds = 0; >- PC.meridian = $4; >+ pc->hour = $1.value; >+ pc->minutes = $3.value; >+ pc->seconds.tv_sec = 0; >+ pc->seconds.tv_nsec = 0; >+ pc->meridian = $4; > } > | tUNUMBER ':' tUNUMBER tSNUMBER > { >- PC.hour = $1.value; >- PC.minutes = $3.value; >- PC.seconds = 0; >- PC.meridian = MER24; >- PC.zones_seen++; >- PC.time_zone = $4.value % 100 + ($4.value / 100) * 60; >- } >- | tUNUMBER ':' tUNUMBER ':' tUNUMBER o_merid >- { >- PC.hour = $1.value; >- PC.minutes = $3.value; >- PC.seconds = $5.value; >- PC.meridian = $6; >- } >- | tUNUMBER ':' tUNUMBER ':' tUNUMBER tSNUMBER >- { >- PC.hour = $1.value; >- PC.minutes = $3.value; >- PC.seconds = $5.value; >- PC.meridian = MER24; >- PC.zones_seen++; >- PC.time_zone = $6.value % 100 + ($6.value / 100) * 60; >+ pc->hour = $1.value; >+ pc->minutes = $3.value; >+ pc->seconds.tv_sec = 0; >+ pc->seconds.tv_nsec = 0; >+ pc->meridian = MER24; >+ pc->zones_seen++; >+ pc->time_zone = $4.value % 100 + ($4.value / 100) * 60; >+ } >+ | tUNUMBER ':' tUNUMBER ':' unsigned_seconds o_merid >+ { >+ pc->hour = $1.value; >+ pc->minutes = $3.value; >+ pc->seconds = $5; >+ pc->meridian = $6; >+ } >+ | tUNUMBER ':' tUNUMBER ':' unsigned_seconds tSNUMBER >+ { >+ pc->hour = $1.value; >+ pc->minutes = $3.value; >+ pc->seconds = $5; >+ pc->meridian = MER24; >+ pc->zones_seen++; >+ pc->time_zone = $6.value % 100 + ($6.value / 100) * 60; > } > ; > > local_zone: > tLOCAL_ZONE >- { PC.local_isdst = $1; } >+ { pc->local_isdst = $1; } > | tLOCAL_ZONE tDST >- { PC.local_isdst = $1 < 0 ? 1 : $1 + 1; } >+ { pc->local_isdst = $1 < 0 ? 1 : $1 + 1; } > ; > > zone: > tZONE >- { PC.time_zone = $1; } >+ { pc->time_zone = $1; } > | tDAYZONE >- { PC.time_zone = $1 + 60; } >+ { pc->time_zone = $1 + 60; } > | tZONE tDST >- { PC.time_zone = $1 + 60; } >+ { pc->time_zone = $1 + 60; } > ; > > day: > tDAY > { >- PC.day_ordinal = 1; >- PC.day_number = $1; >+ pc->day_ordinal = 1; >+ pc->day_number = $1; > } > | tDAY ',' > { >- PC.day_ordinal = 1; >- PC.day_number = $1; >+ pc->day_ordinal = 1; >+ pc->day_number = $1; > } > | tUNUMBER tDAY > { >- PC.day_ordinal = $1.value; >- PC.day_number = $2; >+ pc->day_ordinal = $1.value; >+ pc->day_number = $2; > } > ; > > date: > tUNUMBER '/' tUNUMBER > { >- PC.month = $1.value; >- PC.day = $3.value; >+ pc->month = $1.value; >+ pc->day = $3.value; > } > | tUNUMBER '/' tUNUMBER '/' tUNUMBER > { >@@ -292,147 +323,167 @@ > you want portability, use the ISO 8601 format. */ > if (4 <= $1.digits) > { >- PC.year = $1; >- PC.month = $3.value; >- PC.day = $5.value; >+ pc->year = $1; >+ pc->month = $3.value; >+ pc->day = $5.value; > } > else > { >- PC.month = $1.value; >- PC.day = $3.value; >- PC.year = $5; >+ pc->month = $1.value; >+ pc->day = $3.value; >+ pc->year = $5; > } > } > | tUNUMBER tSNUMBER tSNUMBER > { > /* ISO 8601 format. YYYY-MM-DD. */ >- PC.year = $1; >- PC.month = -$2.value; >- PC.day = -$3.value; >+ pc->year = $1; >+ pc->month = -$2.value; >+ pc->day = -$3.value; > } > | tUNUMBER tMONTH tSNUMBER > { > /* e.g. 17-JUN-1992. */ >- PC.day = $1.value; >- PC.month = $2; >- PC.year.value = -$3.value; >- PC.year.digits = $3.digits; >+ pc->day = $1.value; >+ pc->month = $2; >+ pc->year.value = -$3.value; >+ pc->year.digits = $3.digits; > } > | tMONTH tSNUMBER tSNUMBER > { > /* e.g. JUN-17-1992. */ >- PC.month = $1; >- PC.day = -$2.value; >- PC.year.value = -$3.value; >- PC.year.digits = $3.digits; >+ pc->month = $1; >+ pc->day = -$2.value; >+ pc->year.value = -$3.value; >+ pc->year.digits = $3.digits; > } > | tMONTH tUNUMBER > { >- PC.month = $1; >- PC.day = $2.value; >+ pc->month = $1; >+ pc->day = $2.value; > } > | tMONTH tUNUMBER ',' tUNUMBER > { >- PC.month = $1; >- PC.day = $2.value; >- PC.year = $4; >+ pc->month = $1; >+ pc->day = $2.value; >+ pc->year = $4; > } > | tUNUMBER tMONTH > { >- PC.day = $1.value; >- PC.month = $2; >+ pc->day = $1.value; >+ pc->month = $2; > } > | tUNUMBER tMONTH tUNUMBER > { >- PC.day = $1.value; >- PC.month = $2; >- PC.year = $3; >+ pc->day = $1.value; >+ pc->month = $2; >+ pc->year = $3; > } > ; > > rel: > relunit tAGO > { >- PC.rel_seconds = -PC.rel_seconds; >- PC.rel_minutes = -PC.rel_minutes; >- PC.rel_hour = -PC.rel_hour; >- PC.rel_day = -PC.rel_day; >- PC.rel_month = -PC.rel_month; >- PC.rel_year = -PC.rel_year; >+ pc->rel_ns = -pc->rel_ns; >+ pc->rel_seconds = -pc->rel_seconds; >+ pc->rel_minutes = -pc->rel_minutes; >+ pc->rel_hour = -pc->rel_hour; >+ pc->rel_day = -pc->rel_day; >+ pc->rel_month = -pc->rel_month; >+ pc->rel_year = -pc->rel_year; > } > | relunit > ; > > relunit: > tUNUMBER tYEAR_UNIT >- { PC.rel_year += $1.value * $2; } >+ { pc->rel_year += $1.value * $2; } > | tSNUMBER tYEAR_UNIT >- { PC.rel_year += $1.value * $2; } >+ { pc->rel_year += $1.value * $2; } > | tYEAR_UNIT >- { PC.rel_year += $1; } >+ { pc->rel_year += $1; } > | tUNUMBER tMONTH_UNIT >- { PC.rel_month += $1.value * $2; } >+ { pc->rel_month += $1.value * $2; } > | tSNUMBER tMONTH_UNIT >- { PC.rel_month += $1.value * $2; } >+ { pc->rel_month += $1.value * $2; } > | tMONTH_UNIT >- { PC.rel_month += $1; } >+ { pc->rel_month += $1; } > | tUNUMBER tDAY_UNIT >- { PC.rel_day += $1.value * $2; } >+ { pc->rel_day += $1.value * $2; } > | tSNUMBER tDAY_UNIT >- { PC.rel_day += $1.value * $2; } >+ { pc->rel_day += $1.value * $2; } > | tDAY_UNIT >- { PC.rel_day += $1; } >+ { pc->rel_day += $1; } > | tUNUMBER tHOUR_UNIT >- { PC.rel_hour += $1.value * $2; } >+ { pc->rel_hour += $1.value * $2; } > | tSNUMBER tHOUR_UNIT >- { PC.rel_hour += $1.value * $2; } >+ { pc->rel_hour += $1.value * $2; } > | tHOUR_UNIT >- { PC.rel_hour += $1; } >+ { pc->rel_hour += $1; } > | tUNUMBER tMINUTE_UNIT >- { PC.rel_minutes += $1.value * $2; } >+ { pc->rel_minutes += $1.value * $2; } > | tSNUMBER tMINUTE_UNIT >- { PC.rel_minutes += $1.value * $2; } >+ { pc->rel_minutes += $1.value * $2; } > | tMINUTE_UNIT >- { PC.rel_minutes += $1; } >+ { pc->rel_minutes += $1; } > | tUNUMBER tSEC_UNIT >- { PC.rel_seconds += $1.value * $2; } >+ { pc->rel_seconds += $1.value * $2; } > | tSNUMBER tSEC_UNIT >- { PC.rel_seconds += $1.value * $2; } >+ { pc->rel_seconds += $1.value * $2; } >+ | tSDECIMAL_NUMBER tSEC_UNIT >+ { pc->rel_seconds += $1.tv_sec * $2; pc->rel_ns += $1.tv_nsec * $2; } >+ | tUDECIMAL_NUMBER tSEC_UNIT >+ { pc->rel_seconds += $1.tv_sec * $2; pc->rel_ns += $1.tv_nsec * $2; } > | tSEC_UNIT >- { PC.rel_seconds += $1; } >+ { pc->rel_seconds += $1; } >+ ; >+ >+seconds: signed_seconds | unsigned_seconds; >+ >+signed_seconds: >+ tSDECIMAL_NUMBER >+ | tSNUMBER >+ { $$.tv_sec = $1.value; $$.tv_nsec = 0; } >+ ; >+ >+unsigned_seconds: >+ tUDECIMAL_NUMBER >+ | tUNUMBER >+ { $$.tv_sec = $1.value; $$.tv_nsec = 0; } > ; > > number: > tUNUMBER > { >- if (PC.dates_seen >- && ! PC.rels_seen && (PC.times_seen || 2 < $1.digits)) >- PC.year = $1; >+ if (pc->dates_seen >+ && ! pc->rels_seen && (pc->times_seen || 2 < $1.digits)) >+ pc->year = $1; > else > { > if (4 < $1.digits) > { >- PC.dates_seen++; >- PC.day = $1.value % 100; >- PC.month = ($1.value / 100) % 100; >- PC.year.value = $1.value / 10000; >- PC.year.digits = $1.digits - 4; >+ pc->dates_seen++; >+ pc->day = $1.value % 100; >+ pc->month = ($1.value / 100) % 100; >+ pc->year.value = $1.value / 10000; >+ pc->year.digits = $1.digits - 4; > } > else > { >- PC.times_seen++; >+ pc->times_seen++; > if ($1.digits <= 2) > { >- PC.hour = $1.value; >- PC.minutes = 0; >+ pc->hour = $1.value; >+ pc->minutes = 0; > } > else > { >- PC.hour = $1.value / 100; >- PC.minutes = $1.value % 100; >+ pc->hour = $1.value / 100; >+ pc->minutes = $1.value % 100; > } >- PC.seconds = 0; >- PC.meridian = MER24; >+ pc->seconds.tv_sec = 0; >+ pc->seconds.tv_nsec = 0; >+ pc->meridian = MER24; > } > } > } >@@ -447,29 +498,13 @@ > > %% > >-/* Include this file down here because bison inserts code above which >- may define-away `const'. We want the prototype for get_date to have >- the same signature as the function definition. */ >-#include "getdate.h" >-#include "unlocked-io.h" >- >-#ifndef gmtime >-struct tm *gmtime (); >-#endif >-#ifndef localtime >-struct tm *localtime (); >-#endif >-#ifndef mktime >-time_t mktime (); >-#endif >- > static table const meridian_table[] = > { > { "AM", tMERIDIAN, MERam }, > { "A.M.", tMERIDIAN, MERam }, > { "PM", tMERIDIAN, MERpm }, > { "P.M.", tMERIDIAN, MERpm }, >- { 0, 0, 0 } >+ { NULL, 0, 0 } > }; > > static table const dst_table[] = >@@ -503,7 +538,7 @@ > { "THURS", tDAY, 4 }, > { "FRIDAY", tDAY, 5 }, > { "SATURDAY", tDAY, 6 }, >- { 0, 0, 0 } >+ { NULL, 0, 0 } > }; > > static table const time_units_table[] = >@@ -518,7 +553,7 @@ > { "MIN", tMINUTE_UNIT, 1 }, > { "SECOND", tSEC_UNIT, 1 }, > { "SEC", tSEC_UNIT, 1 }, >- { 0, 0, 0 } >+ { NULL, 0, 0 } > }; > > /* Assorted relative-time words. */ >@@ -544,7 +579,7 @@ > { "ELEVENTH", tUNUMBER, 11 }, > { "TWELFTH", tUNUMBER, 12 }, > { "AGO", tAGO, 1 }, >- { 0, 0, 0 } >+ { NULL, 0, 0 } > }; > > /* The time zone table. This table is necessarily incomplete, as time >@@ -604,7 +639,7 @@ > { "GST", tZONE, HOUR (10) }, /* Guam Standard */ > { "NZST", tZONE, HOUR (12) }, /* New Zealand Standard */ > { "NZDT", tDAYZONE, HOUR (12) }, /* New Zealand Daylight */ >- { 0, 0, 0 } >+ { NULL, 0, 0 } > }; > > /* Military time zone table. */ >@@ -635,39 +670,37 @@ > { "X", tZONE, HOUR (11) }, > { "Y", tZONE, HOUR (12) }, > { "Z", tZONE, HOUR ( 0) }, >- { 0, 0, 0 } >+ { NULL, 0, 0 } > }; > > > > static int >-to_hour (int hours, int meridian) >+to_hour (long int hours, int meridian) > { > switch (meridian) > { >+ default: /* Pacify GCC. */ > case MER24: > return 0 <= hours && hours < 24 ? hours : -1; > case MERam: > return 0 < hours && hours < 12 ? hours : hours == 12 ? 0 : -1; > case MERpm: > return 0 < hours && hours < 12 ? hours + 12 : hours == 12 ? 12 : -1; >- default: >- abort (); > } >- /* NOTREACHED */ > } > >-static int >+static long int > to_year (textint textyear) > { >- int year = textyear.value; >+ long int year = textyear.value; > > if (year < 0) > year = -year; > > /* XPG4 suggests that years 00-68 map to 2000-2068, and > years 69-99 map to 1969-1999. */ >- if (textyear.digits == 2) >+ else if (textyear.digits == 2) > year += year < 69 ? 2000 : 1900; > > return year; >@@ -687,7 +720,7 @@ > if (strcmp (name, tp->name) == 0) > return tp; > >- return 0; >+ return NULL; > } > > #if ! HAVE_TM_GMTOFF >@@ -695,12 +728,11 @@ > measured in seconds, ignoring leap seconds. > The body of this function is taken directly from the GNU C Library; > see src/strftime.c. */ >-static int >+static long int > tm_diff (struct tm const *a, struct tm const *b) > { > /* Compute intervening leap days correctly even if year is negative. >- Take care to avoid int overflow in leap day calculations, >- but it's OK to assume that A and B are close to each other. */ >+ Take care to avoid int overflow in leap day calculations. */ > int a4 = (a->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (a->tm_year & 3); > int b4 = (b->tm_year >> 2) + (TM_YEAR_BASE >> 2) - ! (b->tm_year & 3); > int a100 = a4 / 25 - (a4 % 25 < 0); >@@ -708,9 +740,10 @@ > int a400 = a100 >> 2; > int b400 = b100 >> 2; > int intervening_leap_days = (a4 - b4) - (a100 - b100) + (a400 - b400); >- int years = a->tm_year - b->tm_year; >- int days = (365 * years + intervening_leap_days >- + (a->tm_yday - b->tm_yday)); >+ long int ayear = a->tm_year; >+ long int years = ayear - b->tm_year; >+ long int days = (365 * years + intervening_leap_days >+ + (a->tm_yday - b->tm_yday)); > return (60 * (60 * (24 * days + (a->tm_hour - b->tm_hour)) > + (a->tm_min - b->tm_min)) > + (a->tm_sec - b->tm_sec)); >@@ -724,13 +757,16 @@ > char *q; > size_t wordlen; > table const *tp; >- int i; >- int abbrev; >+ bool period_found; >+ bool abbrev; > > /* Make it uppercase. */ > for (p = word; *p; p++) >- if (ISLOWER ((unsigned char) *p)) >- *p = toupper ((unsigned char) *p); >+ { >+ unsigned char ch = *p; >+ if (ISLOWER (ch)) >+ *p = toupper (ch); >+ } > > for (tp = meridian_table; tp->name; tp++) > if (strcmp (word, tp->name) == 0) >@@ -775,22 +811,22 @@ > return tp; > > /* Drop out any periods and try the time zone table again. */ >- for (i = 0, p = q = word; (*p = *q); q++) >+ for (period_found = false, p = q = word; (*p = *q); q++) > if (*q == '.') >- i = 1; >+ period_found = true; > else > p++; >- if (i && (tp = lookup_zone (pc, word))) >+ if (period_found && (tp = lookup_zone (pc, word))) > return tp; > >- return 0; >+ return NULL; > } > > static int > yylex (YYSTYPE *lvalp, parser_control *pc) > { > unsigned char c; >- int count; >+ size_t count; > > for (;;) > { >@@ -801,11 +837,12 @@ > { > char const *p; > int sign; >- int value; >+ unsigned long int value; > if (c == '-' || c == '+') > { > sign = c == '-' ? -1 : 1; >- c = *++pc->input; >+ while (c = *++pc->input, ISSPACE (c)) >+ continue; > if (! ISDIGIT (c)) > /* skip the '-' sign */ > continue; >@@ -813,17 +850,98 @@ > else > sign = 0; > p = pc->input; >- value = 0; >- do >+ for (value = 0; ; value *= 10) > { >- value = 10 * value + c - '0'; >+ unsigned long int value1 = value + (c - '0'); >+ if (value1 < value) >+ return '?'; >+ value = value1; > c = *++p; >+ if (! ISDIGIT (c)) >+ break; >+ if (ULONG_MAX / 10 < value) >+ return '?'; >+ } >+ if ((c == '.' || c == ',') && ISDIGIT (p[1])) >+ { >+ time_t s; >+ int ns; >+ int digits; >+ unsigned long int value1; >+ >+ /* Check for overflow when converting value to time_t. */ >+ if (sign < 0) >+ { >+ s = - value; >+ if (0 < s) >+ return '?'; >+ value1 = -s; >+ } >+ else >+ { >+ s = value; >+ if (s < 0) >+ return '?'; >+ value1 = s; >+ } >+ if (value != value1) >+ return '?'; >+ >+ /* Accumulate fraction, to ns precision. */ >+ p++; >+ ns = *p++ - '0'; >+ for (digits = 2; digits <= LOG10_BILLION; digits++) >+ { >+ ns *= 10; >+ if (ISDIGIT (*p)) >+ ns += *p++ - '0'; >+ } >+ >+ /* Skip excess digits, truncating toward -Infinity. */ >+ if (sign < 0) >+ for (; ISDIGIT (*p); p++) >+ if (*p != '0') >+ { >+ ns++; >+ break; >+ } >+ while (ISDIGIT (*p)) >+ p++; >+ >+ /* Adjust to the timespec convention, which is that >+ tv_nsec is always a positive offset even if tv_sec is >+ negative. */ >+ if (sign < 0 && ns) >+ { >+ s--; >+ if (! (s < 0)) >+ return '?'; >+ ns = BILLION - ns; >+ } >+ >+ lvalp->timespec.tv_sec = s; >+ lvalp->timespec.tv_nsec = ns; >+ pc->input = p; >+ return sign ? tSDECIMAL_NUMBER : tUDECIMAL_NUMBER; >+ } >+ else >+ { >+ if (sign < 0) >+ { >+ lvalp->textintval.value = - value; >+ if (0 < lvalp->textintval.value) >+ return '?'; >+ } >+ else >+ { >+ lvalp->textintval.value = value; >+ if (lvalp->textintval.value < 0) >+ return '?'; >+ } >+ lvalp->textintval.digits = p - pc->input; >+ pc->input = p; >+ return sign ? tSNUMBER : tUNUMBER; > } >- while (ISDIGIT (c)); >- lvalp->textintval.value = sign < 0 ? -value : value; >- lvalp->textintval.digits = p - pc->input; >- pc->input = p; >- return sign ? tSNUMBER : tUNUMBER; > } > > if (ISALPHA (c)) >@@ -861,50 +979,155 @@ > else if (c == ')') > count--; > } >- while (count > 0); >+ while (count != 0); > } > } > > /* Do nothing if the parser reports an error. */ > static int >-yyerror (char *s ATTRIBUTE_UNUSED) >+yyerror (parser_control *pc ATTRIBUTE_UNUSED, char *s ATTRIBUTE_UNUSED) > { > return 0; > } > >-/* Parse a date/time string P. Return the corresponding time_t value, >- or (time_t) -1 if there is an error. P can be an incomplete or >- relative time specification; if so, use *NOW as the basis for the >- returned time. */ >-time_t >-get_date (const char *p, const time_t *now) >+/* If *TM0 is the old and *TM1 is the new value of a struct tm after >+ passing it to mktime, return true if it's OK that mktime returned T. >+ It's not OK if *TM0 has out-of-range members. */ >+ >+static bool >+mktime_ok (struct tm const *tm0, struct tm const *tm1, time_t t) >+{ >+ if (t == (time_t) -1) >+ { >+ /* Guard against falsely reporting an error when parsing a time >+ stamp that happens to equal (time_t) -1, on a host that >+ supports such a time stamp. */ >+ tm1 = localtime (&t); >+ if (!tm1) >+ return false; >+ } >+ >+ return ! ((tm0->tm_sec ^ tm1->tm_sec) >+ | (tm0->tm_min ^ tm1->tm_min) >+ | (tm0->tm_hour ^ tm1->tm_hour) >+ | (tm0->tm_mday ^ tm1->tm_mday) >+ | (tm0->tm_mon ^ tm1->tm_mon) >+ | (tm0->tm_year ^ tm1->tm_year)); >+} >+ >+/* A reasonable upper bound for the size of ordinary TZ strings. >+ Use heap allocation if TZ's length exceeds this. */ >+enum { TZBUFSIZE = 100 }; >+ >+/* Return a copy of TZ, stored in TZBUF if it fits, and heap-allocated >+ otherwise. */ >+static char * >+get_tz (char tzbuf[TZBUFSIZE]) > { >- time_t Start = now ? *now : time (0); >- struct tm *tmp = localtime (&Start); >+ char *tz = getenv ("TZ"); >+ if (tz) >+ { >+ size_t tzsize = strlen (tz) + 1; >+ tz = (tzsize <= TZBUFSIZE >+ ? memcpy (tzbuf, tz, tzsize) >+ : xclone (tz, tzsize)); >+ } >+ return tz; >+} >+ >+/* Parse a date/time string, storing the resulting time value into *RESULT. >+ The string itself is pointed to by P. Return true if successful. >+ P can be an incomplete or relative time specification; if so, use >+ *NOW as the basis for the returned time. */ >+bool >+get_date (struct timespec *result, char const *p, struct timespec const *now) >+{ >+ time_t Start; >+ long int Start_ns; >+ struct tm const *tmp; > struct tm tm; > struct tm tm0; > parser_control pc; >+ struct timespec gettime_buffer; >+ unsigned char c; >+ bool tz_was_altered = false; >+ char *tz0 = NULL; >+ char tz0buf[TZBUFSIZE]; >+ bool ok = true; > >+ if (! now) >+ { >+ if (gettime (&gettime_buffer) != 0) >+ return false; >+ now = &gettime_buffer; >+ } >+ >+ Start = now->tv_sec; >+ Start_ns = now->tv_nsec; >+ >+ tmp = localtime (&now->tv_sec); > if (! tmp) >- return -1; >+ return false; >+ >+ while (c = *p, ISSPACE (c)) >+ p++; >+ >+ if (strncmp (p, "TZ=\"", 4) == 0) >+ { >+ char const *tzbase = p + 4; >+ size_t tzsize = 1; >+ char const *s; >+ >+ for (s = tzbase; *s; s++, tzsize++) >+ if (*s == '\\') >+ { >+ s++; >+ if (! (*s == '\\' || *s == '"')) >+ break; >+ } >+ else if (*s == '"') >+ { >+ char *z; >+ char *tz1; >+ char tz1buf[TZBUFSIZE]; >+ bool large_tz = TZBUFSIZE < tzsize; >+ bool setenv_ok; >+ tz0 = get_tz (tz0buf); >+ z = tz1 = large_tz ? xmalloc (tzsize) : tz1buf; >+ for (s = tzbase; *s != '"'; s++) >+ *z++ = *(s += *s == '\\'); >+ *z = '\0'; >+ setenv_ok = setenv ("TZ", tz1, 1) == 0; >+ if (large_tz) >+ free (tz1); >+ if (!setenv_ok) >+ goto fail; >+ tz_was_altered = true; >+ p = s + 1; >+ } >+ } > > pc.input = p; >- pc.year.value = tmp->tm_year + TM_YEAR_BASE; >+ pc.year.value = tmp->tm_year; >+ pc.year.value += TM_YEAR_BASE; > pc.year.digits = 4; > pc.month = tmp->tm_mon + 1; > pc.day = tmp->tm_mday; > pc.hour = tmp->tm_hour; > pc.minutes = tmp->tm_min; >- pc.seconds = tmp->tm_sec; >+ pc.seconds.tv_sec = tmp->tm_sec; >+ pc.seconds.tv_nsec = Start_ns; > tm.tm_isdst = tmp->tm_isdst; > > pc.meridian = MER24; >+ pc.rel_ns = 0; > pc.rel_seconds = 0; > pc.rel_minutes = 0; > pc.rel_hour = 0; > pc.rel_day = 0; > pc.rel_month = 0; > pc.rel_year = 0; >+ pc.timespec_seen = false; > pc.dates_seen = 0; > pc.days_seen = 0; > pc.rels_seen = 0; >@@ -916,7 +1139,7 @@ > pc.local_time_zone_table[0].name = tmp->tm_zone; > pc.local_time_zone_table[0].type = tLOCAL_ZONE; > pc.local_time_zone_table[0].value = tmp->tm_isdst; >- pc.local_time_zone_table[1].name = 0; >+ pc.local_time_zone_table[1].name = NULL; > > /* Probe the names used in the next three calendar quarters, looking > for a tm_isdst different from the one we already have. */ >@@ -925,7 +1148,7 @@ > for (quarter = 1; quarter <= 3; quarter++) > { > time_t probe = Start + quarter * (90 * 24 * 60 * 60); >- struct tm *probe_tm = localtime (&probe); >+ struct tm const *probe_tm = localtime (&probe); > if (probe_tm && probe_tm->tm_zone > && probe_tm->tm_isdst != pc.local_time_zone_table[0].value) > { >@@ -933,7 +1156,7 @@ > pc.local_time_zone_table[1].name = probe_tm->tm_zone; > pc.local_time_zone_table[1].type = tLOCAL_ZONE; > pc.local_time_zone_table[1].value = probe_tm->tm_isdst; >- pc.local_time_zone_table[2].name = 0; >+ pc.local_time_zone_table[2].name = NULL; > } > break; > } >@@ -952,10 +1175,10 @@ > pc.local_time_zone_table[i].type = tLOCAL_ZONE; > pc.local_time_zone_table[i].value = i; > } >- pc.local_time_zone_table[i].name = 0; >+ pc.local_time_zone_table[i].name = NULL; > } > #else >- pc.local_time_zone_table[0].name = 0; >+ pc.local_time_zone_table[0].name = NULL; > #endif > #endif > >@@ -967,127 +1190,181 @@ > daylight times. So if we see that abbreviation, we don't > know whether it's daylight time. */ > pc.local_time_zone_table[0].value = -1; >- pc.local_time_zone_table[1].name = 0; >+ pc.local_time_zone_table[1].name = NULL; > } > >- if (yyparse (&pc) != 0 >- || 1 < pc.times_seen || 1 < pc.dates_seen || 1 < pc.days_seen >- || 1 < (pc.local_zones_seen + pc.zones_seen) >- || (pc.local_zones_seen && 1 < pc.local_isdst)) >- return -1; >- >- tm.tm_year = to_year (pc.year) - TM_YEAR_BASE + pc.rel_year; >- tm.tm_mon = pc.month - 1 + pc.rel_month; >- tm.tm_mday = pc.day + pc.rel_day; >- if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen)) >- { >- tm.tm_hour = to_hour (pc.hour, pc.meridian); >- if (tm.tm_hour < 0) >- return -1; >- tm.tm_min = pc.minutes; >- tm.tm_sec = pc.seconds; >- } >+ if (yyparse (&pc) != 0) >+ goto fail; >+ >+ if (pc.timespec_seen) >+ *result = pc.seconds; > else > { >- tm.tm_hour = tm.tm_min = tm.tm_sec = 0; >- } >- >- /* Let mktime deduce tm_isdst if we have an absolute time stamp, >- or if the relative time stamp mentions days, months, or years. */ >- if (pc.dates_seen | pc.days_seen | pc.times_seen | pc.rel_day >- | pc.rel_month | pc.rel_year) >- tm.tm_isdst = -1; >- >- /* But if the input explicitly specifies local time with or without >- DST, give mktime that information. */ >- if (pc.local_zones_seen) >- tm.tm_isdst = pc.local_isdst; >+ if (1 < pc.times_seen || 1 < pc.dates_seen || 1 < pc.days_seen >+ || 1 < (pc.local_zones_seen + pc.zones_seen) >+ || (pc.local_zones_seen && 1 < pc.local_isdst)) >+ goto fail; >+ >+ tm.tm_year = to_year (pc.year) - TM_YEAR_BASE; >+ tm.tm_mon = pc.month - 1; >+ tm.tm_mday = pc.day; >+ if (pc.times_seen || (pc.rels_seen && ! pc.dates_seen && ! pc.days_seen)) >+ { >+ tm.tm_hour = to_hour (pc.hour, pc.meridian); >+ if (tm.tm_hour < 0) >+ goto fail; >+ tm.tm_min = pc.minutes; >+ tm.tm_sec = pc.seconds.tv_sec; >+ } >+ else >+ { >+ tm.tm_hour = tm.tm_min = tm.tm_sec = 0; >+ pc.seconds.tv_nsec = 0; >+ } > >- tm0 = tm; >+ /* Let mktime deduce tm_isdst if we have an absolute time stamp. */ >+ if (pc.dates_seen | pc.days_seen | pc.times_seen) >+ tm.tm_isdst = -1; >+ >+ /* But if the input explicitly specifies local time with or without >+ DST, give mktime that information. */ >+ if (pc.local_zones_seen) >+ tm.tm_isdst = pc.local_isdst; > >- Start = mktime (&tm); >+ tm0 = tm; > >- if (Start == (time_t) -1) >- { >+ Start = mktime (&tm); > >- /* Guard against falsely reporting errors near the time_t boundaries >- when parsing times in other time zones. For example, if the min >- time_t value is 1970-01-01 00:00:00 UTC and we are 8 hours ahead >- of UTC, then the min localtime value is 1970-01-01 08:00:00; if >- we apply mktime to 1970-01-01 00:00:00 we will get an error, so >- we apply mktime to 1970-01-02 08:00:00 instead and adjust the time >- zone by 24 hours to compensate. This algorithm assumes that >- there is no DST transition within a day of the time_t boundaries. */ >- if (pc.zones_seen) >+ if (! mktime_ok (&tm0, &tm, Start)) > { >- tm = tm0; >- if (tm.tm_year <= EPOCH_YEAR - TM_YEAR_BASE) >- { >- tm.tm_mday++; >- pc.time_zone += 24 * 60; >- } >+ if (! pc.zones_seen) >+ goto fail; > else > { >- tm.tm_mday--; >- pc.time_zone -= 24 * 60; >+ /* Guard against falsely reporting errors near the time_t >+ boundaries when parsing times in other time zones. For >+ example, suppose the input string "1969-12-31 23:00:00 -0100", >+ the current time zone is 8 hours ahead of UTC, and the min >+ time_t value is 1970-01-01 00:00:00 UTC. Then the min >+ localtime value is 1970-01-01 08:00:00, and mktime will >+ therefore fail on 1969-12-31 23:00:00. To work around the >+ problem, set the time zone to 1 hour behind UTC temporarily >+ by setting TZ="XXX1:00" and try mktime again. */ >+ >+ long int time_zone = pc.time_zone; >+ long int abs_time_zone = time_zone < 0 ? - time_zone : time_zone; >+ long int abs_time_zone_hour = abs_time_zone / 60; >+ int abs_time_zone_min = abs_time_zone % 60; >+ char tz1buf[sizeof "XXX+0:00" >+ + sizeof pc.time_zone * CHAR_BIT / 3]; >+ if (!tz_was_altered) >+ tz0 = get_tz (tz0buf); >+ sprintf (tz1buf, "XXX%s%ld:%02d", "-" + (time_zone < 0), >+ abs_time_zone_hour, abs_time_zone_min); >+ if (setenv ("TZ", tz1buf, 1) != 0) >+ goto fail; >+ tz_was_altered = true; >+ tm = tm0; >+ Start = mktime (&tm); >+ if (! mktime_ok (&tm0, &tm, Start)) >+ goto fail; > } >- Start = mktime (&tm); > } > >- if (Start == (time_t) -1) >- return Start; >- } >- >- if (pc.days_seen && ! pc.dates_seen) >- { >- tm.tm_mday += ((pc.day_number - tm.tm_wday + 7) % 7 >- + 7 * (pc.day_ordinal - (0 < pc.day_ordinal))); >- tm.tm_isdst = -1; >- Start = mktime (&tm); >- if (Start == (time_t) -1) >- return Start; >- } >+ if (pc.days_seen && ! pc.dates_seen) >+ { >+ tm.tm_mday += ((pc.day_number - tm.tm_wday + 7) % 7 >+ + 7 * (pc.day_ordinal - (0 < pc.day_ordinal))); >+ tm.tm_isdst = -1; >+ Start = mktime (&tm); >+ if (Start == (time_t) -1) >+ goto fail; >+ } > >- if (pc.zones_seen) >- { >- int delta = pc.time_zone * 60; >+ if (pc.zones_seen) >+ { >+ long int delta = pc.time_zone * 60; >+ time_t t1; > #ifdef HAVE_TM_GMTOFF >- delta -= tm.tm_gmtoff; >+ delta -= tm.tm_gmtoff; > #else >- struct tm *gmt = gmtime (&Start); >- if (! gmt) >- return -1; >- delta -= tm_diff (&tm, gmt); >+ time_t t = Start; >+ struct tm const *gmt = gmtime (&t); >+ if (! gmt) >+ goto fail; >+ delta -= tm_diff (&tm, gmt); > #endif >- if ((Start < Start - delta) != (delta < 0)) >- return -1; /* time_t overflow */ >- Start -= delta; >+ t1 = Start - delta; >+ if ((Start < t1) != (delta < 0)) >+ goto fail; /* time_t overflow */ >+ Start = t1; >+ } >+ >+ /* Add relative date. */ >+ if (pc.rel_year | pc.rel_month | pc.rel_day) >+ { >+ int year = tm.tm_year + pc.rel_year; >+ int month = tm.tm_mon + pc.rel_month; >+ int day = tm.tm_mday + pc.rel_day; >+ if (((year < tm.tm_year) ^ (pc.rel_year < 0)) >+ | (month < tm.tm_mon) ^ (pc.rel_month < 0) >+ | (day < tm.tm_mday) ^ (pc.rel_day < 0)) >+ goto fail; >+ tm.tm_year = year; >+ tm.tm_mon = month; >+ tm.tm_mday = day; >+ tm.tm_hour = tm0.tm_hour; >+ tm.tm_min = tm0.tm_min; >+ tm.tm_sec = tm0.tm_sec; >+ tm.tm_isdst = tm0.tm_isdst; >+ Start = mktime (&tm); >+ if (Start == (time_t) -1) >+ goto fail; >+ } >+ >+ /* Add relative hours, minutes, and seconds. On hosts that support >+ leap seconds, ignore the possibility of leap seconds; e.g., >+ "+ 10 minutes" adds 600 seconds, even if one of them is a >+ leap second. Typically this is not what the user wants, but it's >+ too hard to do it the other way, because the time zone indicator >+ must be applied before relative times, and if mktime is applied >+ again the time zone will be lost. */ >+ { >+ long int sum_ns = pc.seconds.tv_nsec + pc.rel_ns; >+ long int normalized_ns = (sum_ns % BILLION + BILLION) % BILLION; >+ time_t t0 = Start; >+ long int d1 = 60 * 60 * pc.rel_hour; >+ time_t t1 = t0 + d1; >+ long int d2 = 60 * pc.rel_minutes; >+ time_t t2 = t1 + d2; >+ long int d3 = pc.rel_seconds; >+ time_t t3 = t2 + d3; >+ long int d4 = (sum_ns - normalized_ns) / BILLION; >+ time_t t4 = t3 + d4; >+ >+ if ((d1 / (60 * 60) ^ pc.rel_hour) >+ | (d2 / 60 ^ pc.rel_minutes) >+ | ((t1 < t0) ^ (d1 < 0)) >+ | ((t2 < t1) ^ (d2 < 0)) >+ | ((t3 < t2) ^ (d3 < 0)) >+ | ((t4 < t3) ^ (d4 < 0))) >+ goto fail; >+ >+ result->tv_sec = t4; >+ result->tv_nsec = normalized_ns; >+ } > } > >- /* Add relative hours, minutes, and seconds. Ignore leap seconds; >- i.e. "+ 10 minutes" means 600 seconds, even if one of them is a >- leap second. Typically this is not what the user wants, but it's >- too hard to do it the other way, because the time zone indicator >- must be applied before relative times, and if mktime is applied >- again the time zone will be lost. */ >- { >- time_t t0 = Start; >- long d1 = 60 * 60 * (long) pc.rel_hour; >- time_t t1 = t0 + d1; >- long d2 = 60 * (long) pc.rel_minutes; >- time_t t2 = t1 + d2; >- int d3 = pc.rel_seconds; >- time_t t3 = t2 + d3; >- if ((d1 / (60 * 60) ^ pc.rel_hour) >- | (d2 / 60 ^ pc.rel_minutes) >- | ((t0 + d1 < t0) ^ (d1 < 0)) >- | ((t1 + d2 < t1) ^ (d2 < 0)) >- | ((t2 + d3 < t2) ^ (d3 < 0))) >- return -1; >- Start = t3; >- } >+ goto done; > >- return Start; >+ fail: >+ ok = false; >+ done: >+ if (tz_was_altered) >+ ok &= (tz0 ? setenv ("TZ", tz0, 1) : unsetenv ("TZ")) == 0; >+ if (tz0 != tz0buf) >+ free (tz0); >+ return ok; > } > > #if TEST >@@ -1098,22 +1375,32 @@ > main (int ac, char **av) > { > char buff[BUFSIZ]; >- time_t d; > > printf ("Enter date, or blank line to exit.\n\t> "); > fflush (stdout); > >- buff[BUFSIZ - 1] = 0; >+ buff[BUFSIZ - 1] = '\0'; > while (fgets (buff, BUFSIZ - 1, stdin) && buff[0]) > { >- d = get_date (buff, 0); >- if (d == (time_t) -1) >+ struct timespec d; >+ struct tm const *tm; >+ if (! get_date (&d, buff, NULL)) > printf ("Bad format - couldn't convert.\n"); >+ else if (! (tm = localtime (&d.tv_sec))) >+ { >+ long int sec = d.tv_sec; >+ printf ("localtime (%ld) failed\n", sec); >+ } > else >- printf ("%s", ctime (&d)); >+ { >+ int ns = d.tv_nsec; >+ printf ("%04ld-%02d-%02d %02d:%02d:%02d.%09d\n", >+ tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday, >+ tm->tm_hour, tm->tm_min, tm->tm_sec, ns); >+ } > printf ("\t> "); > fflush (stdout); > } > return 0; > } >-#endif /* defined TEST */ >+#endif /* TEST */ >diff -uNr coreutils-5.2.1.org/lib/setenv.h coreutils-5.2.1/lib/setenv.h >--- coreutils-5.2.1.org/lib/setenv.h 1970-01-01 08:00:00.000000000 +0800 >+++ coreutils-5.2.1/lib/setenv.h 2008-07-10 15:13:39.000000000 +0800 >@@ -0,0 +1,54 @@ >+/* Setting environment variables. >+ Copyright (C) 2001-2004 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ >+ >+#if HAVE_SETENV || HAVE_UNSETENV >+ >+/* Get setenv(), unsetenv() declarations. */ >+# include <stdlib.h> >+ >+#endif >+ >+#ifdef __cplusplus >+extern "C" { >+#endif >+ >+#if !HAVE_SETENV >+ >+/* Set NAME to VALUE in the environment. >+ If REPLACE is nonzero, overwrite an existing value. */ >+extern int setenv (const char *name, const char *value, int replace); >+ >+#endif >+ >+#if HAVE_UNSETENV >+ >+# if VOID_UNSETENV >+/* On some systems, unsetenv() returns void. >+ This is the case for FreeBSD 4.8, NetBSD 1.6, OpenBSD 3.4. */ >+# define unsetenv(name) ((unsetenv)(name), 0) >+# endif >+ >+#else >+ >+/* Remove the variable NAME from the environment. */ >+extern int unsetenv (const char *name); >+ >+#endif >+ >+#ifdef __cplusplus >+} >+#endif >diff -uNr coreutils-5.2.1.org/src/date.c coreutils-5.2.1/src/date.c >--- coreutils-5.2.1.org/src/date.c 2008-07-10 15:11:45.000000000 +0800 >+++ coreutils-5.2.1/src/date.c 2008-07-10 15:13:39.000000000 +0800 >@@ -259,10 +259,7 @@ > break; > } > >- when.tv_sec = get_date (line, NULL); >- when.tv_nsec = 0; /* FIXME: get_date should set this. */ >- >- if (when.tv_sec == -1) >+ if (! get_date (&when, line, NULL)) > { > if (line[line_length - 1] == '\n') > line[line_length - 1] = '\0'; >@@ -450,9 +447,7 @@ > } > else > { >- when.tv_sec = get_date (datestr, NULL); >- when.tv_nsec = 0; /* FIXME: get_date should set this. */ >- valid_date = (when.tv_sec != (time_t) -1); >+ valid_date = get_date (&when, datestr, NULL); > } > > format = (n_args == 1 ? argv[optind] + 1 : NULL); >diff -uNr coreutils-5.2.1.org/src/Makefile.am coreutils-5.2.1/src/Makefile.am >--- coreutils-5.2.1.org/src/Makefile.am 2008-07-10 15:11:45.000000000 +0800 >+++ coreutils-5.2.1/src/Makefile.am 2008-07-10 15:13:39.000000000 +0800 >@@ -52,6 +52,7 @@ > > # for clock_gettime > date_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) >+touch_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) > > # For sqrt > factor_LDADD = $(LDADD) $(SQRT_LIBM) >diff -uNr coreutils-5.2.1.org/src/Makefile.in coreutils-5.2.1/src/Makefile.in >--- coreutils-5.2.1.org/src/Makefile.in 2008-07-10 15:11:45.000000000 +0800 >+++ coreutils-5.2.1/src/Makefile.in 2008-07-10 15:13:39.000000000 +0800 >@@ -842,6 +842,7 @@ > > # for clock_gettime > date_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) >+touch_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) > > # For sqrt > factor_LDADD = $(LDADD) $(SQRT_LIBM) >diff -uNr coreutils-5.2.1.org/src/Makefile.in.orig coreutils-5.2.1/src/Makefile.in.orig >--- coreutils-5.2.1.org/src/Makefile.in.orig 1970-01-01 08:00:00.000000000 +0800 >+++ coreutils-5.2.1/src/Makefile.in.orig 2004-03-11 16:59:23.000000000 +0800 >@@ -0,0 +1,1716 @@ >+# Makefile.in generated by automake 1.8.3 from Makefile.am. >+# @configure_input@ >+ >+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, >+# 2003, 2004 Free Software Foundation, Inc. >+# This Makefile.in is free software; the Free Software Foundation >+# gives unlimited permission to copy and/or distribute it, >+# with or without modifications, as long as this notice is preserved. >+ >+# This program is distributed in the hope that it will be useful, >+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without >+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A >+# PARTICULAR PURPOSE. >+ >+@SET_MAKE@ >+ >+ >+ >+SOURCES = $(__SOURCES) basename.c cat.c $(chgrp_SOURCES) chmod.c $(chown_SOURCES) chroot.c cksum.c comm.c $(cp_SOURCES) csplit.c cut.c date.c dd.c df.c $(dir_SOURCES) dircolors.c dirname.c du.c echo.c env.c expand.c expr.c factor.c false.c fmt.c fold.c $(ginstall_SOURCES) head.c hostid.c hostname.c id.c join.c kill.c link.c ln.c logname.c $(ls_SOURCES) $(md5sum_SOURCES) mkdir.c mkfifo.c mknod.c $(mv_SOURCES) nice.c nl.c nohup.c od.c paste.c pathchk.c pinky.c pr.c printenv.c printf.c ptx.c pwd.c readlink.c $(rm_SOURCES) rmdir.c seq.c setuidgid.c $(sha1sum_SOURCES) shred.c sleep.c sort.c split.c stat.c stty.c su.c sum.c sync.c tac.c tail.c tee.c test.c touch.c tr.c true.c tsort.c tty.c uname.c unexpand.c uniq.c unlink.c uptime.c users.c $(vdir_SOURCES) wc.c who.c whoami.c yes.c >+ >+srcdir = @srcdir@ >+top_srcdir = @top_srcdir@ >+VPATH = @srcdir@ >+pkgdatadir = $(datadir)/@PACKAGE@ >+pkglibdir = $(libdir)/@PACKAGE@ >+pkgincludedir = $(includedir)/@PACKAGE@ >+top_builddir = .. >+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd >+INSTALL = @INSTALL@ >+install_sh_DATA = $(install_sh) -c -m 644 >+install_sh_PROGRAM = $(install_sh) -c >+install_sh_SCRIPT = $(install_sh) -c >+INSTALL_HEADER = $(INSTALL_DATA) >+NORMAL_INSTALL = : >+PRE_INSTALL = : >+POST_INSTALL = : >+NORMAL_UNINSTALL = : >+PRE_UNINSTALL = : >+POST_UNINSTALL = : >+host_triplet = @host@ >+EXTRA_PROGRAMS = chroot$(EXEEXT) df$(EXEEXT) hostid$(EXEEXT) \ >+ nice$(EXEEXT) pinky$(EXEEXT) stty$(EXEEXT) su$(EXEEXT) \ >+ uname$(EXEEXT) uptime$(EXEEXT) users$(EXEEXT) who$(EXEEXT) >+bin_PROGRAMS = [$(EXEEXT) chgrp$(EXEEXT) chown$(EXEEXT) chmod$(EXEEXT) \ >+ cp$(EXEEXT) dd$(EXEEXT) dircolors$(EXEEXT) du$(EXEEXT) \ >+ ginstall$(EXEEXT) link$(EXEEXT) ln$(EXEEXT) dir$(EXEEXT) \ >+ vdir$(EXEEXT) ls$(EXEEXT) mkdir$(EXEEXT) mkfifo$(EXEEXT) \ >+ mknod$(EXEEXT) mv$(EXEEXT) nohup$(EXEEXT) readlink$(EXEEXT) \ >+ rm$(EXEEXT) rmdir$(EXEEXT) shred$(EXEEXT) stat$(EXEEXT) \ >+ sync$(EXEEXT) touch$(EXEEXT) unlink$(EXEEXT) cat$(EXEEXT) \ >+ cksum$(EXEEXT) comm$(EXEEXT) csplit$(EXEEXT) cut$(EXEEXT) \ >+ expand$(EXEEXT) fmt$(EXEEXT) fold$(EXEEXT) head$(EXEEXT) \ >+ join$(EXEEXT) md5sum$(EXEEXT) nl$(EXEEXT) od$(EXEEXT) \ >+ paste$(EXEEXT) pr$(EXEEXT) ptx$(EXEEXT) sha1sum$(EXEEXT) \ >+ sort$(EXEEXT) split$(EXEEXT) sum$(EXEEXT) tac$(EXEEXT) \ >+ tail$(EXEEXT) tr$(EXEEXT) tsort$(EXEEXT) unexpand$(EXEEXT) \ >+ uniq$(EXEEXT) wc$(EXEEXT) basename$(EXEEXT) date$(EXEEXT) \ >+ dirname$(EXEEXT) echo$(EXEEXT) env$(EXEEXT) expr$(EXEEXT) \ >+ factor$(EXEEXT) false$(EXEEXT) hostname$(EXEEXT) id$(EXEEXT) \ >+ kill$(EXEEXT) logname$(EXEEXT) pathchk$(EXEEXT) \ >+ printenv$(EXEEXT) printf$(EXEEXT) pwd$(EXEEXT) seq$(EXEEXT) \ >+ sleep$(EXEEXT) tee$(EXEEXT) test$(EXEEXT) true$(EXEEXT) \ >+ tty$(EXEEXT) whoami$(EXEEXT) yes$(EXEEXT) $(am__EXEEXT_1) \ >+ $(am__EXEEXT_2) >+noinst_PROGRAMS = setuidgid$(EXEEXT) >+subdir = src >+DIST_COMMON = $(noinst_HEADERS) $(srcdir)/Makefile.am \ >+ $(srcdir)/Makefile.in >+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 >+am__aclocal_m4_deps = $(top_srcdir)/m4/acl.m4 $(top_srcdir)/m4/afs.m4 \ >+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \ >+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/backupfile.m4 \ >+ $(top_srcdir)/m4/bison.m4 $(top_srcdir)/m4/boottime.m4 \ >+ $(top_srcdir)/m4/canon-host.m4 \ >+ $(top_srcdir)/m4/canonicalize.m4 \ >+ $(top_srcdir)/m4/check-decl.m4 $(top_srcdir)/m4/chown.m4 \ >+ $(top_srcdir)/m4/clock_time.m4 $(top_srcdir)/m4/closeout.m4 \ >+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/d-ino.m4 \ >+ $(top_srcdir)/m4/d-type.m4 $(top_srcdir)/m4/dirfd.m4 \ >+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \ >+ $(top_srcdir)/m4/dup2.m4 $(top_srcdir)/m4/error.m4 \ >+ $(top_srcdir)/m4/euidaccess.m4 $(top_srcdir)/m4/exclude.m4 \ >+ $(top_srcdir)/m4/exitfail.m4 $(top_srcdir)/m4/extensions.m4 \ >+ $(top_srcdir)/m4/file-type.m4 $(top_srcdir)/m4/fileblocks.m4 \ >+ $(top_srcdir)/m4/filemode.m4 $(top_srcdir)/m4/fnmatch.m4 \ >+ $(top_srcdir)/m4/fpending.m4 $(top_srcdir)/m4/free.m4 \ >+ $(top_srcdir)/m4/fstypename.m4 $(top_srcdir)/m4/fsusage.m4 \ >+ $(top_srcdir)/m4/ftruncate.m4 \ >+ $(top_srcdir)/m4/getcwd-path-max.m4 $(top_srcdir)/m4/getcwd.m4 \ >+ $(top_srcdir)/m4/getdate.m4 $(top_srcdir)/m4/getgroups.m4 \ >+ $(top_srcdir)/m4/gethostname.m4 $(top_srcdir)/m4/getline.m4 \ >+ $(top_srcdir)/m4/getndelim2.m4 $(top_srcdir)/m4/getopt.m4 \ >+ $(top_srcdir)/m4/getpagesize.m4 $(top_srcdir)/m4/getpass.m4 \ >+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/gettimeofday.m4 \ >+ $(top_srcdir)/m4/getugroups.m4 \ >+ $(top_srcdir)/m4/getusershell.m4 $(top_srcdir)/m4/glibc21.m4 \ >+ $(top_srcdir)/m4/group-member.m4 \ >+ $(top_srcdir)/m4/hard-locale.m4 $(top_srcdir)/m4/hash.m4 \ >+ $(top_srcdir)/m4/host-os.m4 $(top_srcdir)/m4/human.m4 \ >+ $(top_srcdir)/m4/iconv.m4 $(top_srcdir)/m4/idcache.m4 \ >+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes-pri.m4 \ >+ $(top_srcdir)/m4/inttypes.m4 $(top_srcdir)/m4/inttypes_h.m4 \ >+ $(top_srcdir)/m4/jm-macros.m4 $(top_srcdir)/m4/jm-winsz1.m4 \ >+ $(top_srcdir)/m4/jm-winsz2.m4 $(top_srcdir)/m4/lchown.m4 \ >+ $(top_srcdir)/m4/lib-check.m4 $(top_srcdir)/m4/lib-ld.m4 \ >+ $(top_srcdir)/m4/lib-link.m4 $(top_srcdir)/m4/lib-prefix.m4 \ >+ $(top_srcdir)/m4/link-follow.m4 \ >+ $(top_srcdir)/m4/long-options.m4 \ >+ $(top_srcdir)/m4/longdouble.m4 $(top_srcdir)/m4/longlong.m4 \ >+ $(top_srcdir)/m4/ls-mntd-fs.m4 $(top_srcdir)/m4/lstat.m4 \ >+ $(top_srcdir)/m4/makepath.m4 $(top_srcdir)/m4/malloc.m4 \ >+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbswidth.m4 \ >+ $(top_srcdir)/m4/md5.m4 $(top_srcdir)/m4/memchr.m4 \ >+ $(top_srcdir)/m4/memcmp.m4 $(top_srcdir)/m4/memcoll.m4 \ >+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \ >+ $(top_srcdir)/m4/memrchr.m4 $(top_srcdir)/m4/memset.m4 \ >+ $(top_srcdir)/m4/mkdir-slash.m4 $(top_srcdir)/m4/mkstemp.m4 \ >+ $(top_srcdir)/m4/mktime.m4 $(top_srcdir)/m4/modechange.m4 \ >+ $(top_srcdir)/m4/mountlist.m4 $(top_srcdir)/m4/nanosleep.m4 \ >+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/obstack.m4 \ >+ $(top_srcdir)/m4/onceonly.m4 $(top_srcdir)/m4/path-concat.m4 \ >+ $(top_srcdir)/m4/pathmax.m4 $(top_srcdir)/m4/perl.m4 \ >+ $(top_srcdir)/m4/physmem.m4 $(top_srcdir)/m4/po.m4 \ >+ $(top_srcdir)/m4/posixtm.m4 $(top_srcdir)/m4/posixver.m4 \ >+ $(top_srcdir)/m4/prereq.m4 $(top_srcdir)/m4/progtest.m4 \ >+ $(top_srcdir)/m4/putenv.m4 $(top_srcdir)/m4/quote.m4 \ >+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/readdir.m4 \ >+ $(top_srcdir)/m4/readlink.m4 $(top_srcdir)/m4/readtokens.m4 \ >+ $(top_srcdir)/m4/readutmp.m4 $(top_srcdir)/m4/realloc.m4 \ >+ $(top_srcdir)/m4/regex.m4 $(top_srcdir)/m4/rename.m4 \ >+ $(top_srcdir)/m4/restrict.m4 $(top_srcdir)/m4/rmdir-errno.m4 \ >+ $(top_srcdir)/m4/rmdir.m4 $(top_srcdir)/m4/rpmatch.m4 \ >+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \ >+ $(top_srcdir)/m4/same.m4 $(top_srcdir)/m4/save-cwd.m4 \ >+ $(top_srcdir)/m4/savedir.m4 $(top_srcdir)/m4/settime.m4 \ >+ $(top_srcdir)/m4/sha.m4 $(top_srcdir)/m4/sig2str.m4 \ >+ $(top_srcdir)/m4/signed.m4 $(top_srcdir)/m4/ssize_t.m4 \ >+ $(top_srcdir)/m4/st_dm_mode.m4 $(top_srcdir)/m4/st_mtim.m4 \ >+ $(top_srcdir)/m4/stat.m4 $(top_srcdir)/m4/stdbool.m4 \ >+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/stdio-safer.m4 \ >+ $(top_srcdir)/m4/stpcpy.m4 $(top_srcdir)/m4/strcase.m4 \ >+ $(top_srcdir)/m4/strcspn.m4 $(top_srcdir)/m4/strdup.m4 \ >+ $(top_srcdir)/m4/strftime.m4 $(top_srcdir)/m4/strndup.m4 \ >+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strpbrk.m4 \ >+ $(top_srcdir)/m4/strstr.m4 $(top_srcdir)/m4/strtod.m4 \ >+ $(top_srcdir)/m4/strtoimax.m4 $(top_srcdir)/m4/strtol.m4 \ >+ $(top_srcdir)/m4/strtoll.m4 $(top_srcdir)/m4/strtoul.m4 \ >+ $(top_srcdir)/m4/strtoull.m4 $(top_srcdir)/m4/strtoumax.m4 \ >+ $(top_srcdir)/m4/strverscmp.m4 $(top_srcdir)/m4/timespec.m4 \ >+ $(top_srcdir)/m4/tm_gmtoff.m4 $(top_srcdir)/m4/tzset.m4 \ >+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \ >+ $(top_srcdir)/m4/unicodeio.m4 $(top_srcdir)/m4/unistd-safer.m4 \ >+ $(top_srcdir)/m4/unlink-busy.m4 \ >+ $(top_srcdir)/m4/unlocked-io.m4 $(top_srcdir)/m4/uptime.m4 \ >+ $(top_srcdir)/m4/userspec.m4 $(top_srcdir)/m4/utimbuf.m4 \ >+ $(top_srcdir)/m4/utime.m4 $(top_srcdir)/m4/utimens.m4 \ >+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/utimes.m4 \ >+ $(top_srcdir)/m4/vasnprintf.m4 $(top_srcdir)/m4/vasprintf.m4 \ >+ $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \ >+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xgetcwd.m4 \ >+ $(top_srcdir)/m4/xreadlink.m4 $(top_srcdir)/m4/xstrtod.m4 \ >+ $(top_srcdir)/m4/xstrtoimax.m4 $(top_srcdir)/m4/xstrtol.m4 \ >+ $(top_srcdir)/m4/xstrtoumax.m4 $(top_srcdir)/m4/yesno.m4 \ >+ $(top_srcdir)/configure.ac >+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ >+ $(ACLOCAL_M4) >+mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs >+CONFIG_HEADER = $(top_builddir)/config.h >+CONFIG_CLEAN_FILES = >+am__EXEEXT_1 = @OPTIONAL_BIN_PROGS@ >+am__EXEEXT_2 = @DF_PROG@ >+am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" >+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) >+PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) >+am___OBJECTS = lbracket.$(OBJEXT) >+__OBJECTS = $(am___OBJECTS) >+__LDADD = $(LDADD) >+am__DEPENDENCIES_1 = >+__DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+basename_SOURCES = basename.c >+basename_OBJECTS = basename.$(OBJEXT) >+basename_LDADD = $(LDADD) >+basename_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+cat_SOURCES = cat.c >+cat_OBJECTS = cat.$(OBJEXT) >+cat_LDADD = $(LDADD) >+cat_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_chgrp_OBJECTS = chgrp.$(OBJEXT) chown-core.$(OBJEXT) >+chgrp_OBJECTS = $(am_chgrp_OBJECTS) >+chgrp_LDADD = $(LDADD) >+chgrp_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+chmod_SOURCES = chmod.c >+chmod_OBJECTS = chmod.$(OBJEXT) >+chmod_LDADD = $(LDADD) >+chmod_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_chown_OBJECTS = chown.$(OBJEXT) chown-core.$(OBJEXT) >+chown_OBJECTS = $(am_chown_OBJECTS) >+chown_LDADD = $(LDADD) >+chown_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+chroot_SOURCES = chroot.c >+chroot_OBJECTS = chroot.$(OBJEXT) >+chroot_LDADD = $(LDADD) >+chroot_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+cksum_SOURCES = cksum.c >+cksum_OBJECTS = cksum.$(OBJEXT) >+cksum_LDADD = $(LDADD) >+cksum_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+comm_SOURCES = comm.c >+comm_OBJECTS = comm.$(OBJEXT) >+comm_LDADD = $(LDADD) >+comm_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_cp_OBJECTS = cp.$(OBJEXT) copy.$(OBJEXT) cp-hash.$(OBJEXT) >+cp_OBJECTS = $(am_cp_OBJECTS) >+cp_LDADD = $(LDADD) >+cp_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+csplit_SOURCES = csplit.c >+csplit_OBJECTS = csplit.$(OBJEXT) >+csplit_LDADD = $(LDADD) >+csplit_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+cut_SOURCES = cut.c >+cut_OBJECTS = cut.$(OBJEXT) >+cut_LDADD = $(LDADD) >+cut_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+date_SOURCES = date.c >+date_OBJECTS = date.$(OBJEXT) >+am__DEPENDENCIES_2 = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+date_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+dd_SOURCES = dd.c >+dd_OBJECTS = dd.$(OBJEXT) >+dd_LDADD = $(LDADD) >+dd_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+df_SOURCES = df.c >+df_OBJECTS = df.$(OBJEXT) >+df_LDADD = $(LDADD) >+df_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_dir_OBJECTS = ls.$(OBJEXT) ls-dir.$(OBJEXT) >+dir_OBJECTS = $(am_dir_OBJECTS) >+dir_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+dircolors_SOURCES = dircolors.c >+dircolors_OBJECTS = dircolors.$(OBJEXT) >+dircolors_LDADD = $(LDADD) >+dircolors_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+dirname_SOURCES = dirname.c >+dirname_OBJECTS = dirname.$(OBJEXT) >+dirname_LDADD = $(LDADD) >+dirname_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+du_SOURCES = du.c >+du_OBJECTS = du.$(OBJEXT) >+du_LDADD = $(LDADD) >+du_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+echo_SOURCES = echo.c >+echo_OBJECTS = echo.$(OBJEXT) >+echo_LDADD = $(LDADD) >+echo_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+env_SOURCES = env.c >+env_OBJECTS = env.$(OBJEXT) >+env_LDADD = $(LDADD) >+env_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+expand_SOURCES = expand.c >+expand_OBJECTS = expand.$(OBJEXT) >+expand_LDADD = $(LDADD) >+expand_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+expr_SOURCES = expr.c >+expr_OBJECTS = expr.$(OBJEXT) >+expr_LDADD = $(LDADD) >+expr_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+factor_SOURCES = factor.c >+factor_OBJECTS = factor.$(OBJEXT) >+factor_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+false_SOURCES = false.c >+false_OBJECTS = false.$(OBJEXT) >+false_LDADD = $(LDADD) >+false_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+fmt_SOURCES = fmt.c >+fmt_OBJECTS = fmt.$(OBJEXT) >+fmt_LDADD = $(LDADD) >+fmt_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+fold_SOURCES = fold.c >+fold_OBJECTS = fold.$(OBJEXT) >+fold_LDADD = $(LDADD) >+fold_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_ginstall_OBJECTS = install.$(OBJEXT) copy.$(OBJEXT) \ >+ cp-hash.$(OBJEXT) >+ginstall_OBJECTS = $(am_ginstall_OBJECTS) >+ginstall_LDADD = $(LDADD) >+ginstall_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+head_SOURCES = head.c >+head_OBJECTS = head.$(OBJEXT) >+head_LDADD = $(LDADD) >+head_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+hostid_SOURCES = hostid.c >+hostid_OBJECTS = hostid.$(OBJEXT) >+hostid_LDADD = $(LDADD) >+hostid_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+hostname_SOURCES = hostname.c >+hostname_OBJECTS = hostname.$(OBJEXT) >+hostname_LDADD = $(LDADD) >+hostname_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+id_SOURCES = id.c >+id_OBJECTS = id.$(OBJEXT) >+id_LDADD = $(LDADD) >+id_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+join_SOURCES = join.c >+join_OBJECTS = join.$(OBJEXT) >+join_LDADD = $(LDADD) >+join_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+kill_SOURCES = kill.c >+kill_OBJECTS = kill.$(OBJEXT) >+kill_LDADD = $(LDADD) >+kill_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+link_SOURCES = link.c >+link_OBJECTS = link.$(OBJEXT) >+link_LDADD = $(LDADD) >+link_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+ln_SOURCES = ln.c >+ln_OBJECTS = ln.$(OBJEXT) >+ln_LDADD = $(LDADD) >+ln_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+logname_SOURCES = logname.c >+logname_OBJECTS = logname.$(OBJEXT) >+logname_LDADD = $(LDADD) >+logname_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_ls_OBJECTS = ls.$(OBJEXT) ls-ls.$(OBJEXT) >+ls_OBJECTS = $(am_ls_OBJECTS) >+ls_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+am_md5sum_OBJECTS = md5sum.$(OBJEXT) md5.$(OBJEXT) >+md5sum_OBJECTS = $(am_md5sum_OBJECTS) >+md5sum_LDADD = $(LDADD) >+md5sum_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+mkdir_SOURCES = mkdir.c >+mkdir_OBJECTS = mkdir.$(OBJEXT) >+mkdir_LDADD = $(LDADD) >+mkdir_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+mkfifo_SOURCES = mkfifo.c >+mkfifo_OBJECTS = mkfifo.$(OBJEXT) >+mkfifo_LDADD = $(LDADD) >+mkfifo_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+mknod_SOURCES = mknod.c >+mknod_OBJECTS = mknod.$(OBJEXT) >+mknod_LDADD = $(LDADD) >+mknod_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_mv_OBJECTS = mv.$(OBJEXT) copy.$(OBJEXT) cp-hash.$(OBJEXT) \ >+ remove.$(OBJEXT) >+mv_OBJECTS = $(am_mv_OBJECTS) >+mv_LDADD = $(LDADD) >+mv_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+nice_SOURCES = nice.c >+nice_OBJECTS = nice.$(OBJEXT) >+nice_LDADD = $(LDADD) >+nice_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+nl_SOURCES = nl.c >+nl_OBJECTS = nl.$(OBJEXT) >+nl_LDADD = $(LDADD) >+nl_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+nohup_SOURCES = nohup.c >+nohup_OBJECTS = nohup.$(OBJEXT) >+nohup_LDADD = $(LDADD) >+nohup_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+od_SOURCES = od.c >+od_OBJECTS = od.$(OBJEXT) >+od_LDADD = $(LDADD) >+od_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+paste_SOURCES = paste.c >+paste_OBJECTS = paste.$(OBJEXT) >+paste_LDADD = $(LDADD) >+paste_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+pathchk_SOURCES = pathchk.c >+pathchk_OBJECTS = pathchk.$(OBJEXT) >+pathchk_LDADD = $(LDADD) >+pathchk_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+pinky_SOURCES = pinky.c >+pinky_OBJECTS = pinky.$(OBJEXT) >+pinky_LDADD = $(LDADD) >+pinky_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+pr_SOURCES = pr.c >+pr_OBJECTS = pr.$(OBJEXT) >+pr_LDADD = $(LDADD) >+pr_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+printenv_SOURCES = printenv.c >+printenv_OBJECTS = printenv.$(OBJEXT) >+printenv_LDADD = $(LDADD) >+printenv_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+printf_SOURCES = printf.c >+printf_OBJECTS = printf.$(OBJEXT) >+printf_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ >+ $(am__DEPENDENCIES_1) >+ptx_SOURCES = ptx.c >+ptx_OBJECTS = ptx.$(OBJEXT) >+ptx_LDADD = $(LDADD) >+ptx_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+pwd_SOURCES = pwd.c >+pwd_OBJECTS = pwd.$(OBJEXT) >+pwd_LDADD = $(LDADD) >+pwd_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+readlink_SOURCES = readlink.c >+readlink_OBJECTS = readlink.$(OBJEXT) >+readlink_LDADD = $(LDADD) >+readlink_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_rm_OBJECTS = rm.$(OBJEXT) remove.$(OBJEXT) >+rm_OBJECTS = $(am_rm_OBJECTS) >+rm_LDADD = $(LDADD) >+rm_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+rmdir_SOURCES = rmdir.c >+rmdir_OBJECTS = rmdir.$(OBJEXT) >+rmdir_LDADD = $(LDADD) >+rmdir_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+seq_SOURCES = seq.c >+seq_OBJECTS = seq.$(OBJEXT) >+seq_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+setuidgid_SOURCES = setuidgid.c >+setuidgid_OBJECTS = setuidgid.$(OBJEXT) >+setuidgid_LDADD = $(LDADD) >+setuidgid_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_sha1sum_OBJECTS = md5sum.$(OBJEXT) sha1sum.$(OBJEXT) >+sha1sum_OBJECTS = $(am_sha1sum_OBJECTS) >+sha1sum_LDADD = $(LDADD) >+sha1sum_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+shred_SOURCES = shred.c >+shred_OBJECTS = shred.$(OBJEXT) >+shred_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+sleep_SOURCES = sleep.c >+sleep_OBJECTS = sleep.$(OBJEXT) >+am__DEPENDENCIES_3 = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \ >+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \ >+ $(am__DEPENDENCIES_1) >+sleep_DEPENDENCIES = $(am__DEPENDENCIES_3) >+sort_SOURCES = sort.c >+sort_OBJECTS = sort.$(OBJEXT) >+sort_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+split_SOURCES = split.c >+split_OBJECTS = split.$(OBJEXT) >+split_LDADD = $(LDADD) >+split_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+stat_SOURCES = stat.c >+stat_OBJECTS = stat.$(OBJEXT) >+stat_LDADD = $(LDADD) >+stat_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+stty_SOURCES = stty.c >+stty_OBJECTS = stty.$(OBJEXT) >+stty_LDADD = $(LDADD) >+stty_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+su_SOURCES = su.c >+su_OBJECTS = su.$(OBJEXT) >+su_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+sum_SOURCES = sum.c >+sum_OBJECTS = sum.$(OBJEXT) >+sum_LDADD = $(LDADD) >+sum_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+sync_SOURCES = sync.c >+sync_OBJECTS = sync.$(OBJEXT) >+sync_LDADD = $(LDADD) >+sync_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+tac_SOURCES = tac.c >+tac_OBJECTS = tac.$(OBJEXT) >+tac_LDADD = $(LDADD) >+tac_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+tail_SOURCES = tail.c >+tail_OBJECTS = tail.$(OBJEXT) >+tail_DEPENDENCIES = $(am__DEPENDENCIES_3) >+tee_SOURCES = tee.c >+tee_OBJECTS = tee.$(OBJEXT) >+tee_LDADD = $(LDADD) >+tee_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+test_SOURCES = test.c >+test_OBJECTS = test.$(OBJEXT) >+test_LDADD = $(LDADD) >+test_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+touch_SOURCES = touch.c >+touch_OBJECTS = touch.$(OBJEXT) >+touch_LDADD = $(LDADD) >+touch_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+tr_SOURCES = tr.c >+tr_OBJECTS = tr.$(OBJEXT) >+tr_LDADD = $(LDADD) >+tr_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+true_SOURCES = true.c >+true_OBJECTS = true.$(OBJEXT) >+true_LDADD = $(LDADD) >+true_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+tsort_SOURCES = tsort.c >+tsort_OBJECTS = tsort.$(OBJEXT) >+tsort_LDADD = $(LDADD) >+tsort_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+tty_SOURCES = tty.c >+tty_OBJECTS = tty.$(OBJEXT) >+tty_LDADD = $(LDADD) >+tty_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+uname_SOURCES = uname.c >+uname_OBJECTS = uname.$(OBJEXT) >+uname_LDADD = $(LDADD) >+uname_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+unexpand_SOURCES = unexpand.c >+unexpand_OBJECTS = unexpand.$(OBJEXT) >+unexpand_LDADD = $(LDADD) >+unexpand_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+uniq_SOURCES = uniq.c >+uniq_OBJECTS = uniq.$(OBJEXT) >+uniq_LDADD = $(LDADD) >+uniq_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+unlink_SOURCES = unlink.c >+unlink_OBJECTS = unlink.$(OBJEXT) >+unlink_LDADD = $(LDADD) >+unlink_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+uptime_SOURCES = uptime.c >+uptime_OBJECTS = uptime.$(OBJEXT) >+uptime_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+users_SOURCES = users.c >+users_OBJECTS = users.$(OBJEXT) >+users_LDADD = $(LDADD) >+users_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+am_vdir_OBJECTS = ls.$(OBJEXT) ls-vdir.$(OBJEXT) >+vdir_OBJECTS = $(am_vdir_OBJECTS) >+vdir_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) >+wc_SOURCES = wc.c >+wc_OBJECTS = wc.$(OBJEXT) >+wc_LDADD = $(LDADD) >+wc_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+who_SOURCES = who.c >+who_OBJECTS = who.$(OBJEXT) >+who_LDADD = $(LDADD) >+who_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+whoami_SOURCES = whoami.c >+whoami_OBJECTS = whoami.$(OBJEXT) >+whoami_LDADD = $(LDADD) >+whoami_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+yes_SOURCES = yes.c >+yes_OBJECTS = yes.$(OBJEXT) >+yes_LDADD = $(LDADD) >+yes_DEPENDENCIES = ../lib/libfetish.a $(am__DEPENDENCIES_1) \ >+ ../lib/libfetish.a >+binSCRIPT_INSTALL = $(INSTALL_SCRIPT) >+SCRIPTS = $(bin_SCRIPTS) >+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir) >+depcomp = $(SHELL) $(top_srcdir)/config/depcomp >+am__depfiles_maybe = depfiles >+@AMDEP_TRUE@DEP_FILES = ./$(DEPDIR)/basename.Po ./$(DEPDIR)/cat.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/chgrp.Po ./$(DEPDIR)/chmod.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/chown-core.Po ./$(DEPDIR)/chown.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/chroot.Po ./$(DEPDIR)/cksum.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/comm.Po ./$(DEPDIR)/copy.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/cp-hash.Po ./$(DEPDIR)/cp.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/csplit.Po ./$(DEPDIR)/cut.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/date.Po ./$(DEPDIR)/dd.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/df.Po ./$(DEPDIR)/dircolors.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/dirname.Po ./$(DEPDIR)/du.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/echo.Po ./$(DEPDIR)/env.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/expand.Po ./$(DEPDIR)/expr.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/factor.Po ./$(DEPDIR)/false.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/fmt.Po ./$(DEPDIR)/fold.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/head.Po ./$(DEPDIR)/hostid.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/hostname.Po ./$(DEPDIR)/id.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/install.Po ./$(DEPDIR)/join.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/kill.Po ./$(DEPDIR)/lbracket.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/link.Po ./$(DEPDIR)/ln.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/logname.Po ./$(DEPDIR)/ls-dir.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/ls-ls.Po ./$(DEPDIR)/ls-vdir.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/ls.Po ./$(DEPDIR)/md5.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/md5sum.Po ./$(DEPDIR)/mkdir.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/mkfifo.Po ./$(DEPDIR)/mknod.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/mv.Po ./$(DEPDIR)/nice.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/nl.Po ./$(DEPDIR)/nohup.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/od.Po ./$(DEPDIR)/paste.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/pathchk.Po ./$(DEPDIR)/pinky.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/pr.Po ./$(DEPDIR)/printenv.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/printf.Po ./$(DEPDIR)/ptx.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/pwd.Po ./$(DEPDIR)/readlink.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/remove.Po ./$(DEPDIR)/rm.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/rmdir.Po ./$(DEPDIR)/seq.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/setuidgid.Po ./$(DEPDIR)/sha1sum.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/shred.Po ./$(DEPDIR)/sleep.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/sort.Po ./$(DEPDIR)/split.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/stat.Po ./$(DEPDIR)/stty.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/su.Po ./$(DEPDIR)/sum.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/sync.Po ./$(DEPDIR)/tac.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/tail.Po ./$(DEPDIR)/tee.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/test.Po ./$(DEPDIR)/touch.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/tr.Po ./$(DEPDIR)/true.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/tsort.Po ./$(DEPDIR)/tty.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/uname.Po ./$(DEPDIR)/unexpand.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/uniq.Po ./$(DEPDIR)/unlink.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/uptime.Po ./$(DEPDIR)/users.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/wc.Po ./$(DEPDIR)/who.Po \ >+@AMDEP_TRUE@ ./$(DEPDIR)/whoami.Po ./$(DEPDIR)/yes.Po >+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ >+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) >+CCLD = $(CC) >+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ >+SOURCES = $(__SOURCES) basename.c cat.c $(chgrp_SOURCES) chmod.c \ >+ $(chown_SOURCES) chroot.c cksum.c comm.c $(cp_SOURCES) \ >+ csplit.c cut.c date.c dd.c df.c $(dir_SOURCES) dircolors.c \ >+ dirname.c du.c echo.c env.c expand.c expr.c factor.c false.c \ >+ fmt.c fold.c $(ginstall_SOURCES) head.c hostid.c hostname.c \ >+ id.c join.c kill.c link.c ln.c logname.c $(ls_SOURCES) \ >+ $(md5sum_SOURCES) mkdir.c mkfifo.c mknod.c $(mv_SOURCES) \ >+ nice.c nl.c nohup.c od.c paste.c pathchk.c pinky.c pr.c \ >+ printenv.c printf.c ptx.c pwd.c readlink.c $(rm_SOURCES) \ >+ rmdir.c seq.c setuidgid.c $(sha1sum_SOURCES) shred.c sleep.c \ >+ sort.c split.c stat.c stty.c su.c sum.c sync.c tac.c tail.c \ >+ tee.c test.c touch.c tr.c true.c tsort.c tty.c uname.c \ >+ unexpand.c uniq.c unlink.c uptime.c users.c $(vdir_SOURCES) \ >+ wc.c who.c whoami.c yes.c >+DIST_SOURCES = $(__SOURCES) basename.c cat.c $(chgrp_SOURCES) chmod.c \ >+ $(chown_SOURCES) chroot.c cksum.c comm.c $(cp_SOURCES) \ >+ csplit.c cut.c date.c dd.c df.c $(dir_SOURCES) dircolors.c \ >+ dirname.c du.c echo.c env.c expand.c expr.c factor.c false.c \ >+ fmt.c fold.c $(ginstall_SOURCES) head.c hostid.c hostname.c \ >+ id.c join.c kill.c link.c ln.c logname.c $(ls_SOURCES) \ >+ $(md5sum_SOURCES) mkdir.c mkfifo.c mknod.c $(mv_SOURCES) \ >+ nice.c nl.c nohup.c od.c paste.c pathchk.c pinky.c pr.c \ >+ printenv.c printf.c ptx.c pwd.c readlink.c $(rm_SOURCES) \ >+ rmdir.c seq.c setuidgid.c $(sha1sum_SOURCES) shred.c sleep.c \ >+ sort.c split.c stat.c stty.c su.c sum.c sync.c tac.c tail.c \ >+ tee.c test.c touch.c tr.c true.c tsort.c tty.c uname.c \ >+ unexpand.c uniq.c unlink.c uptime.c users.c $(vdir_SOURCES) \ >+ wc.c who.c whoami.c yes.c >+HEADERS = $(noinst_HEADERS) >+ETAGS = etags >+CTAGS = ctags >+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) >+ >+# Use `ginstall' in the definition of PROGRAMS and in dependencies to avoid >+# confusion with the `install' target. The install rule transforms `ginstall' >+# to install before applying any user-specified name transformations. >+transform = s/ginstall/install/; @program_transform_name@ >+ACLOCAL = @ACLOCAL@ >+ALLOCA = @ALLOCA@ >+ALLOCA_H = @ALLOCA_H@ >+AMDEP_FALSE = @AMDEP_FALSE@ >+AMDEP_TRUE = @AMDEP_TRUE@ >+AMTAR = @AMTAR@ >+AUTOCONF = @AUTOCONF@ >+AUTOHEADER = @AUTOHEADER@ >+AUTOMAKE = @AUTOMAKE@ >+AWK = @AWK@ >+CC = @CC@ >+CCDEPMODE = @CCDEPMODE@ >+CFLAGS = @CFLAGS@ >+CPP = @CPP@ >+CPPFLAGS = @CPPFLAGS@ >+CYGPATH_W = @CYGPATH_W@ >+DEFAULT_POSIX2_VERSION = @DEFAULT_POSIX2_VERSION@ >+DEFS = @DEFS@ >+DEPDIR = @DEPDIR@ >+DF_PROG = @DF_PROG@ >+ECHO_C = @ECHO_C@ >+ECHO_N = @ECHO_N@ >+ECHO_T = @ECHO_T@ >+EGREP = @EGREP@ >+EXEEXT = @EXEEXT@ >+FESETROUND_LIBM = @FESETROUND_LIBM@ >+FNMATCH_H = @FNMATCH_H@ >+GETLOADAVG_LIBS = @GETLOADAVG_LIBS@ >+GLIBC21 = @GLIBC21@ >+GMSGFMT = @GMSGFMT@ >+GNU_PACKAGE = @GNU_PACKAGE@ >+HAVE__BOOL = @HAVE__BOOL@ >+HELP2MAN = @HELP2MAN@ >+INSTALL_DATA = @INSTALL_DATA@ >+INSTALL_PROGRAM = @INSTALL_PROGRAM@ >+INSTALL_SCRIPT = @INSTALL_SCRIPT@ >+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ >+INTLLIBS = @INTLLIBS@ >+KMEM_GROUP = @KMEM_GROUP@ >+LDFLAGS = @LDFLAGS@ >+LIBICONV = @LIBICONV@ >+LIBINTL = @LIBINTL@ >+LIBOBJS = @LIBOBJS@ >+LIBS = @LIBS@ >+LIB_CLOCK_GETTIME = @LIB_CLOCK_GETTIME@ >+LIB_CRYPT = @LIB_CRYPT@ >+LIB_NANOSLEEP = @LIB_NANOSLEEP@ >+LN_S = @LN_S@ >+LTLIBICONV = @LTLIBICONV@ >+LTLIBINTL = @LTLIBINTL@ >+LTLIBOBJS = @LTLIBOBJS@ >+MAKEINFO = @MAKEINFO@ >+MAN = @MAN@ >+MKINSTALLDIRS = @MKINSTALLDIRS@ >+MSGFMT = @MSGFMT@ >+MSGMERGE = @MSGMERGE@ >+NEED_SETGID = @NEED_SETGID@ >+OBJEXT = @OBJEXT@ >+OPTIONAL_BIN_PROGS = @OPTIONAL_BIN_PROGS@ >+PACKAGE = @PACKAGE@ >+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ >+PACKAGE_NAME = @PACKAGE_NAME@ >+PACKAGE_STRING = @PACKAGE_STRING@ >+PACKAGE_TARNAME = @PACKAGE_TARNAME@ >+PACKAGE_VERSION = @PACKAGE_VERSION@ >+PATH_SEPARATOR = @PATH_SEPARATOR@ >+PERL = @PERL@ >+POSUB = @POSUB@ >+POW_LIB = @POW_LIB@ >+RANLIB = @RANLIB@ >+SEQ_LIBM = @SEQ_LIBM@ >+SET_MAKE = @SET_MAKE@ >+SHELL = @SHELL@ >+SQRT_LIBM = @SQRT_LIBM@ >+STDBOOL_H = @STDBOOL_H@ >+STRIP = @STRIP@ >+U = @U@ >+USE_NLS = @USE_NLS@ >+VERSION = @VERSION@ >+XGETTEXT = @XGETTEXT@ >+YACC = @YACC@ >+ac_ct_CC = @ac_ct_CC@ >+ac_ct_RANLIB = @ac_ct_RANLIB@ >+ac_ct_STRIP = @ac_ct_STRIP@ >+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ >+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ >+am__include = @am__include@ >+am__leading_dot = @am__leading_dot@ >+am__quote = @am__quote@ >+bindir = @bindir@ >+build = @build@ >+build_alias = @build_alias@ >+build_cpu = @build_cpu@ >+build_os = @build_os@ >+build_vendor = @build_vendor@ >+datadir = @datadir@ >+exec_prefix = @exec_prefix@ >+host = @host@ >+host_alias = @host_alias@ >+host_cpu = @host_cpu@ >+host_os = @host_os@ >+host_vendor = @host_vendor@ >+includedir = @includedir@ >+infodir = @infodir@ >+install_sh = @install_sh@ >+libdir = @libdir@ >+libexecdir = @libexecdir@ >+localstatedir = @localstatedir@ >+mandir = @mandir@ >+mkdir_p = @mkdir_p@ >+oldincludedir = @oldincludedir@ >+prefix = @prefix@ >+program_transform_name = @program_transform_name@ >+sbindir = @sbindir@ >+sharedstatedir = @sharedstatedir@ >+sysconfdir = @sysconfdir@ >+target_alias = @target_alias@ >+bin_SCRIPTS = groups >+noinst_HEADERS = \ >+ system.h checksum.h copy.h cp-hash.h ls.h dircolors.h remove.h \ >+ chown-core.h fs.h \ >+ wheel.h wheel-size.h >+ >+EXTRA_DIST = dcgen dircolors.hin tac-pipe.c \ >+ groups.sh wheel-gen.pl extract-magic >+ >+CLEANFILES = $(SCRIPTS) su >+AM_CPPFLAGS = -I.. -I$(srcdir) -I$(top_srcdir)/lib -I../lib >+ >+# Sometimes, the expansion of $(LIBINTL) includes -lc which may >+# include modules defining variables like `optind', so libfetish.a >+# must precede $(LIBINTL) in order to ensure we use GNU getopt. >+# But libfetish.a must also follow $(LIBINTL), since libintl uses >+# replacement functions defined in libfetish.a. >+LDADD = ../lib/libfetish.a $(LIBINTL) ../lib/libfetish.a >+dir_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) >+ls_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) >+shred_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) >+vdir_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) >+sort_LDADD = $(LDADD) $(POW_LIB) >+ >+# for clock_gettime >+date_LDADD = $(LDADD) $(LIB_CLOCK_GETTIME) >+ >+# For sqrt >+factor_LDADD = $(LDADD) $(SQRT_LIBM) >+ >+# If necessary, add -lm to resolve use of pow in lib/strtod.c. >+# If necessary, add -liconv to resolve use of iconv in lib/unicodeio.c. >+printf_LDADD = $(LDADD) $(POW_LIB) $(LIBICONV) >+ >+# If necessary, add -lm to resolve use of floor, rint, modf. >+seq_LDADD = $(LDADD) $(SEQ_LIBM) >+ >+# If necessary, add -lm to resolve the `pow' reference in lib/strtod.c >+# or for the fesetround reference in programs using nanosec.c. >+nanosec_libs = \ >+ $(LDADD) $(FESETROUND_LIBM) $(POW_LIB) $(LIB_CLOCK_GETTIME) $(LIB_NANOSLEEP) >+ >+sleep_LDADD = $(nanosec_libs) >+tail_LDADD = $(nanosec_libs) >+uptime_LDADD = $(LDADD) $(GETLOADAVG_LIBS) >+su_LDADD = $(LDADD) $(LIB_CRYPT) >+SUFFIXES = .sh >+installed_su = $(DESTDIR)$(bindir)/`echo su|sed '$(transform)'` >+setuid_root_mode = a=rx,u+s >+INSTALL_SU = \ >+ p=su; \ >+ echo " $(INSTALL_PROGRAM) $$p $(installed_su)"; \ >+ $(INSTALL_PROGRAM) $$p $(installed_su); \ >+ echo " chown root $(installed_su)"; \ >+ chown root $(installed_su); \ >+ echo " chmod $(setuid_root_mode) $(installed_su)"; \ >+ chmod $(setuid_root_mode) $(installed_su) >+ >+ginstall_SOURCES = install.c copy.c cp-hash.c >+ >+# This is for the '[' program. Automake transliterates '[' to '_'. >+__SOURCES = lbracket.c >+cp_SOURCES = cp.c copy.c cp-hash.c >+dir_SOURCES = ls.c ls-dir.c >+vdir_SOURCES = ls.c ls-vdir.c >+ls_SOURCES = ls.c ls-ls.c >+chown_SOURCES = chown.c chown-core.c >+chgrp_SOURCES = chgrp.c chown-core.c >+mv_SOURCES = mv.c copy.c cp-hash.c remove.c >+rm_SOURCES = rm.c remove.c >+md5sum_SOURCES = md5sum.c md5.c >+sha1sum_SOURCES = md5sum.c sha1sum.c >+editpl = sed -e 's,@''PERL''@,$(PERL),g' >+localedir = $(datadir)/locale >+BUILT_SOURCES = localedir.h dircolors.h wheel-size.h wheel.h false.c fs.h >+DISTCLEANFILES = localedir.h >+wheel_size = 5 >+ >+# false exits nonzero even with --help or --version. >+# test doesn't support --help or --version. >+# Tell automake to exempt then from that installcheck test. >+AM_INSTALLCHECK_STD_OPTIONS_EXEMPT = false test >+MAINTAINERCLEANFILES = $(BUILT_SOURCES) >+all_programs = \ >+ $(bin_PROGRAMS) \ >+ $(bin_SCRIPTS) \ >+ $(EXTRA_PROGRAMS) >+ >+ >+# Sort in traditional ASCII order, regardless of the current locale; >+# otherwise we may get into trouble with distinct strings that the >+# current locale considers to be equal. >+ASSORT = LC_ALL=C sort >+pm = progs-makefile >+pr = progs-readme >+ >+# Extract the list of authors from each file. >+sed_filter = s/^ *//;s/N_ (//;s/^"//;s/")*$$// >+# Sometimes the string is on the same line as the #define... >+s1 = '/^\#define AUTHORS \([^\\]\)/{;s//\1/;$(sed_filter);p;q;}' >+# Sometimes the string is on the backslash-continued line after the #define. >+s2 = '/^\#define AUTHORS \\\\/{;n;$(sed_filter);p;q;}' >+all: $(BUILT_SOURCES) >+ $(MAKE) $(AM_MAKEFLAGS) all-am >+ >+.SUFFIXES: >+.SUFFIXES: .sh .c .o .obj >+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) >+ @for dep in $?; do \ >+ case '$(am__configure_deps)' in \ >+ *$$dep*) \ >+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ >+ && exit 0; \ >+ exit 1;; \ >+ esac; \ >+ done; \ >+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \ >+ cd $(top_srcdir) && \ >+ $(AUTOMAKE) --gnits src/Makefile >+.PRECIOUS: Makefile >+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status >+ @case '$?' in \ >+ *config.status*) \ >+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ >+ *) \ >+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ >+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ >+ esac; >+ >+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) >+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >+ >+$(top_srcdir)/configure: $(am__configure_deps) >+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >+$(ACLOCAL_M4): $(am__aclocal_m4_deps) >+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh >+install-binPROGRAMS: $(bin_PROGRAMS) >+ @$(NORMAL_INSTALL) >+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" >+ @list='$(bin_PROGRAMS)'; for p in $$list; do \ >+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ >+ if test -f $$p \ >+ ; then \ >+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ >+ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ >+ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ >+ else :; fi; \ >+ done >+ >+uninstall-binPROGRAMS: >+ @$(NORMAL_UNINSTALL) >+ @list='$(bin_PROGRAMS)'; for p in $$list; do \ >+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ >+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ >+ rm -f "$(DESTDIR)$(bindir)/$$f"; \ >+ done >+ >+clean-binPROGRAMS: >+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) > /dev/null 2>&1 || /bin/rm -f $(bin_PROGRAMS) >+ >+installcheck-binPROGRAMS: $(bin_PROGRAMS) >+ bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \ >+ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ >+ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ >+ esac; \ >+ f=`echo "$$p" | \ >+ sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ >+ for opt in --help --version; do \ >+ if "$(DESTDIR)$(bindir)/$$f" $$opt > c$${pid}_.out 2> c$${pid}_.err \ >+ && test -n "`cat c$${pid}_.out`" \ >+ && test -z "`cat c$${pid}_.err`"; then :; \ >+ else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \ >+ done; \ >+ done; rm -f c$${pid}_.???; exit $$bad >+ >+clean-noinstPROGRAMS: >+ -test -z "$(noinst_PROGRAMS)" || rm -f $(noinst_PROGRAMS) >+[$(EXEEXT): $(__OBJECTS) $(__DEPENDENCIES) >+ @rm -f [$(EXEEXT) >+ $(LINK) $(__LDFLAGS) $(__OBJECTS) $(__LDADD) $(LIBS) >+basename$(EXEEXT): $(basename_OBJECTS) $(basename_DEPENDENCIES) >+ @rm -f basename$(EXEEXT) >+ $(LINK) $(basename_LDFLAGS) $(basename_OBJECTS) $(basename_LDADD) $(LIBS) >+cat$(EXEEXT): $(cat_OBJECTS) $(cat_DEPENDENCIES) >+ @rm -f cat$(EXEEXT) >+ $(LINK) $(cat_LDFLAGS) $(cat_OBJECTS) $(cat_LDADD) $(LIBS) >+chgrp$(EXEEXT): $(chgrp_OBJECTS) $(chgrp_DEPENDENCIES) >+ @rm -f chgrp$(EXEEXT) >+ $(LINK) $(chgrp_LDFLAGS) $(chgrp_OBJECTS) $(chgrp_LDADD) $(LIBS) >+chmod$(EXEEXT): $(chmod_OBJECTS) $(chmod_DEPENDENCIES) >+ @rm -f chmod$(EXEEXT) >+ $(LINK) $(chmod_LDFLAGS) $(chmod_OBJECTS) $(chmod_LDADD) $(LIBS) >+chown$(EXEEXT): $(chown_OBJECTS) $(chown_DEPENDENCIES) >+ @rm -f chown$(EXEEXT) >+ $(LINK) $(chown_LDFLAGS) $(chown_OBJECTS) $(chown_LDADD) $(LIBS) >+chroot$(EXEEXT): $(chroot_OBJECTS) $(chroot_DEPENDENCIES) >+ @rm -f chroot$(EXEEXT) >+ $(LINK) $(chroot_LDFLAGS) $(chroot_OBJECTS) $(chroot_LDADD) $(LIBS) >+cksum$(EXEEXT): $(cksum_OBJECTS) $(cksum_DEPENDENCIES) >+ @rm -f cksum$(EXEEXT) >+ $(LINK) $(cksum_LDFLAGS) $(cksum_OBJECTS) $(cksum_LDADD) $(LIBS) >+comm$(EXEEXT): $(comm_OBJECTS) $(comm_DEPENDENCIES) >+ @rm -f comm$(EXEEXT) >+ $(LINK) $(comm_LDFLAGS) $(comm_OBJECTS) $(comm_LDADD) $(LIBS) >+cp$(EXEEXT): $(cp_OBJECTS) $(cp_DEPENDENCIES) >+ @rm -f cp$(EXEEXT) >+ $(LINK) $(cp_LDFLAGS) $(cp_OBJECTS) $(cp_LDADD) $(LIBS) >+csplit$(EXEEXT): $(csplit_OBJECTS) $(csplit_DEPENDENCIES) >+ @rm -f csplit$(EXEEXT) >+ $(LINK) $(csplit_LDFLAGS) $(csplit_OBJECTS) $(csplit_LDADD) $(LIBS) >+cut$(EXEEXT): $(cut_OBJECTS) $(cut_DEPENDENCIES) >+ @rm -f cut$(EXEEXT) >+ $(LINK) $(cut_LDFLAGS) $(cut_OBJECTS) $(cut_LDADD) $(LIBS) >+date$(EXEEXT): $(date_OBJECTS) $(date_DEPENDENCIES) >+ @rm -f date$(EXEEXT) >+ $(LINK) $(date_LDFLAGS) $(date_OBJECTS) $(date_LDADD) $(LIBS) >+dd$(EXEEXT): $(dd_OBJECTS) $(dd_DEPENDENCIES) >+ @rm -f dd$(EXEEXT) >+ $(LINK) $(dd_LDFLAGS) $(dd_OBJECTS) $(dd_LDADD) $(LIBS) >+df$(EXEEXT): $(df_OBJECTS) $(df_DEPENDENCIES) >+ @rm -f df$(EXEEXT) >+ $(LINK) $(df_LDFLAGS) $(df_OBJECTS) $(df_LDADD) $(LIBS) >+dir$(EXEEXT): $(dir_OBJECTS) $(dir_DEPENDENCIES) >+ @rm -f dir$(EXEEXT) >+ $(LINK) $(dir_LDFLAGS) $(dir_OBJECTS) $(dir_LDADD) $(LIBS) >+dircolors$(EXEEXT): $(dircolors_OBJECTS) $(dircolors_DEPENDENCIES) >+ @rm -f dircolors$(EXEEXT) >+ $(LINK) $(dircolors_LDFLAGS) $(dircolors_OBJECTS) $(dircolors_LDADD) $(LIBS) >+dirname$(EXEEXT): $(dirname_OBJECTS) $(dirname_DEPENDENCIES) >+ @rm -f dirname$(EXEEXT) >+ $(LINK) $(dirname_LDFLAGS) $(dirname_OBJECTS) $(dirname_LDADD) $(LIBS) >+du$(EXEEXT): $(du_OBJECTS) $(du_DEPENDENCIES) >+ @rm -f du$(EXEEXT) >+ $(LINK) $(du_LDFLAGS) $(du_OBJECTS) $(du_LDADD) $(LIBS) >+echo$(EXEEXT): $(echo_OBJECTS) $(echo_DEPENDENCIES) >+ @rm -f echo$(EXEEXT) >+ $(LINK) $(echo_LDFLAGS) $(echo_OBJECTS) $(echo_LDADD) $(LIBS) >+env$(EXEEXT): $(env_OBJECTS) $(env_DEPENDENCIES) >+ @rm -f env$(EXEEXT) >+ $(LINK) $(env_LDFLAGS) $(env_OBJECTS) $(env_LDADD) $(LIBS) >+expand$(EXEEXT): $(expand_OBJECTS) $(expand_DEPENDENCIES) >+ @rm -f expand$(EXEEXT) >+ $(LINK) $(expand_LDFLAGS) $(expand_OBJECTS) $(expand_LDADD) $(LIBS) >+expr$(EXEEXT): $(expr_OBJECTS) $(expr_DEPENDENCIES) >+ @rm -f expr$(EXEEXT) >+ $(LINK) $(expr_LDFLAGS) $(expr_OBJECTS) $(expr_LDADD) $(LIBS) >+factor$(EXEEXT): $(factor_OBJECTS) $(factor_DEPENDENCIES) >+ @rm -f factor$(EXEEXT) >+ $(LINK) $(factor_LDFLAGS) $(factor_OBJECTS) $(factor_LDADD) $(LIBS) >+false$(EXEEXT): $(false_OBJECTS) $(false_DEPENDENCIES) >+ @rm -f false$(EXEEXT) >+ $(LINK) $(false_LDFLAGS) $(false_OBJECTS) $(false_LDADD) $(LIBS) >+fmt$(EXEEXT): $(fmt_OBJECTS) $(fmt_DEPENDENCIES) >+ @rm -f fmt$(EXEEXT) >+ $(LINK) $(fmt_LDFLAGS) $(fmt_OBJECTS) $(fmt_LDADD) $(LIBS) >+fold$(EXEEXT): $(fold_OBJECTS) $(fold_DEPENDENCIES) >+ @rm -f fold$(EXEEXT) >+ $(LINK) $(fold_LDFLAGS) $(fold_OBJECTS) $(fold_LDADD) $(LIBS) >+ginstall$(EXEEXT): $(ginstall_OBJECTS) $(ginstall_DEPENDENCIES) >+ @rm -f ginstall$(EXEEXT) >+ $(LINK) $(ginstall_LDFLAGS) $(ginstall_OBJECTS) $(ginstall_LDADD) $(LIBS) >+head$(EXEEXT): $(head_OBJECTS) $(head_DEPENDENCIES) >+ @rm -f head$(EXEEXT) >+ $(LINK) $(head_LDFLAGS) $(head_OBJECTS) $(head_LDADD) $(LIBS) >+hostid$(EXEEXT): $(hostid_OBJECTS) $(hostid_DEPENDENCIES) >+ @rm -f hostid$(EXEEXT) >+ $(LINK) $(hostid_LDFLAGS) $(hostid_OBJECTS) $(hostid_LDADD) $(LIBS) >+hostname$(EXEEXT): $(hostname_OBJECTS) $(hostname_DEPENDENCIES) >+ @rm -f hostname$(EXEEXT) >+ $(LINK) $(hostname_LDFLAGS) $(hostname_OBJECTS) $(hostname_LDADD) $(LIBS) >+id$(EXEEXT): $(id_OBJECTS) $(id_DEPENDENCIES) >+ @rm -f id$(EXEEXT) >+ $(LINK) $(id_LDFLAGS) $(id_OBJECTS) $(id_LDADD) $(LIBS) >+join$(EXEEXT): $(join_OBJECTS) $(join_DEPENDENCIES) >+ @rm -f join$(EXEEXT) >+ $(LINK) $(join_LDFLAGS) $(join_OBJECTS) $(join_LDADD) $(LIBS) >+kill$(EXEEXT): $(kill_OBJECTS) $(kill_DEPENDENCIES) >+ @rm -f kill$(EXEEXT) >+ $(LINK) $(kill_LDFLAGS) $(kill_OBJECTS) $(kill_LDADD) $(LIBS) >+link$(EXEEXT): $(link_OBJECTS) $(link_DEPENDENCIES) >+ @rm -f link$(EXEEXT) >+ $(LINK) $(link_LDFLAGS) $(link_OBJECTS) $(link_LDADD) $(LIBS) >+ln$(EXEEXT): $(ln_OBJECTS) $(ln_DEPENDENCIES) >+ @rm -f ln$(EXEEXT) >+ $(LINK) $(ln_LDFLAGS) $(ln_OBJECTS) $(ln_LDADD) $(LIBS) >+logname$(EXEEXT): $(logname_OBJECTS) $(logname_DEPENDENCIES) >+ @rm -f logname$(EXEEXT) >+ $(LINK) $(logname_LDFLAGS) $(logname_OBJECTS) $(logname_LDADD) $(LIBS) >+ls$(EXEEXT): $(ls_OBJECTS) $(ls_DEPENDENCIES) >+ @rm -f ls$(EXEEXT) >+ $(LINK) $(ls_LDFLAGS) $(ls_OBJECTS) $(ls_LDADD) $(LIBS) >+md5sum$(EXEEXT): $(md5sum_OBJECTS) $(md5sum_DEPENDENCIES) >+ @rm -f md5sum$(EXEEXT) >+ $(LINK) $(md5sum_LDFLAGS) $(md5sum_OBJECTS) $(md5sum_LDADD) $(LIBS) >+mkdir$(EXEEXT): $(mkdir_OBJECTS) $(mkdir_DEPENDENCIES) >+ @rm -f mkdir$(EXEEXT) >+ $(LINK) $(mkdir_LDFLAGS) $(mkdir_OBJECTS) $(mkdir_LDADD) $(LIBS) >+mkfifo$(EXEEXT): $(mkfifo_OBJECTS) $(mkfifo_DEPENDENCIES) >+ @rm -f mkfifo$(EXEEXT) >+ $(LINK) $(mkfifo_LDFLAGS) $(mkfifo_OBJECTS) $(mkfifo_LDADD) $(LIBS) >+mknod$(EXEEXT): $(mknod_OBJECTS) $(mknod_DEPENDENCIES) >+ @rm -f mknod$(EXEEXT) >+ $(LINK) $(mknod_LDFLAGS) $(mknod_OBJECTS) $(mknod_LDADD) $(LIBS) >+mv$(EXEEXT): $(mv_OBJECTS) $(mv_DEPENDENCIES) >+ @rm -f mv$(EXEEXT) >+ $(LINK) $(mv_LDFLAGS) $(mv_OBJECTS) $(mv_LDADD) $(LIBS) >+nice$(EXEEXT): $(nice_OBJECTS) $(nice_DEPENDENCIES) >+ @rm -f nice$(EXEEXT) >+ $(LINK) $(nice_LDFLAGS) $(nice_OBJECTS) $(nice_LDADD) $(LIBS) >+nl$(EXEEXT): $(nl_OBJECTS) $(nl_DEPENDENCIES) >+ @rm -f nl$(EXEEXT) >+ $(LINK) $(nl_LDFLAGS) $(nl_OBJECTS) $(nl_LDADD) $(LIBS) >+nohup$(EXEEXT): $(nohup_OBJECTS) $(nohup_DEPENDENCIES) >+ @rm -f nohup$(EXEEXT) >+ $(LINK) $(nohup_LDFLAGS) $(nohup_OBJECTS) $(nohup_LDADD) $(LIBS) >+od$(EXEEXT): $(od_OBJECTS) $(od_DEPENDENCIES) >+ @rm -f od$(EXEEXT) >+ $(LINK) $(od_LDFLAGS) $(od_OBJECTS) $(od_LDADD) $(LIBS) >+paste$(EXEEXT): $(paste_OBJECTS) $(paste_DEPENDENCIES) >+ @rm -f paste$(EXEEXT) >+ $(LINK) $(paste_LDFLAGS) $(paste_OBJECTS) $(paste_LDADD) $(LIBS) >+pathchk$(EXEEXT): $(pathchk_OBJECTS) $(pathchk_DEPENDENCIES) >+ @rm -f pathchk$(EXEEXT) >+ $(LINK) $(pathchk_LDFLAGS) $(pathchk_OBJECTS) $(pathchk_LDADD) $(LIBS) >+pinky$(EXEEXT): $(pinky_OBJECTS) $(pinky_DEPENDENCIES) >+ @rm -f pinky$(EXEEXT) >+ $(LINK) $(pinky_LDFLAGS) $(pinky_OBJECTS) $(pinky_LDADD) $(LIBS) >+pr$(EXEEXT): $(pr_OBJECTS) $(pr_DEPENDENCIES) >+ @rm -f pr$(EXEEXT) >+ $(LINK) $(pr_LDFLAGS) $(pr_OBJECTS) $(pr_LDADD) $(LIBS) >+printenv$(EXEEXT): $(printenv_OBJECTS) $(printenv_DEPENDENCIES) >+ @rm -f printenv$(EXEEXT) >+ $(LINK) $(printenv_LDFLAGS) $(printenv_OBJECTS) $(printenv_LDADD) $(LIBS) >+printf$(EXEEXT): $(printf_OBJECTS) $(printf_DEPENDENCIES) >+ @rm -f printf$(EXEEXT) >+ $(LINK) $(printf_LDFLAGS) $(printf_OBJECTS) $(printf_LDADD) $(LIBS) >+ptx$(EXEEXT): $(ptx_OBJECTS) $(ptx_DEPENDENCIES) >+ @rm -f ptx$(EXEEXT) >+ $(LINK) $(ptx_LDFLAGS) $(ptx_OBJECTS) $(ptx_LDADD) $(LIBS) >+pwd$(EXEEXT): $(pwd_OBJECTS) $(pwd_DEPENDENCIES) >+ @rm -f pwd$(EXEEXT) >+ $(LINK) $(pwd_LDFLAGS) $(pwd_OBJECTS) $(pwd_LDADD) $(LIBS) >+readlink$(EXEEXT): $(readlink_OBJECTS) $(readlink_DEPENDENCIES) >+ @rm -f readlink$(EXEEXT) >+ $(LINK) $(readlink_LDFLAGS) $(readlink_OBJECTS) $(readlink_LDADD) $(LIBS) >+rm$(EXEEXT): $(rm_OBJECTS) $(rm_DEPENDENCIES) >+ @rm -f rm$(EXEEXT) >+ $(LINK) $(rm_LDFLAGS) $(rm_OBJECTS) $(rm_LDADD) $(LIBS) >+rmdir$(EXEEXT): $(rmdir_OBJECTS) $(rmdir_DEPENDENCIES) >+ @rm -f rmdir$(EXEEXT) >+ $(LINK) $(rmdir_LDFLAGS) $(rmdir_OBJECTS) $(rmdir_LDADD) $(LIBS) >+seq$(EXEEXT): $(seq_OBJECTS) $(seq_DEPENDENCIES) >+ @rm -f seq$(EXEEXT) >+ $(LINK) $(seq_LDFLAGS) $(seq_OBJECTS) $(seq_LDADD) $(LIBS) >+setuidgid$(EXEEXT): $(setuidgid_OBJECTS) $(setuidgid_DEPENDENCIES) >+ @rm -f setuidgid$(EXEEXT) >+ $(LINK) $(setuidgid_LDFLAGS) $(setuidgid_OBJECTS) $(setuidgid_LDADD) $(LIBS) >+sha1sum$(EXEEXT): $(sha1sum_OBJECTS) $(sha1sum_DEPENDENCIES) >+ @rm -f sha1sum$(EXEEXT) >+ $(LINK) $(sha1sum_LDFLAGS) $(sha1sum_OBJECTS) $(sha1sum_LDADD) $(LIBS) >+shred$(EXEEXT): $(shred_OBJECTS) $(shred_DEPENDENCIES) >+ @rm -f shred$(EXEEXT) >+ $(LINK) $(shred_LDFLAGS) $(shred_OBJECTS) $(shred_LDADD) $(LIBS) >+sleep$(EXEEXT): $(sleep_OBJECTS) $(sleep_DEPENDENCIES) >+ @rm -f sleep$(EXEEXT) >+ $(LINK) $(sleep_LDFLAGS) $(sleep_OBJECTS) $(sleep_LDADD) $(LIBS) >+sort$(EXEEXT): $(sort_OBJECTS) $(sort_DEPENDENCIES) >+ @rm -f sort$(EXEEXT) >+ $(LINK) $(sort_LDFLAGS) $(sort_OBJECTS) $(sort_LDADD) $(LIBS) >+split$(EXEEXT): $(split_OBJECTS) $(split_DEPENDENCIES) >+ @rm -f split$(EXEEXT) >+ $(LINK) $(split_LDFLAGS) $(split_OBJECTS) $(split_LDADD) $(LIBS) >+stat$(EXEEXT): $(stat_OBJECTS) $(stat_DEPENDENCIES) >+ @rm -f stat$(EXEEXT) >+ $(LINK) $(stat_LDFLAGS) $(stat_OBJECTS) $(stat_LDADD) $(LIBS) >+stty$(EXEEXT): $(stty_OBJECTS) $(stty_DEPENDENCIES) >+ @rm -f stty$(EXEEXT) >+ $(LINK) $(stty_LDFLAGS) $(stty_OBJECTS) $(stty_LDADD) $(LIBS) >+su$(EXEEXT): $(su_OBJECTS) $(su_DEPENDENCIES) >+ @rm -f su$(EXEEXT) >+ $(LINK) $(su_LDFLAGS) $(su_OBJECTS) $(su_LDADD) $(LIBS) >+sum$(EXEEXT): $(sum_OBJECTS) $(sum_DEPENDENCIES) >+ @rm -f sum$(EXEEXT) >+ $(LINK) $(sum_LDFLAGS) $(sum_OBJECTS) $(sum_LDADD) $(LIBS) >+sync$(EXEEXT): $(sync_OBJECTS) $(sync_DEPENDENCIES) >+ @rm -f sync$(EXEEXT) >+ $(LINK) $(sync_LDFLAGS) $(sync_OBJECTS) $(sync_LDADD) $(LIBS) >+tac$(EXEEXT): $(tac_OBJECTS) $(tac_DEPENDENCIES) >+ @rm -f tac$(EXEEXT) >+ $(LINK) $(tac_LDFLAGS) $(tac_OBJECTS) $(tac_LDADD) $(LIBS) >+tail$(EXEEXT): $(tail_OBJECTS) $(tail_DEPENDENCIES) >+ @rm -f tail$(EXEEXT) >+ $(LINK) $(tail_LDFLAGS) $(tail_OBJECTS) $(tail_LDADD) $(LIBS) >+tee$(EXEEXT): $(tee_OBJECTS) $(tee_DEPENDENCIES) >+ @rm -f tee$(EXEEXT) >+ $(LINK) $(tee_LDFLAGS) $(tee_OBJECTS) $(tee_LDADD) $(LIBS) >+test$(EXEEXT): $(test_OBJECTS) $(test_DEPENDENCIES) >+ @rm -f test$(EXEEXT) >+ $(LINK) $(test_LDFLAGS) $(test_OBJECTS) $(test_LDADD) $(LIBS) >+touch$(EXEEXT): $(touch_OBJECTS) $(touch_DEPENDENCIES) >+ @rm -f touch$(EXEEXT) >+ $(LINK) $(touch_LDFLAGS) $(touch_OBJECTS) $(touch_LDADD) $(LIBS) >+tr$(EXEEXT): $(tr_OBJECTS) $(tr_DEPENDENCIES) >+ @rm -f tr$(EXEEXT) >+ $(LINK) $(tr_LDFLAGS) $(tr_OBJECTS) $(tr_LDADD) $(LIBS) >+true$(EXEEXT): $(true_OBJECTS) $(true_DEPENDENCIES) >+ @rm -f true$(EXEEXT) >+ $(LINK) $(true_LDFLAGS) $(true_OBJECTS) $(true_LDADD) $(LIBS) >+tsort$(EXEEXT): $(tsort_OBJECTS) $(tsort_DEPENDENCIES) >+ @rm -f tsort$(EXEEXT) >+ $(LINK) $(tsort_LDFLAGS) $(tsort_OBJECTS) $(tsort_LDADD) $(LIBS) >+tty$(EXEEXT): $(tty_OBJECTS) $(tty_DEPENDENCIES) >+ @rm -f tty$(EXEEXT) >+ $(LINK) $(tty_LDFLAGS) $(tty_OBJECTS) $(tty_LDADD) $(LIBS) >+uname$(EXEEXT): $(uname_OBJECTS) $(uname_DEPENDENCIES) >+ @rm -f uname$(EXEEXT) >+ $(LINK) $(uname_LDFLAGS) $(uname_OBJECTS) $(uname_LDADD) $(LIBS) >+unexpand$(EXEEXT): $(unexpand_OBJECTS) $(unexpand_DEPENDENCIES) >+ @rm -f unexpand$(EXEEXT) >+ $(LINK) $(unexpand_LDFLAGS) $(unexpand_OBJECTS) $(unexpand_LDADD) $(LIBS) >+uniq$(EXEEXT): $(uniq_OBJECTS) $(uniq_DEPENDENCIES) >+ @rm -f uniq$(EXEEXT) >+ $(LINK) $(uniq_LDFLAGS) $(uniq_OBJECTS) $(uniq_LDADD) $(LIBS) >+unlink$(EXEEXT): $(unlink_OBJECTS) $(unlink_DEPENDENCIES) >+ @rm -f unlink$(EXEEXT) >+ $(LINK) $(unlink_LDFLAGS) $(unlink_OBJECTS) $(unlink_LDADD) $(LIBS) >+uptime$(EXEEXT): $(uptime_OBJECTS) $(uptime_DEPENDENCIES) >+ @rm -f uptime$(EXEEXT) >+ $(LINK) $(uptime_LDFLAGS) $(uptime_OBJECTS) $(uptime_LDADD) $(LIBS) >+users$(EXEEXT): $(users_OBJECTS) $(users_DEPENDENCIES) >+ @rm -f users$(EXEEXT) >+ $(LINK) $(users_LDFLAGS) $(users_OBJECTS) $(users_LDADD) $(LIBS) >+vdir$(EXEEXT): $(vdir_OBJECTS) $(vdir_DEPENDENCIES) >+ @rm -f vdir$(EXEEXT) >+ $(LINK) $(vdir_LDFLAGS) $(vdir_OBJECTS) $(vdir_LDADD) $(LIBS) >+wc$(EXEEXT): $(wc_OBJECTS) $(wc_DEPENDENCIES) >+ @rm -f wc$(EXEEXT) >+ $(LINK) $(wc_LDFLAGS) $(wc_OBJECTS) $(wc_LDADD) $(LIBS) >+who$(EXEEXT): $(who_OBJECTS) $(who_DEPENDENCIES) >+ @rm -f who$(EXEEXT) >+ $(LINK) $(who_LDFLAGS) $(who_OBJECTS) $(who_LDADD) $(LIBS) >+whoami$(EXEEXT): $(whoami_OBJECTS) $(whoami_DEPENDENCIES) >+ @rm -f whoami$(EXEEXT) >+ $(LINK) $(whoami_LDFLAGS) $(whoami_OBJECTS) $(whoami_LDADD) $(LIBS) >+yes$(EXEEXT): $(yes_OBJECTS) $(yes_DEPENDENCIES) >+ @rm -f yes$(EXEEXT) >+ $(LINK) $(yes_LDFLAGS) $(yes_OBJECTS) $(yes_LDADD) $(LIBS) >+install-binSCRIPTS: $(bin_SCRIPTS) >+ @$(NORMAL_INSTALL) >+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)" >+ @list='$(bin_SCRIPTS)'; for p in $$list; do \ >+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ >+ if test -f $$d$$p; then \ >+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ >+ echo " $(binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \ >+ $(binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \ >+ else :; fi; \ >+ done >+ >+uninstall-binSCRIPTS: >+ @$(NORMAL_UNINSTALL) >+ @list='$(bin_SCRIPTS)'; for p in $$list; do \ >+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \ >+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ >+ rm -f "$(DESTDIR)$(bindir)/$$f"; \ >+ done >+ >+installcheck-binSCRIPTS: $(bin_SCRIPTS) >+ bad=0; pid=$$$$; list="$(bin_SCRIPTS)"; for p in $$list; do \ >+ case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \ >+ *" $$p "* | *" $(srcdir)/$$p "*) continue;; \ >+ esac; \ >+ f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \ >+ for opt in --help --version; do \ >+ if "$(DESTDIR)$(bindir)/$$f" $$opt > c$${pid}_.out 2> c$${pid}_.err \ >+ && test -n "`cat c$${pid}_.out`" \ >+ && test -z "`cat c$${pid}_.err`"; then :; \ >+ else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \ >+ done; \ >+ done; rm -f c$${pid}_.???; exit $$bad >+ >+mostlyclean-compile: >+ -rm -f *.$(OBJEXT) >+ >+distclean-compile: >+ -rm -f *.tab.c >+ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cat.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chgrp.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmod.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown-core.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chown.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chroot.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cksum.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/comm.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/copy.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cp-hash.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cp.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csplit.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cut.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/date.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dd.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/df.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dircolors.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dirname.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/du.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/echo.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/env.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expand.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expr.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/factor.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/false.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fmt.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fold.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/head.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hostid.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hostname.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/id.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/install.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/join.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kill.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lbracket.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/link.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ln.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/logname.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ls-dir.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ls-ls.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ls-vdir.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ls.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5sum.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkdir.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkfifo.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mknod.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mv.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nice.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nl.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nohup.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/od.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/paste.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pathchk.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pinky.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pr.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printenv.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/printf.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ptx.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pwd.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/readlink.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/remove.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rm.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rmdir.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/seq.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setuidgid.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sha1sum.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shred.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sleep.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sort.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/split.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stat.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/stty.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/su.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sum.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sync.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tac.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tail.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tee.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/touch.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tr.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/true.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tsort.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tty.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uname.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unexpand.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uniq.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unlink.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/uptime.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/users.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wc.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/who.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/whoami.Po@am__quote@ >+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yes.Po@am__quote@ >+ >+.c.o: >+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \ >+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(COMPILE) -c $< >+ >+.c.obj: >+@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \ >+@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ depfile='$(DEPDIR)/$*.Po' tmpdepfile='$(DEPDIR)/$*.TPo' @AMDEPBACKSLASH@ >+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ >+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` >+uninstall-info-am: >+ >+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) >+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >+ unique=`for i in $$list; do \ >+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >+ done | \ >+ $(AWK) ' { files[$$0] = 1; } \ >+ END { for (i in files) print i; }'`; \ >+ mkid -fID $$unique >+tags: TAGS >+ >+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ >+ $(TAGS_FILES) $(LISP) >+ tags=; \ >+ here=`pwd`; \ >+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >+ unique=`for i in $$list; do \ >+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >+ done | \ >+ $(AWK) ' { files[$$0] = 1; } \ >+ END { for (i in files) print i; }'`; \ >+ test -z "$(ETAGS_ARGS)$$tags$$unique" \ >+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ >+ $$tags $$unique >+ctags: CTAGS >+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ >+ $(TAGS_FILES) $(LISP) >+ tags=; \ >+ here=`pwd`; \ >+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ >+ unique=`for i in $$list; do \ >+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ >+ done | \ >+ $(AWK) ' { files[$$0] = 1; } \ >+ END { for (i in files) print i; }'`; \ >+ test -z "$(CTAGS_ARGS)$$tags$$unique" \ >+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ >+ $$tags $$unique >+ >+GTAGS: >+ here=`$(am__cd) $(top_builddir) && pwd` \ >+ && cd $(top_srcdir) \ >+ && gtags -i $(GTAGS_ARGS) $$here >+ >+distclean-tags: >+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags >+ >+distdir: $(DISTFILES) >+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ >+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ >+ list='$(DISTFILES)'; for file in $$list; do \ >+ case $$file in \ >+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ >+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ >+ esac; \ >+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ >+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ >+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ >+ dir="/$$dir"; \ >+ $(mkdir_p) "$(distdir)$$dir"; \ >+ else \ >+ dir=''; \ >+ fi; \ >+ if test -d $$d/$$file; then \ >+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ >+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ >+ fi; \ >+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ >+ else \ >+ test -f $(distdir)/$$file \ >+ || cp -p $$d/$$file $(distdir)/$$file \ >+ || exit 1; \ >+ fi; \ >+ done >+check-am: all-am >+check: $(BUILT_SOURCES) >+ $(MAKE) $(AM_MAKEFLAGS) check-am >+all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(HEADERS) all-local >+installdirs: >+ for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)"; do \ >+ test -z "$$dir" || $(mkdir_p) "$$dir"; \ >+ done >+install: $(BUILT_SOURCES) >+ $(MAKE) $(AM_MAKEFLAGS) install-am >+install-exec: install-exec-am >+install-data: install-data-am >+uninstall: uninstall-am >+ >+install-am: all-am >+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am >+ >+installcheck: installcheck-am >+install-strip: >+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ >+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ >+ `test -z '$(STRIP)' || \ >+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install >+mostlyclean-generic: >+ >+clean-generic: >+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) >+ >+distclean-generic: >+ -rm -f $(CONFIG_CLEAN_FILES) >+ -test -z "$(DISTCLEANFILES)" || rm -f $(DISTCLEANFILES) >+ >+maintainer-clean-generic: >+ @echo "This command is intended for maintainers to use" >+ @echo "it deletes files that may require special tools to rebuild." >+ -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) >+ -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) >+clean: clean-am >+ >+clean-am: clean-binPROGRAMS clean-generic clean-noinstPROGRAMS \ >+ mostlyclean-am >+ >+distclean: distclean-am >+ -rm -rf ./$(DEPDIR) >+ -rm -f Makefile >+distclean-am: clean-am distclean-compile distclean-generic \ >+ distclean-tags >+ >+dvi: dvi-am >+ >+dvi-am: >+ >+html: html-am >+ >+info: info-am >+ >+info-am: >+ >+install-data-am: >+ >+install-exec-am: install-binPROGRAMS install-binSCRIPTS \ >+ install-exec-local >+ >+install-info: install-info-am >+ >+install-man: >+ >+installcheck-am: installcheck-binPROGRAMS installcheck-binSCRIPTS >+ >+maintainer-clean: maintainer-clean-am >+ -rm -rf ./$(DEPDIR) >+ -rm -f Makefile >+maintainer-clean-am: distclean-am maintainer-clean-generic >+ >+mostlyclean: mostlyclean-am >+ >+mostlyclean-am: mostlyclean-compile mostlyclean-generic >+ >+pdf: pdf-am >+ >+pdf-am: >+ >+ps: ps-am >+ >+ps-am: >+ >+uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS \ >+ uninstall-info-am uninstall-local >+ >+.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \ >+ clean-binPROGRAMS clean-generic clean-noinstPROGRAMS ctags \ >+ distclean distclean-compile distclean-generic distclean-tags \ >+ distdir dvi dvi-am html html-am info info-am install \ >+ install-am install-binPROGRAMS install-binSCRIPTS install-data \ >+ install-data-am install-exec install-exec-am \ >+ install-exec-local install-info install-info-am install-man \ >+ install-strip installcheck installcheck-am \ >+ installcheck-binPROGRAMS installcheck-binSCRIPTS installdirs \ >+ maintainer-clean maintainer-clean-generic mostlyclean \ >+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ >+ tags uninstall uninstall-am uninstall-binPROGRAMS \ >+ uninstall-binSCRIPTS uninstall-info-am uninstall-local >+ >+ >+$(PROGRAMS): ../lib/libfetish.a >+ >+$(SCRIPTS): Makefile >+ >+.sh: >+ rm -f $@ $@-t >+ sed \ >+ -e 's!@''bindir''@!$(bindir)!' \ >+ -e 's/@''GNU_PACKAGE''@/$(GNU_PACKAGE)/' \ >+ -e 's/@''PACKAGE_BUGREPORT''@/$(PACKAGE_BUGREPORT)/' \ >+ -e 's/@''VERSION''@/$(VERSION)/' $< > $@-t >+ chmod +x $@-t >+ mv $@-t $@ >+ >+all-local: su$(EXEEXT) >+ >+install-root: su$(EXEEXT) >+ @$(INSTALL_SU) >+ >+install-exec-local: su$(EXEEXT) >+ @TMPFILE=$(DESTDIR)$(bindir)/.su-$$$$; \ >+ rm -f $$TMPFILE; \ >+ echo > $$TMPFILE; \ >+ can_create_suid_root_executable=no; \ >+ chown root $$TMPFILE > /dev/null 2>&1 \ >+ && chmod $(setuid_root_mode) $$TMPFILE > /dev/null 2>&1 \ >+ && can_create_suid_root_executable=yes; \ >+ rm -f $$TMPFILE; \ >+ if test $$can_create_suid_root_executable = yes; then \ >+ $(INSTALL_SU); \ >+ else \ >+ echo "WARNING: insufficient access; not installing su"; \ >+ echo "NOTE: to install su, run 'make install-root' as root"; \ >+ fi >+ >+uninstall-local: >+# Remove su only if it's one we installed. >+ @if grep '$(GNU_PACKAGE)' $(installed_su) > /dev/null 2>&1; then \ >+ echo " rm -f $(installed_su)"; \ >+ rm -f $(installed_su); \ >+ else :; fi >+localedir.h: Makefile >+ @rm -f $@-t >+ echo '#define LOCALEDIR "$(localedir)"' >$@-t >+ @chmod a-w $@-t >+ cmp $@-t $@ > /dev/null 2>&1 && rm -f $@-t || { rm -f $@; mv $@-t $@; } >+dircolors.h: dcgen dircolors.hin >+ @rm -f $@ $@-t >+ $(PERL) -w -- $(srcdir)/dcgen $(srcdir)/dircolors.hin > $@-t >+ @chmod a-w $@-t >+ mv $@-t $@ >+wheel-size.h: Makefile.am >+ @rm -f $@ $@-t >+ echo '#define WHEEL_SIZE $(wheel_size)' > $@-t >+ @chmod a-w $@-t >+ mv $@-t $@ >+wheel.h: wheel-gen.pl Makefile.am >+ @rm -f $@ $@-t >+ $(srcdir)/wheel-gen.pl $(wheel_size) > $@-t >+ @chmod a-w $@-t >+ mv $@-t $@ >+false.c: true.c >+ @rm -f $@ $@-t >+ sed \ >+ -e s/true/false/g \ >+ -e s/success/failure/g \ >+ -e 's/(EXIT_SUCCESS)/(EXIT_FAILURE)/g' \ >+ $(srcdir)/true.c > $@-t >+ @chmod a-w $@-t >+ mv $@-t $@ >+fs.h: stat.c extract-magic >+ rm -f $@ >+ $(PERL) $(srcdir)/extract-magic $(srcdir)/stat.c > $@t >+ @chmod a-w $@t >+ mv $@t $@ >+# Ensure that the list of programs in README matches the list >+# of programs we can build. >+check: check-README check-misc >+.PHONY: check-README >+check-README: >+ rm -rf $(pr) $(pm) >+ echo $(all_programs) \ >+ | tr -s ' ' '\n' | $(ASSORT) -u > $(pm) && \ >+ sed -n '/^The programs .* are:/,/^[a-zA-Z]/p' $(top_srcdir)/README \ >+ | sed -n '/^ */s///p' | tr -s ' ' '\n' > $(pr) >+ diff $(pm) $(pr) && rm -rf $(pr) $(pm) >+ >+# Make sure we don't define any S_IS* macros in src/*.c files. >+# Not a big deal, but they're already defined via system.h. >+# >+# Also make sure we don't use st_blocks. Use ST_NBLOCKS instead. >+# This is a bit of a kludge, since it prevents use of the string >+# even in comments, but for now it does the job with no false positives. >+.PHONY: check-misc >+check-misc: >+ cd $(srcdir); grep '^# *define *S_IS' $(SOURCES) && exit 1 || : >+ cd $(srcdir); grep st_blocks $(SOURCES) && exit 1 || : >+ cd $(srcdir); grep '^# *define .*defined' $(SOURCES) && exit 1 || : >+# FIXME: handle *.sh; and use $(all_programs), not $(SOURCES) >+../AUTHORS: $(SOURCES) >+ rm -f $@-t >+ ( \ >+ set -e; \ >+ echo "Here are the names of the programs in this package,"; \ >+ echo "each followed by the name(s) of its author(s)."; \ >+ echo; \ >+ for i in $(SOURCES); do \ >+ a=`sed -n $(s1) $$i`; \ >+ test "$$a" && : \ >+ || a=`sed -n $(s2) $$i`; \ >+ if test "$$a"; then \ >+ prog=`echo $$i|sed 's/\.c$$//'`; \ >+ echo "$$prog: $$a"; \ >+ fi; \ >+ done | $(ASSORT) -u ) > $@-t >+ chmod a-w $@-t >+ mv $@-t $@ >+# 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: >diff -uNr coreutils-5.2.1.org/src/touch.c coreutils-5.2.1/src/touch.c >--- coreutils-5.2.1.org/src/touch.c 2008-07-10 15:11:45.000000000 +0800 >+++ coreutils-5.2.1/src/touch.c 2008-07-10 15:13:39.000000000 +0800 >@@ -69,15 +69,12 @@ > we have neither read nor write access to it. */ > static int amtime_now; > >-/* New time to use when setting time. */ >-static struct timespec newtime; >+/* New access and modification times to use when setting time. */ >+static struct timespec newtime[2]; > > /* File to use for -r. */ > static char *ref_file; > >-/* Info about the reference file. */ >-static struct stat ref_stats; >- > /* For long options that have no equivalent short option, use a > non-character as a pseudo short option, starting with CHAR_MAX + 1. */ > enum >@@ -109,17 +106,15 @@ > CH_ATIME, CH_ATIME, CH_ATIME, CH_MTIME, CH_MTIME > }; > >-/* Interpret FLEX_DATE as a date, relative to NOW, and return the >- respresented time. If NOW is null, use the current time. >- FIXME: add support for subsecond resolution. */ >+/* Store into *RESULT the result of interpreting FLEX_DATE as a date, >+ relative to NOW. If NOW is null, use the current time. */ > >-static time_t >-get_reldate (char const *flex_date, time_t const *now) >+static void >+get_reldate (struct timespec *result, >+ char const *flex_date, struct timespec const *now) > { >- time_t r = get_date (flex_date, now); >- if (r == (time_t) -1) >+ if (! get_date (result, flex_date, now)) > error (EXIT_FAILURE, 0, _("invalid date format %s"), quote (flex_date)); >- return r; > } > > /* Update the time of file FILE according to the options given. >@@ -185,20 +180,7 @@ > else > { > struct timespec timespec[2]; >- >- /* There's currently no interface to set file timestamps with >- better than 1-second resolution, so discard any fractional >- part of the source timestamp. */ >- >- if (use_ref) >- { >- timespec[0].tv_sec = ref_stats.st_atime; >- timespec[0].tv_nsec = TIMESPEC_NS (ref_stats.st_atim); >- timespec[1].tv_sec = ref_stats.st_mtime; >- timespec[1].tv_nsec = TIMESPEC_NS (ref_stats.st_mtim); >- } >- else >- timespec[0] = timespec[1] = newtime; >+ memcpy (timespec, newtime, sizeof timespec); > > if (!(change_times & CH_ATIME)) > { >@@ -329,10 +311,11 @@ > > case 't': > posix_date++; >- if (! posixtime (&newtime.tv_sec, optarg, >+ if (! posixtime (&newtime[0].tv_sec, optarg, > PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS)) > error (EXIT_FAILURE, 0, _("invalid date format %s"), quote (optarg)); >- newtime.tv_nsec = 0; >+ newtime[0].tv_nsec = 0; >+ newtime[1] = newtime[0]; > date_set++; > break; > >@@ -361,15 +344,20 @@ > > if (use_ref) > { >+ struct stat ref_stats; > if (stat (ref_file, &ref_stats)) > error (EXIT_FAILURE, errno, > _("failed to get attributes of %s"), quote (ref_file)); >+ newtime[0].tv_sec = ref_stats.st_atime; >+ newtime[0].tv_nsec = TIMESPEC_NS (ref_stats.st_atim); >+ newtime[1].tv_sec = ref_stats.st_mtime; >+ newtime[1].tv_nsec = TIMESPEC_NS (ref_stats.st_mtim); > if (flex_date) > { > if (change_times & CH_ATIME) >- ref_stats.st_atime = get_reldate (flex_date, &ref_stats.st_atime); >+ get_reldate (&newtime[0], flex_date, &newtime[0]); > if (change_times & CH_MTIME) >- ref_stats.st_mtime = get_reldate (flex_date, &ref_stats.st_mtime); >+ get_reldate (&newtime[1], flex_date, &newtime[1]); > } > date_set++; > } >@@ -377,8 +365,8 @@ > { > if (flex_date) > { >- newtime.tv_sec = get_reldate (flex_date, NULL); >- newtime.tv_nsec = 0; >+ get_reldate (&newtime[0], flex_date, NULL); >+ newtime[1] = newtime[0]; > } > } > >@@ -387,17 +375,18 @@ > if (!date_set && 2 <= argc - optind && !STREQ (argv[optind - 1], "--") > && (posix2_version () < 200112 || !getenv ("POSIXLY_CORRECT"))) > { >- if (posixtime (&newtime.tv_sec, argv[optind], PDS_TRAILING_YEAR)) >+ if (posixtime (&newtime[0].tv_sec, argv[optind], PDS_TRAILING_YEAR)) > { >- newtime.tv_nsec = 0; >+ newtime[0].tv_nsec = 0; >+ newtime[1] = newtime[0]; > if (! getenv ("POSIXLY_CORRECT")) > { >- struct tm const *tm = localtime (&newtime.tv_sec); >+ struct tm const *tm = localtime (&newtime[0].tv_sec); > error (0, 0, > _("warning: `touch %s' is obsolete; use\ >- `touch -t %04d%02d%02d%02d%02d.%02d'"), >+ `touch -t %04ld%02d%02d%02d%02d.%02d'"), > argv[optind], >- tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday, >+ tm->tm_year + 1900L, tm->tm_mon + 1, tm->tm_mday, > tm->tm_hour, tm->tm_min, tm->tm_sec); > } > >@@ -411,18 +400,9 @@ > amtime_now = 1; > else > { >- /* Get time of day, but only to microsecond resolution, >- since 'utimes' currently supports only microsecond >- resolution at best. It would be cleaner here to invoke >- gettime, but then we would have to link in more shared >- libraries on platforms like Solaris, and we'd rather not >- have 'touch' depend on libraries that it doesn't >- need. */ >- struct timeval timeval; >- if (gettimeofday (&timeval, NULL) != 0) >+ if (gettime (&newtime[0]) != 0) > error (EXIT_FAILURE, errno, _("cannot get time of day")); >- newtime.tv_sec = timeval.tv_sec; >- newtime.tv_nsec = timeval.tv_usec * 1000; >+ newtime[1] = newtime[0]; > } > } >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 461084
: 315714