tarruby 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. data/README.txt +99 -0
  2. data/ext/extconf.rb +19 -0
  3. data/ext/libtar/COPYRIGHT +35 -0
  4. data/ext/libtar/ChangeLog +243 -0
  5. data/ext/libtar/ChangeLog-1.0.x +141 -0
  6. data/ext/libtar/INSTALL +183 -0
  7. data/ext/libtar/Makefile.in +51 -0
  8. data/ext/libtar/README +121 -0
  9. data/ext/libtar/TODO +10 -0
  10. data/ext/libtar/autoconf/ac_path_generic.m4 +136 -0
  11. data/ext/libtar/autoconf/aclocal.m4 +199 -0
  12. data/ext/libtar/autoconf/encap.m4 +133 -0
  13. data/ext/libtar/autoconf/install-sh +251 -0
  14. data/ext/libtar/autom4te.cache/output.0 +8102 -0
  15. data/ext/libtar/autom4te.cache/requests +112 -0
  16. data/ext/libtar/autom4te.cache/traces.0 +382 -0
  17. data/ext/libtar/compat/ChangeLog +31 -0
  18. data/ext/libtar/compat/README +12 -0
  19. data/ext/libtar/compat/TODO +4 -0
  20. data/ext/libtar/compat/basename.c +91 -0
  21. data/ext/libtar/compat/compat.h +260 -0
  22. data/ext/libtar/compat/dirname.c +96 -0
  23. data/ext/libtar/compat/fnmatch.c +237 -0
  24. data/ext/libtar/compat/gethostbyname_r.c +41 -0
  25. data/ext/libtar/compat/gethostname.c +36 -0
  26. data/ext/libtar/compat/getservbyname_r.c +41 -0
  27. data/ext/libtar/compat/glob.c +898 -0
  28. data/ext/libtar/compat/inet_aton.c +27 -0
  29. data/ext/libtar/compat/module.ac +591 -0
  30. data/ext/libtar/compat/snprintf.c +788 -0
  31. data/ext/libtar/compat/strdup.c +62 -0
  32. data/ext/libtar/compat/strlcat.c +72 -0
  33. data/ext/libtar/compat/strlcpy.c +68 -0
  34. data/ext/libtar/compat/strmode.c +199 -0
  35. data/ext/libtar/compat/strrstr.c +40 -0
  36. data/ext/libtar/compat/strsep.c +87 -0
  37. data/ext/libtar/config.h.in +187 -0
  38. data/ext/libtar/configure +8102 -0
  39. data/ext/libtar/configure.ac +114 -0
  40. data/ext/libtar/doc/Makefile.in +152 -0
  41. data/ext/libtar/doc/tar_append_file.3 +50 -0
  42. data/ext/libtar/doc/tar_block_read.3 +24 -0
  43. data/ext/libtar/doc/tar_extract_all.3 +43 -0
  44. data/ext/libtar/doc/tar_extract_file.3 +84 -0
  45. data/ext/libtar/doc/tar_open.3 +97 -0
  46. data/ext/libtar/doc/th_get_pathname.3 +63 -0
  47. data/ext/libtar/doc/th_print_long_ls.3 +22 -0
  48. data/ext/libtar/doc/th_read.3 +34 -0
  49. data/ext/libtar/doc/th_set_from_stat.3 +45 -0
  50. data/ext/libtar/lib/Makefile.in +92 -0
  51. data/ext/libtar/lib/append.c +272 -0
  52. data/ext/libtar/lib/block.c +384 -0
  53. data/ext/libtar/lib/decode.c +130 -0
  54. data/ext/libtar/lib/encode.c +237 -0
  55. data/ext/libtar/lib/extract.c +656 -0
  56. data/ext/libtar/lib/handle.c +150 -0
  57. data/ext/libtar/lib/internal.h +46 -0
  58. data/ext/libtar/lib/libtar.h +311 -0
  59. data/ext/libtar/lib/output.c +146 -0
  60. data/ext/libtar/lib/util.c +153 -0
  61. data/ext/libtar/lib/wrapper.c +175 -0
  62. data/ext/libtar/libtar/Makefile.in +73 -0
  63. data/ext/libtar/libtar/libtar.c +363 -0
  64. data/ext/libtar/listhash/ChangeLog +15 -0
  65. data/ext/libtar/listhash/TODO +21 -0
  66. data/ext/libtar/listhash/hash.c.in +344 -0
  67. data/ext/libtar/listhash/hash_new.3.in +74 -0
  68. data/ext/libtar/listhash/list.c.in +458 -0
  69. data/ext/libtar/listhash/list_new.3.in +86 -0
  70. data/ext/libtar/listhash/listhash.h.in +196 -0
  71. data/ext/libtar/listhash/module.ac +21 -0
  72. data/ext/libtar/win32/config.h +190 -0
  73. data/ext/libtar/win32/dirent.c +115 -0
  74. data/ext/libtar/win32/dirent.h +24 -0
  75. data/ext/libtar/win32/grp.h +4 -0
  76. data/ext/libtar/win32/listhash/libtar_hash.c +344 -0
  77. data/ext/libtar/win32/listhash/libtar_list.c +458 -0
  78. data/ext/libtar/win32/listhash/libtar_listhash.h +196 -0
  79. data/ext/libtar/win32/pwd.h +4 -0
  80. data/ext/libtar/win32/sys/param.h +8 -0
  81. data/ext/libtar/win32/tar.h +35 -0
  82. data/ext/libtar/win32/utime.h +6 -0
  83. data/ext/libtar/win32/win32/types.h +10 -0
  84. data/ext/tarruby.c +648 -0
  85. metadata +150 -0
