diff options
author | Nitin A Kamble <nitin.a.kamble@intel.com> | 2010-08-31 21:12:31 -0700 |
---|---|---|
committer | Richard Purdie <rpurdie@linux.intel.com> | 2010-09-02 09:50:49 +0100 |
commit | 2c54c5574eacabc4efe4069721dd83c1df8a65cb (patch) | |
tree | 6cefad8628fbcb10330e6f051ffd3f6e4471deb2 /meta/recipes-extended | |
parent | e384d62afaa17f8cd2124cb0785b18130c690e64 (diff) | |
download | poky-2c54c5574eacabc4efe4069721dd83c1df8a65cb.tar.gz |
at: gplv2 recipe at version 3.1.12
Took the 3.1.10.2 version of the gplv2 recipe from the master branch,
and upgraded it to 3.1.12 version and then replaced the gplv3 files
viz posixtm.[ch] by gplv2 files to make the recipe gplv2.
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
Diffstat (limited to 'meta/recipes-extended')
-rw-r--r-- | meta/recipes-extended/at/at-3.1.12/configure.patch | 24 | ||||
-rw-r--r-- | meta/recipes-extended/at/at.inc | 11 | ||||
-rw-r--r-- | meta/recipes-extended/at/at_3.1.12.bb | 19 | ||||
-rw-r--r-- | meta/recipes-extended/at/files/file_replacement_with_gplv2.patch | 28 | ||||
-rw-r--r-- | meta/recipes-extended/at/files/nonrootinstall.patch | 75 | ||||
-rw-r--r-- | meta/recipes-extended/at/files/posixtm.c | 328 | ||||
-rw-r--r-- | meta/recipes-extended/at/files/posixtm.h | 37 | ||||
-rw-r--r-- | meta/recipes-extended/at/files/use-ldflags.patch | 21 |
8 files changed, 543 insertions, 0 deletions
diff --git a/meta/recipes-extended/at/at-3.1.12/configure.patch b/meta/recipes-extended/at/at-3.1.12/configure.patch new file mode 100644 index 0000000000..2458ef357a --- /dev/null +++ b/meta/recipes-extended/at/at-3.1.12/configure.patch | |||
@@ -0,0 +1,24 @@ | |||
1 | # Fix cross-compilation issues in configure.ac | ||
2 | # Derived from an OE patch for at-3.1.8 | ||
3 | |||
4 | Index: at-3.1.12/configure.ac | ||
5 | =================================================================== | ||
6 | --- at-3.1.12.orig/configure.ac | ||
7 | +++ at-3.1.12/configure.ac | ||
8 | @@ -38,12 +38,11 @@ case "$host" in | ||
9 | AC_MSG_RESULT(no) | ||
10 | ;; | ||
11 | esac | ||
12 | +if [ X"${cross_compiling}" = Xno ]; then | ||
13 | AC_MSG_CHECKING(Trying to compile a trivial ANSI C program) | ||
14 | -AC_TRY_RUN([ main(int ac, char **av) { return 0; } ], | ||
15 | - AC_MSG_RESULT(yes), | ||
16 | - AC_MSG_RESULT(no) | ||
17 | - AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.), | ||
18 | - AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.)) | ||
19 | +AC_RUN_IFELSE([AC_LANG_SOURCE([[ main(int ac, char **av) { return 0; } ]])],[AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no) | ||
20 | + AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.)],[AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.)]) | ||
21 | +fi | ||
22 | |||
23 | AC_MSG_CHECKING(__attribute__((noreturn))) | ||
24 | AC_TRY_COMPILE([], [void __attribute__((noreturn)) panic(void);], | ||
diff --git a/meta/recipes-extended/at/at.inc b/meta/recipes-extended/at/at.inc new file mode 100644 index 0000000000..64ae9c2b6a --- /dev/null +++ b/meta/recipes-extended/at/at.inc | |||
@@ -0,0 +1,11 @@ | |||
1 | DESCRIPTION = "Delayed job execution and batch processing" | ||
2 | SECTION = "base" | ||
3 | DEPENDS = "flex" | ||
4 | RCONFLICTS_${PN} = "atd" | ||
5 | RREPLACES_${PN} = "atd" | ||
6 | |||
7 | inherit autotools | ||
8 | |||
9 | do_install () { | ||
10 | oe_runmake "IROOT=${D}" install | ||
11 | } | ||
diff --git a/meta/recipes-extended/at/at_3.1.12.bb b/meta/recipes-extended/at/at_3.1.12.bb new file mode 100644 index 0000000000..605179b21f --- /dev/null +++ b/meta/recipes-extended/at/at_3.1.12.bb | |||
@@ -0,0 +1,19 @@ | |||
1 | require at.inc | ||
2 | |||
3 | LICENSE="GPLv2+" | ||
4 | LIC_FILES_CHKSUM = "file://COPYING;md5=4325afd396febcb659c36b49533135d4" | ||
5 | |||
6 | PR = "r1" | ||
7 | |||
8 | SRC_URI = "${DEBIAN_MIRROR}/main/a/at/at_${PV}.orig.tar.gz \ | ||
9 | file://configure.patch \ | ||
10 | file://nonrootinstall.patch \ | ||
11 | file://use-ldflags.patch \ | ||
12 | file://posixtm.c \ | ||
13 | file://posixtm.h \ | ||
14 | file://file_replacement_with_gplv2.patch" | ||
15 | |||
16 | do_compile_prepend () { | ||
17 | mv ${WORKDIR}/posixtm.[ch] ${S} | ||
18 | } | ||
19 | |||
diff --git a/meta/recipes-extended/at/files/file_replacement_with_gplv2.patch b/meta/recipes-extended/at/files/file_replacement_with_gplv2.patch new file mode 100644 index 0000000000..249902cab4 --- /dev/null +++ b/meta/recipes-extended/at/files/file_replacement_with_gplv2.patch | |||
@@ -0,0 +1,28 @@ | |||
1 | posixtm.[ch] files are replaced with gplv2 version from these locations: | ||
2 | |||
3 | http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/posixtm.c;hb=5661ab9d49512b4cf3c19caa11bb581d8ce561ba | ||
4 | http://git.savannah.gnu.org/gitweb/?p=gnulib.git;a=blob;f=lib/posixtm.h;hb=5661ab9d49512b4cf3c19caa11bb581d8ce561ba | ||
5 | |||
6 | update the Copyright file information to reflect the replaced files. | ||
7 | |||
8 | Date: 2010/08/31 | ||
9 | Nitin A Kamble nitin.a.kamble@intel.com | ||
10 | |||
11 | Index: at-3.1.12/Copyright | ||
12 | =================================================================== | ||
13 | --- at-3.1.12.orig/Copyright | ||
14 | +++ at-3.1.12/Copyright | ||
15 | @@ -31,10 +31,10 @@ The files posixtm.c and posixtm.h have t | ||
16 | Copyright (C) 1989, 1990, 1991, 1998, 2000, 2001, 2002, 2003, 2004, | ||
17 | 2005, 2006, 2007 Free Software Foundation Inc. | ||
18 | |||
19 | - This program is free software: you can redistribute it and/or modify | ||
20 | + This program is free software; you can redistribute it and/or modify | ||
21 | it under the terms of the GNU General Public License as published by | ||
22 | - the Free Software Foundation; either version 3 of the License, or | ||
23 | - (at your option) any later version. | ||
24 | + the Free Software Foundation; either version 2, or (at your option) | ||
25 | + any later version. | ||
26 | |||
27 | This program is distributed in the hope that it will be useful, | ||
28 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
diff --git a/meta/recipes-extended/at/files/nonrootinstall.patch b/meta/recipes-extended/at/files/nonrootinstall.patch new file mode 100644 index 0000000000..f760e85ae8 --- /dev/null +++ b/meta/recipes-extended/at/files/nonrootinstall.patch | |||
@@ -0,0 +1,75 @@ | |||
1 | # Modify install rules to disable file ownership changes | ||
2 | # Disable stripping binaries | ||
3 | # Derived from an OE patch for at-3.1.8 | ||
4 | |||
5 | --- at-3.1.10.2.orig/Makefile.in 2005-08-29 01:08:28.000000000 -0700 | ||
6 | +++ at-3.1.10.2/Makefile.in 2010-07-21 17:06:01.000000000 -0700 | ||
7 | @@ -40,6 +40,10 @@ | ||
8 | LIBS = @LIBS@ | ||
9 | LIBOBJS = @LIBOBJS@ | ||
10 | INSTALL = @INSTALL@ | ||
11 | +ifeq ($(IROOT),) | ||
12 | +INSTALLOWN = -g root -o root | ||
13 | +DAEMONOWN = -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) | ||
14 | +endif | ||
15 | PAMLIB = @PAMLIB@ | ||
16 | |||
17 | CLONES = atq atrm | ||
18 | @@ -88,35 +92,38 @@ | ||
19 | $(CC) -c $(CFLAGS) $(DEFS) $*.c | ||
20 | |||
21 | install: all | ||
22 | - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(etcdir) | ||
23 | - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(bindir) | ||
24 | - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(sbindir) | ||
25 | - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(docdir) | ||
26 | - $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdocdir) | ||
27 | - $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) | ||
28 | + $(INSTALL) $(INSTALLOWN) -m 755 -d $(IROOT)$(etcdir) | ||
29 | + $(INSTALL) $(INSTALLOWN) -m 755 -d $(IROOT)$(bindir) | ||
30 | + $(INSTALL) $(INSTALLOWN) -m 755 -d $(IROOT)$(sbindir) | ||
31 | + $(INSTALL) $(INSTALLOWN) -m 755 -d $(IROOT)$(docdir) | ||
32 | + $(INSTALL) $(INSTALLOWN) -m 755 -d $(IROOT)$(atdocdir) | ||
33 | + $(INSTALL) $(INSTALLOWN) -m 755 -d $(IROOT)$(ATJOB_DIR) | ||
34 | + $(INSTALL) $(DAEMONOWN) -m 755 -d $(IROOT)$(ATSPOOL_DIR) | ||
35 | chmod 1770 $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) | ||
36 | touch $(IROOT)$(LFILE) | ||
37 | chmod 600 $(IROOT)$(LFILE) | ||
38 | +ifeq ($(IROOT),) | ||
39 | chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(LFILE) | ||
40 | - test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(IROOT)$(etcdir)/ | ||
41 | - $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 -s at $(IROOT)$(bindir) | ||
42 | +endif | ||
43 | + test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) $(INSTALLOWN) -m 600 at.deny $(IROOT)$(etcdir)/ | ||
44 | + $(INSTALL) $(INSTALLOWN) -m 4755 at $(IROOT)$(bindir) | ||
45 | $(LN_S) -f at $(IROOT)$(bindir)/atq | ||
46 | $(LN_S) -f at $(IROOT)$(bindir)/atrm | ||
47 | - $(INSTALL) -g root -o root -m 755 batch $(IROOT)$(bindir) | ||
48 | - $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man1dir) | ||
49 | - $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man5dir) | ||
50 | - $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man8dir) | ||
51 | - $(INSTALL) -g root -o root -m 755 -s atd $(IROOT)$(sbindir) | ||
52 | - $(INSTALL) -g root -o root -m 755 atrun $(IROOT)$(sbindir) | ||
53 | - $(INSTALL) -g root -o root -m 644 at.1 $(IROOT)$(man1dir)/ | ||
54 | + $(INSTALL) $(INSTALLOWN) -m 755 batch $(IROOT)$(bindir) | ||
55 | + $(INSTALL) -d $(INSTALLOWN) -m 755 $(IROOT)$(man1dir) | ||
56 | + $(INSTALL) -d $(INSTALLOWN) -m 755 $(IROOT)$(man5dir) | ||
57 | + $(INSTALL) -d $(INSTALLOWN) -m 755 $(IROOT)$(man8dir) | ||
58 | + $(INSTALL) $(INSTALLOWN) -m 755 atd $(IROOT)$(sbindir) | ||
59 | + $(INSTALL) $(INSTALLOWN) -m 755 atrun $(IROOT)$(sbindir) | ||
60 | + $(INSTALL) $(INSTALLOWN) -m 644 at.1 $(IROOT)$(man1dir)/ | ||
61 | cd $(IROOT)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1 | ||
62 | - $(INSTALL) -g root -o root -m 644 atd.8 $(IROOT)$(man8dir)/ | ||
63 | + $(INSTALL) $(INSTALLOWN) -m 644 atd.8 $(IROOT)$(man8dir)/ | ||
64 | sed "s,\$${exec_prefix},$(exec_prefix),g" <atrun.8>tmpman | ||
65 | - $(INSTALL) -g root -o root -m 644 tmpman $(IROOT)$(man8dir)/atrun.8 | ||
66 | + $(INSTALL) $(INSTALLOWN) -m 644 tmpman $(IROOT)$(man8dir)/atrun.8 | ||
67 | rm -f tmpman | ||
68 | - $(INSTALL) -g root -o root -m 644 at_allow.5 $(IROOT)$(man5dir)/ | ||
69 | + $(INSTALL) $(INSTALLOWN) -m 644 at_allow.5 $(IROOT)$(man5dir)/ | ||
70 | cd $(IROOT)$(man5dir) && $(LN_S) -f at_allow.5 at_deny.5 | ||
71 | - $(INSTALL) -g root -o root -m 644 $(DOCS) $(IROOT)$(atdocdir) | ||
72 | + $(INSTALL) $(INSTALLOWN) -m 644 $(DOCS) $(IROOT)$(atdocdir) | ||
73 | rm -f $(IROOT)$(mandir)/cat1/at.1* $(IROOT)$(mandir)/cat1/batch.1* \ | ||
74 | $(IROOT)$(mandir)/cat1/atq.1* | ||
75 | rm -f $(IROOT)$(mandir)/cat1/atd.8* | ||
diff --git a/meta/recipes-extended/at/files/posixtm.c b/meta/recipes-extended/at/files/posixtm.c new file mode 100644 index 0000000000..5514ba4fe2 --- /dev/null +++ b/meta/recipes-extended/at/files/posixtm.c | |||
@@ -0,0 +1,328 @@ | |||
1 | /* Parse dates for touch and date. | ||
2 | |||
3 | Copyright (C) 1989, 1990, 1991, 1998, 2000, 2001, 2002, 2003, 2004, | ||
4 | 2005, 2006, 2007 Free Software Foundation Inc. | ||
5 | |||
6 | This program is free software; you can redistribute it and/or modify | ||
7 | it under the terms of the GNU General Public License as published by | ||
8 | the Free Software Foundation; either version 2, or (at your option) | ||
9 | any later version. | ||
10 | |||
11 | This program is distributed in the hope that it will be useful, | ||
12 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
14 | GNU General Public License for more details. | ||
15 | |||
16 | You should have received a copy of the GNU General Public License | ||
17 | along with this program; if not, write to the Free Software Foundation, | ||
18 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
19 | |||
20 | /* Yacc-based version written by Jim Kingdon and David MacKenzie. | ||
21 | Rewritten by Jim Meyering. */ | ||
22 | |||
23 | #include <config.h> | ||
24 | |||
25 | #include "posixtm.h" | ||
26 | |||
27 | #include <stdio.h> | ||
28 | #include <stdlib.h> | ||
29 | #include <sys/types.h> | ||
30 | #include <string.h> | ||
31 | |||
32 | #if USE_UNLOCKED_IO | ||
33 | # include "unlocked-io.h" | ||
34 | #endif | ||
35 | |||
36 | /* ISDIGIT differs from isdigit, as follows: | ||
37 | - Its arg may be any int or unsigned int; it need not be an unsigned char | ||
38 | or EOF. | ||
39 | - It's typically faster. | ||
40 | POSIX says that only '0' through '9' are digits. Prefer ISDIGIT to | ||
41 | isdigit unless it's important to use the locale's definition | ||
42 | of `digit' even when the host does not conform to POSIX. */ | ||
43 | #define ISDIGIT(c) ((unsigned int) (c) - '0' <= 9) | ||
44 | |||
45 | time_t mktime (); | ||
46 | |||
47 | /* | ||
48 | POSIX requires: | ||
49 | |||
50 | touch -t [[CC]YY]mmddhhmm[.ss] FILE... | ||
51 | 8, 10, or 12 digits, followed by optional .ss | ||
52 | (PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS) | ||
53 | |||
54 | touch mmddhhmm[YY] FILE... (obsoleted by POSIX 1003.1-2001) | ||
55 | 8 or 10 digits, YY (if present) must be in the range 69-99 | ||
56 | (PDS_TRAILING_YEAR | PDS_PRE_2000) | ||
57 | |||
58 | date mmddhhmm[[CC]YY] | ||
59 | 8, 10, or 12 digits | ||
60 | (PDS_TRAILING_YEAR | PDS_CENTURY) | ||
61 | |||
62 | */ | ||
63 | |||
64 | static int | ||
65 | year (struct tm *tm, const int *digit_pair, size_t n, unsigned int syntax_bits) | ||
66 | { | ||
67 | switch (n) | ||
68 | { | ||
69 | case 1: | ||
70 | tm->tm_year = *digit_pair; | ||
71 | /* Deduce the century based on the year. | ||
72 | POSIX requires that 00-68 be interpreted as 2000-2068, | ||
73 | and that 69-99 be interpreted as 1969-1999. */ | ||
74 | if (digit_pair[0] <= 68) | ||
75 | { | ||
76 | if (syntax_bits & PDS_PRE_2000) | ||
77 | return 1; | ||
78 | tm->tm_year += 100; | ||
79 | } | ||
80 | break; | ||
81 | |||
82 | case 2: | ||
83 | if (! (syntax_bits & PDS_CENTURY)) | ||
84 | return 1; | ||
85 | tm->tm_year = digit_pair[0] * 100 + digit_pair[1] - 1900; | ||
86 | break; | ||
87 | |||
88 | case 0: | ||
89 | { | ||
90 | time_t now; | ||
91 | struct tm *tmp; | ||
92 | |||
93 | /* Use current year. */ | ||
94 | time (&now); | ||
95 | tmp = localtime (&now); | ||
96 | if (! tmp) | ||
97 | return 1; | ||
98 | tm->tm_year = tmp->tm_year; | ||
99 | } | ||
100 | break; | ||
101 | |||
102 | default: | ||
103 | abort (); | ||
104 | } | ||
105 | |||
106 | return 0; | ||
107 | } | ||
108 | |||
109 | static int | ||
110 | posix_time_parse (struct tm *tm, const char *s, unsigned int syntax_bits) | ||
111 | { | ||
112 | const char *dot = NULL; | ||
113 | int pair[6]; | ||
114 | int *p; | ||
115 | size_t i; | ||
116 | |||
117 | size_t s_len = strlen (s); | ||
118 | size_t len = (((syntax_bits & PDS_SECONDS) && (dot = strchr (s, '.'))) | ||
119 | ? (size_t) (dot - s) | ||
120 | : s_len); | ||
121 | |||
122 | if (len != 8 && len != 10 && len != 12) | ||
123 | return 1; | ||
124 | |||
125 | if (dot) | ||
126 | { | ||
127 | if (!(syntax_bits & PDS_SECONDS)) | ||
128 | return 1; | ||
129 | |||
130 | if (s_len - len != 3) | ||
131 | return 1; | ||
132 | } | ||
133 | |||
134 | for (i = 0; i < len; i++) | ||
135 | if (!ISDIGIT (s[i])) | ||
136 | return 1; | ||
137 | |||
138 | len /= 2; | ||
139 | for (i = 0; i < len; i++) | ||
140 | pair[i] = 10 * (s[2*i] - '0') + s[2*i + 1] - '0'; | ||
141 | |||
142 | p = pair; | ||
143 | if (syntax_bits & PDS_LEADING_YEAR) | ||
144 | { | ||
145 | if (year (tm, p, len - 4, syntax_bits)) | ||
146 | return 1; | ||
147 | p += len - 4; | ||
148 | len = 4; | ||
149 | } | ||
150 | |||
151 | /* Handle 8 digits worth of `MMDDhhmm'. */ | ||
152 | tm->tm_mon = *p++ - 1; | ||
153 | tm->tm_mday = *p++; | ||
154 | tm->tm_hour = *p++; | ||
155 | tm->tm_min = *p++; | ||
156 | len -= 4; | ||
157 | |||
158 | /* Handle any trailing year. */ | ||
159 | if (syntax_bits & PDS_TRAILING_YEAR) | ||
160 | { | ||
161 | if (year (tm, p, len, syntax_bits)) | ||
162 | return 1; | ||
163 | } | ||
164 | |||
165 | /* Handle seconds. */ | ||
166 | if (!dot) | ||
167 | { | ||
168 | tm->tm_sec = 0; | ||
169 | } | ||
170 | else | ||
171 | { | ||
172 | int seconds; | ||
173 | |||
174 | ++dot; | ||
175 | if (!ISDIGIT (dot[0]) || !ISDIGIT (dot[1])) | ||
176 | return 1; | ||
177 | seconds = 10 * (dot[0] - '0') + dot[1] - '0'; | ||
178 | |||
179 | tm->tm_sec = seconds; | ||
180 | } | ||
181 | |||
182 | return 0; | ||
183 | } | ||
184 | |||
185 | /* Parse a POSIX-style date, returning true if successful. */ | ||
186 | |||
187 | bool | ||
188 | posixtime (time_t *p, const char *s, unsigned int syntax_bits) | ||
189 | { | ||
190 | struct tm tm0 | ||
191 | #ifdef lint | ||
192 | /* Placate gcc-4's -Wuninitialized. | ||
193 | posix_time_parse fails to set all of tm0 only when it returns | ||
194 | nonzero (due to year() returning nonzero), and in that case, | ||
195 | this code doesn't use the tm0 at all. */ | ||
196 | = { 0, } | ||
197 | #endif | ||
198 | ; | ||
199 | struct tm tm1; | ||
200 | struct tm const *tm; | ||
201 | time_t t; | ||
202 | |||
203 | if (posix_time_parse (&tm0, s, syntax_bits)) | ||
204 | return false; | ||
205 | |||
206 | tm1 = tm0; | ||
207 | tm1.tm_isdst = -1; | ||
208 | t = mktime (&tm1); | ||
209 | |||
210 | if (t != (time_t) -1) | ||
211 | tm = &tm1; | ||
212 | else | ||
213 | { | ||
214 | /* mktime returns -1 for errors, but -1 is also a valid time_t | ||
215 | value. Check whether an error really occurred. */ | ||
216 | tm = localtime (&t); | ||
217 | if (! tm) | ||
218 | return false; | ||
219 | } | ||
220 | |||
221 | /* Reject dates like "September 31" and times like "25:61". */ | ||
222 | if ((tm0.tm_year ^ tm->tm_year) | ||
223 | | (tm0.tm_mon ^ tm->tm_mon) | ||
224 | | (tm0.tm_mday ^ tm->tm_mday) | ||
225 | | (tm0.tm_hour ^ tm->tm_hour) | ||
226 | | (tm0.tm_min ^ tm->tm_min) | ||
227 | | (tm0.tm_sec ^ tm->tm_sec)) | ||
228 | return false; | ||
229 | |||
230 | *p = t; | ||
231 | return true; | ||
232 | } | ||
233 | |||
234 | #ifdef TEST_POSIXTIME | ||
235 | /* | ||
236 | Test mainly with syntax_bits == 13 | ||
237 | (aka: (PDS_LEADING_YEAR | PDS_CENTURY | PDS_SECONDS)) | ||
238 | |||
239 | This test data assumes Universal Time, e.g., TZ="UTC0". | ||
240 | |||
241 | This test data also assumes that time_t is signed and is at least | ||
242 | 39 bits wide, so that it can represent all years from 0000 through | ||
243 | 9999. A host with 32-bit signed time_t can represent only time | ||
244 | stamps in the range 1901-12-13 20:45:52 through 2038-01-18 | ||
245 | 03:14:07 UTC, assuming POSIX time_t with no leap seconds, so test | ||
246 | cases outside this range will not work on such a host. | ||
247 | |||
248 | Also, the first two lines of test data assume that the current | ||
249 | year is 2002. | ||
250 | |||
251 | BEGIN-DATA | ||
252 | 12131415.16 13 1039788916 Fri Dec 13 14:15:16 2002 | ||
253 | 12131415.16 13 1039788916 Fri Dec 13 14:15:16 2002 | ||
254 | 000001010000.00 13 -62167132800 Sun Jan 1 00:00:00 0000 | ||
255 | 190112132045.52 13 -2147483648 Fri Dec 13 20:45:52 1901 | ||
256 | 190112132045.53 13 -2147483647 Fri Dec 13 20:45:53 1901 | ||
257 | 190112132046.52 13 -2147483588 Fri Dec 13 20:46:52 1901 | ||
258 | 190112132145.52 13 -2147480048 Fri Dec 13 21:45:52 1901 | ||
259 | 190112142045.52 13 -2147397248 Sat Dec 14 20:45:52 1901 | ||
260 | 190201132045.52 13 -2144805248 Mon Jan 13 20:45:52 1902 | ||
261 | 196912312359.59 13 -1 Wed Dec 31 23:59:59 1969 | ||
262 | 197001010000.00 13 0 Thu Jan 1 00:00:00 1970 | ||
263 | 197001010000.01 13 1 Thu Jan 1 00:00:01 1970 | ||
264 | 197001010001.00 13 60 Thu Jan 1 00:01:00 1970 | ||
265 | 197001010100.00 13 3600 Thu Jan 1 01:00:00 1970 | ||
266 | 197001020000.00 13 86400 Fri Jan 2 00:00:00 1970 | ||
267 | 197002010000.00 13 2678400 Sun Feb 1 00:00:00 1970 | ||
268 | 197101010000.00 13 31536000 Fri Jan 1 00:00:00 1971 | ||
269 | 197001000000.00 13 * * | ||
270 | 197000010000.00 13 * * | ||
271 | 197001010000.60 13 * * | ||
272 | 197001010060.00 13 * * | ||
273 | 197001012400.00 13 * * | ||
274 | 197001320000.00 13 * * | ||
275 | 197013010000.00 13 * * | ||
276 | 203801190314.06 13 2147483646 Tue Jan 19 03:14:06 2038 | ||
277 | 203801190314.07 13 2147483647 Tue Jan 19 03:14:07 2038 | ||
278 | 203801190314.08 13 2147483648 Tue Jan 19 03:14:08 2038 | ||
279 | 999912312359.59 13 253402300799 Fri Dec 31 23:59:59 9999 | ||
280 | 1112131415 13 1323785700 Tue Dec 13 14:15:00 2011 | ||
281 | 1112131415.16 13 1323785716 Tue Dec 13 14:15:16 2011 | ||
282 | 201112131415.16 13 1323785716 Tue Dec 13 14:15:16 2011 | ||
283 | 191112131415.16 13 -1831974284 Wed Dec 13 14:15:16 1911 | ||
284 | 203712131415.16 13 2144326516 Sun Dec 13 14:15:16 2037 | ||
285 | 3712131415.16 13 2144326516 Sun Dec 13 14:15:16 2037 | ||
286 | 6812131415.16 13 3122633716 Thu Dec 13 14:15:16 2068 | ||
287 | 6912131415.16 13 -1590284 Sat Dec 13 14:15:16 1969 | ||
288 | 7012131415.16 13 29945716 Sun Dec 13 14:15:16 1970 | ||
289 | 1213141599 2 945094500 Mon Dec 13 14:15:00 1999 | ||
290 | 1213141500 2 976716900 Wed Dec 13 14:15:00 2000 | ||
291 | END-DATA | ||
292 | |||
293 | */ | ||
294 | |||
295 | # define MAX_BUFF_LEN 1024 | ||
296 | |||
297 | int | ||
298 | main (void) | ||
299 | { | ||
300 | char buff[MAX_BUFF_LEN + 1]; | ||
301 | |||
302 | buff[MAX_BUFF_LEN] = 0; | ||
303 | while (fgets (buff, MAX_BUFF_LEN, stdin) && buff[0]) | ||
304 | { | ||
305 | char time_str[MAX_BUFF_LEN]; | ||
306 | unsigned int syntax_bits; | ||
307 | time_t t; | ||
308 | if (sscanf (buff, "%s %u", time_str, &syntax_bits) != 2) | ||
309 | printf ("*\n"); | ||
310 | else | ||
311 | { | ||
312 | printf ("%-15s %2u ", time_str, syntax_bits); | ||
313 | if (posixtime (&t, time_str, syntax_bits)) | ||
314 | printf ("%12ld %s", (long int) t, ctime (&t)); | ||
315 | else | ||
316 | printf ("%12s %s", "*", "*\n"); | ||
317 | } | ||
318 | } | ||
319 | exit (0); | ||
320 | |||
321 | } | ||
322 | #endif | ||
323 | |||
324 | /* | ||
325 | Local Variables: | ||
326 | compile-command: "gcc -DTEST_POSIXTIME -g -O -Wall -W posixtm.c" | ||
327 | End: | ||
328 | */ | ||
diff --git a/meta/recipes-extended/at/files/posixtm.h b/meta/recipes-extended/at/files/posixtm.h new file mode 100644 index 0000000000..e91749d736 --- /dev/null +++ b/meta/recipes-extended/at/files/posixtm.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /* Parse dates for touch and date. | ||
2 | |||
3 | Copyright (C) 1998, 2003, 2005, 2007 Free Software Foundation Inc. | ||
4 | |||
5 | This program is free software; you can redistribute it and/or modify | ||
6 | it under the terms of the GNU General Public License as published by | ||
7 | the Free Software Foundation; either version 2, or (at your option) | ||
8 | any later version. | ||
9 | |||
10 | This program is distributed in the hope that it will be useful, | ||
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | GNU General Public License for more details. | ||
14 | |||
15 | You should have received a copy of the GNU General Public License | ||
16 | along with this program; if not, write to the Free Software Foundation, | ||
17 | Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ | ||
18 | |||
19 | /* Yacc-based version written by Jim Kingdon and David MacKenzie. | ||
20 | Rewritten by Jim Meyering. */ | ||
21 | |||
22 | #ifndef POSIXTM_H_ | ||
23 | # define POSIXTM_H_ | ||
24 | |||
25 | # include <stdbool.h> | ||
26 | # include <time.h> | ||
27 | |||
28 | /* POSIX Date Syntax flags. */ | ||
29 | # define PDS_LEADING_YEAR 1 | ||
30 | # define PDS_TRAILING_YEAR 2 | ||
31 | # define PDS_CENTURY 4 | ||
32 | # define PDS_SECONDS 8 | ||
33 | # define PDS_PRE_2000 16 | ||
34 | |||
35 | bool posixtime (time_t *p, const char *s, unsigned int syntax_bits); | ||
36 | |||
37 | #endif | ||
diff --git a/meta/recipes-extended/at/files/use-ldflags.patch b/meta/recipes-extended/at/files/use-ldflags.patch new file mode 100644 index 0000000000..7d3d91a19a --- /dev/null +++ b/meta/recipes-extended/at/files/use-ldflags.patch | |||
@@ -0,0 +1,21 @@ | |||
1 | # Ensure use of $LDFLAGS during build | ||
2 | # Derived from an OE patch for at-3.1.8 | ||
3 | |||
4 | --- at-3.1.12.orig/Makefile.in 2009-11-23 07:11:52.000000000 -0800 | ||
5 | +++ at-3.1.12/Makefile.in 2010-07-20 16:28:04.000000000 -0700 | ||
6 | @@ -65,13 +65,13 @@ | ||
7 | all: at atd atrun | ||
8 | |||
9 | at: $(ATOBJECTS) | ||
10 | - $(CC) $(CFLAGS) -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) | ||
11 | + $(CC) $(CFLAGS) -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) $(LDFLAGS) | ||
12 | rm -f $(CLONES) | ||
13 | $(LN_S) -f at atq | ||
14 | $(LN_S) -f at atrm | ||
15 | |||
16 | atd: $(RUNOBJECTS) | ||
17 | - $(CC) $(CFLAGS) -o atd $(RUNOBJECTS) $(LIBS) $(PAMLIB) | ||
18 | + $(CC) $(CFLAGS) -o atd $(RUNOBJECTS) $(LIBS) $(PAMLIB) $(LDFLAGS) | ||
19 | |||
20 | y.tab.c y.tab.h: parsetime.y | ||
21 | $(YACC) -d parsetime.y | ||