author | Ronald Jordan <ron.jordan@oracle.com> |
Fri, 09 May 2014 15:18:09 -0700 | |
branch | s11u1-sru |
changeset 3134 | 8c9dcb670552 |
parent 356 | cc77dce0ea27 |
permissions | -rw-r--r-- |
356
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
1 |
--- cdrtools-3.00/mkisofs/mkisofs.c.orig Tue Jun 28 15:31:06 2011 |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
2 |
+++ cdrtools-3.00/mkisofs/mkisofs.c Tue Jun 28 15:32:46 2011 |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
3 |
@@ -66,7 +66,7 @@ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
4 |
struct directory *root = NULL; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
5 |
int path_ind; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
6 |
|
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
7 |
-char version_string[] = VERSION; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
8 |
+char version_string[] = VERSION "+eltorito-platform"; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
9 |
|
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
10 |
char *outfile; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
11 |
FILE *discimage; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
12 |
@@ -110,6 +110,8 @@ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
13 |
int osecsize = 0; /* Output-sector size, 0 means default secsize 2048 */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
14 |
int use_Joliet = 0; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
15 |
int jlen = JMAX; /* maximum Joliet file name length */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
16 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
17 |
+int def_platid = EL_TORITO_ARCH_x86; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
18 |
/* |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
19 |
* Verbose levels currently used: |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
20 |
* |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
21 |
@@ -182,6 +184,7 @@ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
22 |
int help; /* CLI Parameter for -help option */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
23 |
int joliet_long; /* CLI Parameter for -joliet-long option */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
24 |
char *jcharset; /* CLI Parameter for -jcharset option */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
25 |
+char *modification_date; /* CLI Parameter for -modification-date */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
26 |
int max_filenames; /* CLI Parameter for -max-iso9660-filenames option */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
27 |
char *log_file; /* CLI Parameter for -log-file option */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
28 |
char *dir_mode_str; /* CLI Parameter for -new-dir-mode option */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
29 |
@@ -446,7 +449,374 @@ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
30 |
return (1); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
31 |
} |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
32 |
|
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
33 |
+#define IS_SEPARATOR1(c) (c == '/' || c == '-') |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
34 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
35 |
+LOCAL boolean_t |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
36 |
+isalldigits(char *p, int n) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
37 |
+{ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
38 |
+ int i; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
39 |
+ if (p == NULL) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
40 |
+ return (B_FALSE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
41 |
+ for (i = 0; i < n; i++) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
42 |
+ if (p[i] == 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
43 |
+ return (B_FALSE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
44 |
+ if ((p[i] < '0') || (p[i] > '9')) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
45 |
+ return (B_FALSE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
46 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
47 |
+ return (B_TRUE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
48 |
+} |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
49 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
50 |
+LOCAL char * |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
51 |
+findnextsep(char *p, char *matches) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
52 |
+{ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
53 |
+ char *mp; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
54 |
+ while (*p) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
55 |
+ if (matches == NULL) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
56 |
+ if ((*p < '0') || (*p > '9')) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
57 |
+ return (p); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
58 |
+ } else { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
59 |
+ mp = matches; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
60 |
+ while (*mp) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
61 |
+ if (*mp == *p) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
62 |
+ return (p); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
63 |
+ mp++; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
64 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
65 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
66 |
+ p++; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
67 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
68 |
+ if (*p == NULL) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
69 |
+ return (NULL); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
70 |
+ return (p); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
71 |
+} |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
72 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
73 |
+LOCAL boolean_t |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
74 |
+check_n_get_val(char *s, int n, long *val, int checklower, long lower, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
75 |
+int checkupper, long upper) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
76 |
+{ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
77 |
+ char c; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
78 |
+ long l; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
79 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
80 |
+ if (isalldigits(s, n) != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
81 |
+ return (B_FALSE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
82 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
83 |
+ if (n > 20) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
84 |
+ return (B_FALSE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
85 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
86 |
+ c = *(s+n); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
87 |
+ *(s + n) = 0; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
88 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
89 |
+ errno = 0; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
90 |
+ l = strtol(s, NULL, 10); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
91 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
92 |
+ *(s+n) = c; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
93 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
94 |
+ if (errno) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
95 |
+ return (B_FALSE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
96 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
97 |
+ if (val != NULL) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
98 |
+ *val = l; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
99 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
100 |
+ if (checklower) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
101 |
+ if (l < lower) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
102 |
+ return (B_FALSE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
103 |
+ if (checkupper) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
104 |
+ if (l > upper) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
105 |
+ return (B_FALSE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
106 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
107 |
+ return (B_TRUE); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
108 |
+} |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
109 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
110 |
LOCAL int |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
111 |
+get_gmt() |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
112 |
+{ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
113 |
+ time_t now; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
114 |
+ struct tm gmt, *gmp, *localp, localt; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
115 |
+ time_t gmtoffsetsec = 0; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
116 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
117 |
+ now = time(NULL); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
118 |
+ if (now == -1) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
119 |
+ comerrno(EX_BAD, "time failed internal error\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
120 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
121 |
+ localp = localtime(&now); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
122 |
+ if (localp == NULL) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
123 |
+ comerrno(EX_BAD, "localtime failed internal error\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
124 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
125 |
+ localt = *localp; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
126 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
127 |
+ gmp = gmtime(&now); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
128 |
+ if (gmp == NULL) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
129 |
+ comerrno(EX_BAD, "gmtime failed internal error\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
130 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
131 |
+ gmt = *gmp; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
132 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
133 |
+ gmtoffsetsec = mktime(&localt) - mktime(&gmt); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
134 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
135 |
+ return ((int)(gmtoffsetsec /(60 * 15))); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
136 |
+} |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
137 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
138 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
139 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
140 |
+char modbuf[18]; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
141 |
+LOCAL int |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
142 |
+get_modification_date(opt_arg) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
143 |
+ char *opt_arg; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
144 |
+{ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
145 |
+ int len; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
146 |
+ char *optp = opt_arg; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
147 |
+ char *dotp = NULL; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
148 |
+ char *signp = NULL; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
149 |
+ char *bufp = modbuf; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
150 |
+ char *tmpp = NULL; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
151 |
+ char *default_mod = "00010101000000000"; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
152 |
+ char tmpstr[5]; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
153 |
+ int gmtset = 0; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
154 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
155 |
+ strncpy(modbuf, default_mod, 17); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
156 |
+ modbuf[17] = 0; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
157 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
158 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
159 |
+ len = strlen(opt_arg); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
160 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
161 |
+ /* first find the gmt */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
162 |
+ tmpp = strrchr(optp, '+'); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
163 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
164 |
+ if (tmpp != NULL || ((tmpp = strrchr(optp, '-')) != NULL)) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
165 |
+ /* it has to be the last 4 digits */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
166 |
+ if ((tmpp - optp) != (len - 5)) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
167 |
+ if (*tmpp == '+') |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
168 |
+ comerrno(EX_BAD, "Bad modification date\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
169 |
+ /* if '-' take it as a separator */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
170 |
+ } else { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
171 |
+ long gh, gm, val; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
172 |
+ if (check_n_get_val(tmpp + 1, 2, &gh, 0, 0, 0, 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
173 |
+ != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
174 |
+ comerrno(EX_BAD, "Bad modification date:gh\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
175 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
176 |
+ if (check_n_get_val(tmpp + 3, 2, &gm, 0, 0, 0, 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
177 |
+ != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
178 |
+ comerrno(EX_BAD, "Bad modification date:gm\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
179 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
180 |
+ val = (((gh * 60) + gm) / 15) * |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
181 |
+ ((*tmpp == '-') ? -1 : 1); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
182 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
183 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
184 |
+ if (val < -48 || val > 52) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
185 |
+ comerrno(EX_BAD, "Bad modification date:" |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
186 |
+ " gmt offset\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
187 |
+ modbuf[16] = val; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
188 |
+ gmtset = 1; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
189 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
190 |
+ /* get rid of gmt in input str, we are done with it */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
191 |
+ *tmpp = 0; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
192 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
193 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
194 |
+ if (gmtset == 0) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
195 |
+ modbuf[16] = get_gmt(); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
196 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
197 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
198 |
+ len = strlen(optp); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
199 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
200 |
+ if ((tmpp = strrchr(optp, '.')) != NULL) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
201 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
202 |
+ if ((tmpp - optp) != (len - 3)) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
203 |
+ comerrno(EX_BAD, "Bad modification date:hundredth " |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
204 |
+ "of sec\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
205 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
206 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
207 |
+ if (check_n_get_val(tmpp + 1, 2, NULL, 0, 0, 0, 0) != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
208 |
+ comerrno(EX_BAD, "Bad modification date:hundredth of" |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
209 |
+ " second length\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
210 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
211 |
+ /* since all digits, can not be > 99 */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
212 |
+ modbuf[14] = *(tmpp + 1); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
213 |
+ modbuf[15] = *(tmpp + 2); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
214 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
215 |
+ /* get rid of hh in input str, we are done with it */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
216 |
+ *tmpp = 0; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
217 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
218 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
219 |
+ tmpp = findnextsep(optp, "/-"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
220 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
221 |
+ if (tmpp) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
222 |
+ if (tmpp - optp == 2) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
223 |
+ long year; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
224 |
+ /* 2 digit year YY- */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
225 |
+ if (check_n_get_val(optp, 2, &year, 0, 0, 0, 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
226 |
+ != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
227 |
+ comerrno(EX_BAD, "Bad modification date:year" |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
228 |
+ "length \n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
229 |
+ /* 69-99 1969-1999, 00-68 2000 to 2068 */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
230 |
+ if (year > 68) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
231 |
+ strncpy(bufp, "19", 2); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
232 |
+ else |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
233 |
+ strncpy(bufp, "20", 2); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
234 |
+ bufp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
235 |
+ strncpy(bufp, optp, 2); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
236 |
+ bufp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
237 |
+ optp = tmpp + 1; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
238 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
239 |
+ } else if (tmpp - optp == 4) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
240 |
+ long year; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
241 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
242 |
+ /* 4 digit year YYYY- */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
243 |
+ if (check_n_get_val(optp, 4, &year, 1, 1, 0, 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
244 |
+ != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
245 |
+ comerrno(EX_BAD, "Bad modification date:" |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
246 |
+ "year\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
247 |
+ strncpy(bufp, optp, 4); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
248 |
+ bufp += 4; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
249 |
+ optp = tmpp + 1; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
250 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
251 |
+ } else if (tmpp - optp == 6) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
252 |
+ /* YYYYMM- */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
253 |
+ long year; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
254 |
+ if (isalldigits(optp, 6) != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
255 |
+ comerrno(EX_BAD, "Bad modification date: " |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
256 |
+ "year\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
257 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
258 |
+ if (check_n_get_val(optp, 4, &year, 1, 1, 0, 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
259 |
+ != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
260 |
+ comerrno(EX_BAD, "Bad modification date: year " |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
261 |
+ "length\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
262 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
263 |
+ strncpy(bufp, optp, 4); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
264 |
+ optp = optp + 4; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
265 |
+ bufp += 4; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
266 |
+ } else |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
267 |
+ comerrno(EX_BAD, "Bad modification date\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
268 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
269 |
+ } else /* tmpp == NULL */ { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
270 |
+ /* YYYY[MM[DD.... */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
271 |
+ long year; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
272 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
273 |
+ if (check_n_get_val(optp, 4, &year, 1, 1, 0, 0) != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
274 |
+ comerrno(EX_BAD, "Bad modification date year:length\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
275 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
276 |
+ strncpy(bufp, optp, 4); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
277 |
+ bufp += 4; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
278 |
+ optp += 4; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
279 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
280 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
281 |
+ if (*optp) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
282 |
+ long month; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
283 |
+ /* optp should point to MM */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
284 |
+ if (check_n_get_val(optp, 2, &month, 1, 1, 1, 12) != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
285 |
+ comerrno(EX_BAD, "Bad modification date:month\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
286 |
+ strncpy(bufp, optp, 2); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
287 |
+ bufp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
288 |
+ optp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
289 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
290 |
+ if ((*optp) && (IS_SEPARATOR1(*optp))) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
291 |
+ optp++; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
292 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
293 |
+ if (*optp) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
294 |
+ long day; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
295 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
296 |
+ if (check_n_get_val(optp, 2, &day, 1, 1, 1, 31) != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
297 |
+ comerrno(EX_BAD, "Bad modification date: day\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
298 |
+ /* DD */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
299 |
+ strncpy(bufp, optp, 2); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
300 |
+ bufp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
301 |
+ optp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
302 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
303 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
304 |
+ if (*optp == ' ') |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
305 |
+ optp++; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
306 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
307 |
+ if (*optp) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
308 |
+ long hour; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
309 |
+ if (check_n_get_val(optp, 2, &hour, 0, 0, 1, 23) != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
310 |
+ comerrno(EX_BAD, "Bad modification date: hour\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
311 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
312 |
+ strncpy(bufp, optp, 2); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
313 |
+ bufp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
314 |
+ optp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
315 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
316 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
317 |
+ if (*optp == ':') |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
318 |
+ optp++; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
319 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
320 |
+ if (*optp) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
321 |
+ long min; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
322 |
+ if (check_n_get_val(optp, 2, &min, 0, 0, 1, 59) != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
323 |
+ comerrno(EX_BAD, "Bad modification date: minute\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
324 |
+ strncpy(bufp, optp, 2); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
325 |
+ bufp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
326 |
+ optp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
327 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
328 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
329 |
+ if (*optp == ':') |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
330 |
+ optp++; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
331 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
332 |
+ if (*optp) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
333 |
+ long sec; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
334 |
+ if (check_n_get_val(optp, 2, &sec, 0, 0, 1, 59) != B_TRUE) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
335 |
+ comerrno(EX_BAD, "Bad modification date: second\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
336 |
+ strncpy(bufp, optp, 2); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
337 |
+ bufp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
338 |
+ optp += 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
339 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
340 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
341 |
+ if (*optp == ' ') |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
342 |
+ /* optional space */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
343 |
+ optp++; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
344 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
345 |
+ if (*optp != 0) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
346 |
+ comerrno(EX_BAD, "Bad modification date: extra \n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
347 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
348 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
349 |
+ modification_date = modbuf; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
350 |
+ return (1); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
351 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
352 |
+} |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
353 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
354 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
355 |
+LOCAL int |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
356 |
+get_boot_platid(opt_arg) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
357 |
+ char *opt_arg; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
358 |
+{ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
359 |
+ long val; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
360 |
+ char *ptr; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
361 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
362 |
+ use_eltorito++; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
363 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
364 |
+ if (strcmp(opt_arg, "x86") == 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
365 |
+ val = 0; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
366 |
+ else if (strcmp(opt_arg, "PPC") == 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
367 |
+ val = 1; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
368 |
+ else if (strcmp(opt_arg, "Mac") == 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
369 |
+ val = 2; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
370 |
+ else if (strcmp(opt_arg, "efi") == 0) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
371 |
+ val = 0xEF; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
372 |
+ else { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
373 |
+ val = strtol(opt_arg, &ptr, 0); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
374 |
+ if (*ptr || val < 0 || val >= 0x100) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
375 |
+ comerrno(EX_BAD, "Bad boot system ID.\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
376 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
377 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
378 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
379 |
+ if (boot_image == NULL) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
380 |
+ /* called before -eltorito-boot option */ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
381 |
+ def_platid = val; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
382 |
+ return (1); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
383 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
384 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
385 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
386 |
+ if (val != def_platid) { |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
387 |
+ new_boot_entry(); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
388 |
+ get_boot_entry(); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
389 |
+ } |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
390 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
391 |
+ if (current_boot_entry == NULL) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
392 |
+ comerrno(EX_BAD, "No current boot entry.\n"); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
393 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
394 |
+ current_boot_entry->type = ELTORITO_SECTION_HEADER; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
395 |
+ current_boot_entry->boot_platid = val; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
396 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
397 |
+ return (1); |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
398 |
+} |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
399 |
+ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
400 |
+LOCAL int |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
401 |
get_boot_size(opt_arg) |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
402 |
char *opt_arg; |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
403 |
{ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
404 |
@@ -840,7 +1210,8 @@ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
405 |
"Allow full 31 character filenames for ISO9660 names"}, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
406 |
{{"max-iso9660-filenames", &max_filenames }, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
407 |
"Allow 37 character filenames for ISO9660 names (violates ISO9660)"}, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
408 |
- |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
409 |
+ {{"modification-date&", NULL, (getpargfun)get_modification_date}, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
410 |
+ "\1[string]\1Set the modification date in the primary volume descriptor"}, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
411 |
{{"allow-leading-dots", &allow_leading_dots }, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
412 |
"Allow ISO9660 filenames to start with '.' (violates ISO9660)"}, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
413 |
{{"ldots", &allow_leading_dots }, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
414 |
@@ -968,6 +1339,8 @@ |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
415 |
"Boot image is 'no emulation' image"}, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
416 |
{{"no-boot~", NULL, (getpargfun)get_no_boot }, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
417 |
"Boot image is not bootable"}, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
418 |
+ {{"eltorito-platform&", NULL, (getpargfun)get_boot_platid }, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
419 |
+ "\1#\1Set eltorito platform id"}, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
420 |
{{"boot-load-seg&", NULL, (getpargfun)get_boot_addr }, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
421 |
"\1#\1Set load segment for boot image"}, |
cc77dce0ea27
PSARC/2011/154 mkisofs enhancements
Phi Tran <Phi.Tran@Sun.COM>
parents:
diff
changeset
|
422 |
{{"boot-load-size&", NULL, (getpargfun)get_boot_size }, |