@@ -0,0 +1,62 @@
1
+ /* $OpenBSD: strdup.c,v 1.3 1997/08/20 04:18:52 millert Exp $ */
2
+
3
+ /*
4
+ * Copyright (c) 1988, 1993
5
+ * The Regents of the University of California. All rights reserved.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following conditions
9
+ * are met:
10
+ * 1. Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * 2. Redistributions in binary form must reproduce the above copyright
13
+ * notice, this list of conditions and the following disclaimer in the
14
+ * documentation and/or other materials provided with the distribution.
15
+ * 3. All advertising materials mentioning features or use of this software
16
+ * must display the following acknowledgement:
17
+ * This product includes software developed by the University of
18
+ * California, Berkeley and its contributors.
19
+ * 4. Neither the name of the University nor the names of its contributors
20
+ * may be used to endorse or promote products derived from this software
21
+ * without specific prior written permission.
22
+ *
23
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33
+ * SUCH DAMAGE.
34
+ */
35
+
36
+ #if defined(LIBC_SCCS) && !defined(lint)
37
+ #if 0
38
+ static char sccsid[] = "@(#)strdup.c 8.1 (Berkeley) 6/4/93";
39
+ #else
40
+ static char *rcsid = "$OpenBSD: strdup.c,v 1.3 1997/08/20 04:18:52 millert Exp $";
41
+ #endif
42
+ #endif /* LIBC_SCCS and not lint */
43
+
44
+ #include <sys/types.h>
45
+
46
+ #include <stddef.h>
47
+ #include <stdlib.h>
48
+ #include <string.h>
49
+
50
+ char *
51
+ openbsd_strdup(str)
52
+ const char *str;
53
+ {
54
+ size_t siz;
55
+ char *copy;
56
+
57
+ siz = strlen(str) + 1;
58
+ if ((copy = malloc(siz)) == NULL)
59
+ return(NULL);
60
+ (void)memcpy(copy, str, siz);
61
+ return(copy);
62
+ }
@@ -0,0 +1,72 @@
1
+ /* $OpenBSD: strlcat.c,v 1.5 2001/01/13 16:17:24 millert Exp $ */
2
+
3
+ /*
4
+ * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
5
+ * All rights reserved.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following conditions
9
+ * are met:
10
+ * 1. Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * 2. Redistributions in binary form must reproduce the above copyright
13
+ * notice, this list of conditions and the following disclaimer in the
14
+ * documentation and/or other materials provided with the distribution.
15
+ * 3. The name of the author may not be used to endorse or promote products
16
+ * derived from this software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
19
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+ */
29
+
30
+ #if defined(LIBC_SCCS) && !defined(lint)
31
+ static char *rcsid = "$OpenBSD: strlcat.c,v 1.5 2001/01/13 16:17:24 millert Exp $";
32
+ #endif /* LIBC_SCCS and not lint */
33
+
34
+ #include <sys/types.h>
35
+ #include <string.h>
36
+
37
+ /*
38
+ * Appends src to string dst of size siz (unlike strncat, siz is the
39
+ * full size of dst, not space left). At most siz-1 characters
40
+ * will be copied. Always NUL terminates (unless siz <= strlen(dst)).
41
+ * Returns strlen(initial dst) + strlen(src); if retval >= siz,
42
+ * truncation occurred.
43
+ */
44
+ size_t strlcat(dst, src, siz)
45
+ char *dst;
46
+ const char *src;
47
+ size_t siz;
48
+ {
49
+ register char *d = dst;
50
+ register const char *s = src;
51
+ register size_t n = siz;
52
+ size_t dlen;
53
+
54
+ /* Find the end of dst and adjust bytes left but don't go past end */
55
+ while (n-- != 0 && *d != '\0')
56
+ d++;
57
+ dlen = d - dst;
58
+ n = siz - dlen;
59
+
60
+ if (n == 0)
61
+ return(dlen + strlen(s));
62
+ while (*s != '\0') {
63
+ if (n != 1) {
64
+ *d++ = *s;
65
+ n--;
66
+ }
67
+ s++;
68
+ }
69
+ *d = '\0';
70
+
71
+ return(dlen + (s - src)); /* count does not include NUL */
72
+ }
@@ -0,0 +1,68 @@
1
+ /* $OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $ */
2
+
3
+ /*
4
+ * Copyright (c) 1998 Todd C. Miller <Todd.Miller@courtesan.com>
5
+ * All rights reserved.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following conditions
9
+ * are met:
10
+ * 1. Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * 2. Redistributions in binary form must reproduce the above copyright
13
+ * notice, this list of conditions and the following disclaimer in the
14
+ * documentation and/or other materials provided with the distribution.
15
+ * 3. The name of the author may not be used to endorse or promote products
16
+ * derived from this software without specific prior written permission.
17
+ *
18
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
19
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
20
+ * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
21
+ * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
22
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
23
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
24
+ * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
26
+ * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
27
+ * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
+ */
29
+
30
+ #if defined(LIBC_SCCS) && !defined(lint)
31
+ static char *rcsid = "$OpenBSD: strlcpy.c,v 1.4 1999/05/01 18:56:41 millert Exp $";
32
+ #endif /* LIBC_SCCS and not lint */
33
+
34
+ #include <sys/types.h>
35
+ #include <string.h>
36
+
37
+ /*
38
+ * Copy src to string dst of size siz. At most siz-1 characters
39
+ * will be copied. Always NUL terminates (unless siz == 0).
40
+ * Returns strlen(src); if retval >= siz, truncation occurred.
41
+ */
42
+ size_t strlcpy(dst, src, siz)
43
+ char *dst;
44
+ const char *src;
45
+ size_t siz;
46
+ {
47
+ register char *d = dst;
48
+ register const char *s = src;
49
+ register size_t n = siz;
50
+
51
+ /* Copy as many bytes as will fit */
52
+ if (n != 0 && --n != 0) {
53
+ do {
54
+ if ((*d++ = *s++) == 0)
55
+ break;
56
+ } while (--n != 0);
57
+ }
58
+
59
+ /* Not enough room in dst, add NUL and traverse rest of src */
60
+ if (n == 0) {
61
+ if (siz != 0)
62
+ *d = '\0'; /* NUL-terminate dst */
63
+ while (*s++)
64
+ ;
65
+ }
66
+
67
+ return(s - src - 1); /* count does not include NUL */
68
+ }
@@ -0,0 +1,199 @@
1
+ /*-
2
+ * Copyright (c) 1990 The Regents of the University of California.
3
+ * All rights reserved.
4
+ *
5
+ * Redistribution and use in source and binary forms, with or without
6
+ * modification, are permitted provided that the following conditions
7
+ * are met:
8
+ * 1. Redistributions of source code must retain the above copyright
9
+ * notice, this list of conditions and the following disclaimer.
10
+ * 2. Redistributions in binary form must reproduce the above copyright
11
+ * notice, this list of conditions and the following disclaimer in the
12
+ * documentation and/or other materials provided with the distribution.
13
+ * 3. All advertising materials mentioning features or use of this software
14
+ * must display the following acknowledgement:
15
+ * This product includes software developed by the University of
16
+ * California, Berkeley and its contributors.
17
+ * 4. Neither the name of the University nor the names of its contributors
18
+ * may be used to endorse or promote products derived from this software
19
+ * without specific prior written permission.
20
+ *
21
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31
+ * SUCH DAMAGE.
32
+ */
33
+
34
+ #if defined(LIBC_SCCS) && !defined(lint)
35
+ static char *rcsid = "$OpenBSD: strmode.c,v 1.3 1997/06/13 13:57:20 deraadt Exp $";
36
+ #endif /* LIBC_SCCS and not lint */
37
+
38
+ #include <sys/types.h>
39
+ #include <sys/stat.h>
40
+ #include <string.h>
41
+
42
+ // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
43
+ #ifdef _WIN32
44
+ #include "win32/types.h"
45
+ #endif
46
+
47
+ void
48
+ strmode(mode, p)
49
+ register mode_t mode;
50
+ register char *p;
51
+ {
52
+ /* print type */
53
+ switch (mode & S_IFMT) {
54
+ case S_IFDIR: /* directory */
55
+ *p++ = 'd';
56
+ break;
57
+ case S_IFCHR: /* character special */
58
+ *p++ = 'c';
59
+ break;
60
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
61
+ case S_IFBLK: /* block special */
62
+ *p++ = 'b';
63
+ break;
64
+ #endif
65
+ case S_IFREG: /* regular */
66
+ *p++ = '-';
67
+ break;
68
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
69
+ case S_IFLNK: /* symbolic link */
70
+ *p++ = 'l';
71
+ break;
72
+ #endif
73
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
74
+ case S_IFSOCK: /* socket */
75
+ *p++ = 's';
76
+ break;
77
+ #endif
78
+ #ifdef S_IFIFO
79
+ case S_IFIFO: /* fifo */
80
+ *p++ = 'p';
81
+ break;
82
+ #endif
83
+ #ifdef S_IFWHT
84
+ case S_IFWHT: /* whiteout */
85
+ *p++ = 'w';
86
+ break;
87
+ #endif
88
+ default: /* unknown */
89
+ *p++ = '?';
90
+ break;
91
+ }
92
+ /* usr */
93
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
94
+ if (mode & S_IRUSR)
95
+ *p++ = 'r';
96
+ else
97
+ *p++ = '-';
98
+ #else
99
+ *p++ = '-';
100
+ #endif
101
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
102
+ if (mode & S_IWUSR)
103
+ *p++ = 'w';
104
+ else
105
+ *p++ = '-';
106
+ #else
107
+ *p++ = '-';
108
+ #endif
109
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
110
+ switch (mode & (S_IXUSR | S_ISUID)) {
111
+ case 0:
112
+ *p++ = '-';
113
+ break;
114
+ case S_IXUSR:
115
+ *p++ = 'x';
116
+ break;
117
+ case S_ISUID:
118
+ *p++ = 'S';
119
+ break;
120
+ case S_IXUSR | S_ISUID:
121
+ *p++ = 's';
122
+ break;
123
+ }
124
+ #else
125
+ *p++ = '-';
126
+ #endif
127
+ /* group */
128
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
129
+ if (mode & S_IRGRP)
130
+ *p++ = 'r';
131
+ else
132
+ *p++ = '-';
133
+ #else
134
+ *p++ = '-';
135
+ #endif
136
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
137
+ if (mode & S_IWGRP)
138
+ *p++ = 'w';
139
+ else
140
+ *p++ = '-';
141
+ #else
142
+ *p++ = '-';
143
+ #endif
144
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
145
+ switch (mode & (S_IXGRP | S_ISGID)) {
146
+ case 0:
147
+ *p++ = '-';
148
+ break;
149
+ case S_IXGRP:
150
+ *p++ = 'x';
151
+ break;
152
+ case S_ISGID:
153
+ *p++ = 'S';
154
+ break;
155
+ case S_IXGRP | S_ISGID:
156
+ *p++ = 's';
157
+ break;
158
+ }
159
+ #else
160
+ *p++ = '-';
161
+ #endif
162
+ /* other */
163
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
164
+ if (mode & S_IROTH)
165
+ *p++ = 'r';
166
+ else
167
+ *p++ = '-';
168
+ #else
169
+ *p++ = '-';
170
+ #endif
171
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
172
+ if (mode & S_IWOTH)
173
+ *p++ = 'w';
174
+ else
175
+ *p++ = '-';
176
+ #else
177
+ *p++ = '-';
178
+ #endif
179
+ #ifndef _WIN32 // modified by SUGAWARA Genki <sgwr_dts@yahoo.co.jp>
180
+ switch (mode & (S_IXOTH | S_ISVTX)) {
181
+ case 0:
182
+ *p++ = '-';
183
+ break;
184
+ case S_IXOTH:
185
+ *p++ = 'x';
186
+ break;
187
+ case S_ISVTX:
188
+ *p++ = 'T';
189
+ break;
190
+ case S_IXOTH | S_ISVTX:
191
+ *p++ = 't';
192
+ break;
193
+ }
194
+ #else
195
+ *p++ = '-';
196
+ #endif
197
+ *p++ = ' '; /* will be a '+' if ACL's implemented */
198
+ *p = '\0';
199
+ }
@@ -0,0 +1,40 @@
1
+ /*
2
+ ** Copyright 1998-2002 University of Illinois Board of Trustees
3
+ ** Copyright 1998-2002 Mark D. Roth
4
+ ** All rights reserved.
5
+ **
6
+ ** strrstr.c - strrstr() function for compatibility library
7
+ **
8
+ ** Mark D. Roth <roth@uiuc.edu>
9
+ ** Campus Information Technologies and Educational Services
10
+ ** University of Illinois at Urbana-Champaign
11
+ */
12
+
13
+ #include <stdio.h>
14
+ #include <sys/types.h>
15
+
16
+ #include <string.h>
17
+
18
+
19
+ /*
20
+ ** find the last occurrance of find in string
21
+ */
22
+ char *
23
+ strrstr(char *string, char *find)
24
+ {
25
+ size_t stringlen, findlen;
26
+ char *cp;
27
+
28
+ findlen = strlen(find);
29
+ stringlen = strlen(string);
30
+ if (findlen > stringlen)
31
+ return NULL;
32
+
33
+ for (cp = string + stringlen - findlen; cp >= string; cp--)
34
+ if (strncmp(cp, find, findlen) == 0)
35
+ return cp;
36
+
37
+ return NULL;
38
+ }
39
+
40
+
@@ -0,0 +1,87 @@
1
+ /* $OpenBSD: strsep.c,v 1.3 1997/08/20 04:28:14 millert Exp $ */
2
+
3
+ /*-
4
+ * Copyright (c) 1990, 1993
5
+ * The Regents of the University of California. All rights reserved.
6
+ *
7
+ * Redistribution and use in source and binary forms, with or without
8
+ * modification, are permitted provided that the following conditions
9
+ * are met:
10
+ * 1. Redistributions of source code must retain the above copyright
11
+ * notice, this list of conditions and the following disclaimer.
12
+ * 2. Redistributions in binary form must reproduce the above copyright
13
+ * notice, this list of conditions and the following disclaimer in the
14
+ * documentation and/or other materials provided with the distribution.
15
+ * 3. All advertising materials mentioning features or use of this software
16
+ * must display the following acknowledgement:
17
+ * This product includes software developed by the University of
18
+ * California, Berkeley and its contributors.
19
+ * 4. Neither the name of the University nor the names of its contributors
20
+ * may be used to endorse or promote products derived from this software
21
+ * without specific prior written permission.
22
+ *
23
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
24
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
25
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
26
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
27
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
28
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
29
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
31
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
32
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
33
+ * SUCH DAMAGE.
34
+ */
35
+
36
+ #include <string.h>
37
+ #include <stdio.h>
38
+
39
+ #if defined(LIBC_SCCS) && !defined(lint)
40
+ #if 0
41
+ static char sccsid[] = "@(#)strsep.c 8.1 (Berkeley) 6/4/93";
42
+ #else
43
+ static char *rcsid = "$OpenBSD: strsep.c,v 1.3 1997/08/20 04:28:14 millert Exp $";
44
+ #endif
45
+ #endif /* LIBC_SCCS and not lint */
46
+
47
+ #ifndef HAVE_STRSEP
48
+ /*
49
+ * Get next token from string *stringp, where tokens are possibly-empty
50
+ * strings separated by characters from delim.
51
+ *
52
+ * Writes NULs into the string at *stringp to end tokens.
53
+ * delim need not remain constant from call to call.
54
+ * On return, *stringp points past the last NUL written (if there might
55
+ * be further tokens), or is NULL (if there are definitely no more tokens).
56
+ *
57
+ * If *stringp is NULL, strsep returns NULL.
58
+ */
59
+ char *
60
+ strsep(stringp, delim)
61
+ register char **stringp;
62
+ register const char *delim;
63
+ {
64
+ register char *s;
65
+ register const char *spanp;
66
+ register int c, sc;
67
+ char *tok;
68
+
69
+ if ((s = *stringp) == NULL)
70
+ return (NULL);
71
+ for (tok = s;;) {
72
+ c = *s++;
73
+ spanp = delim;
74
+ do {
75
+ if ((sc = *spanp++) == c) {
76
+ if (c == 0)
77
+ s = NULL;
78
+ else
79
+ s[-1] = 0;
80
+ *stringp = s;
81
+ return (tok);
82
+ }
83
+ } while (sc != 0);
84
+ }
85
+ /* NOTREACHED */
86
+ }
87
+ #endif /* ! HAVE_STRSEP */