21 char *perms =
xstrdup(
"----------");
25 else if (S_ISDIR(mode))
29 else if (S_ISFIFO(mode))
35 else if (S_ISCHR(mode))
37 else if (S_ISBLK(mode))
42 if (mode & S_IRUSR) perms[1] =
'r';
43 if (mode & S_IWUSR) perms[2] =
'w';
44 if (mode & S_IXUSR) perms[3] =
'x';
46 if (mode & S_IRGRP) perms[4] =
'r';
47 if (mode & S_IWGRP) perms[5] =
'w';
48 if (mode & S_IXGRP) perms[6] =
'x';
50 if (mode & S_IROTH) perms[7] =
'r';
51 if (mode & S_IWOTH) perms[8] =
'w';
52 if (mode & S_IXOTH) perms[9] =
'x';
55 perms[3] = ((mode & S_IXUSR) ?
's' :
'S');
58 perms[6] = ((mode & S_IXGRP) ?
's' :
'S');
61 perms[9] = ((mode & S_IXOTH) ?
't' :
'T');
75 const char ** av = NULL;
76 int argc = (argcPtr ? *argcPtr : 0);
77 const char ** argv = (argvPtr ? *argvPtr : NULL);
86 xfd =
Fdopen(fd,
"r.fpio");
92 if ((f = (FILE *)
fdGetFp(xfd)) == NULL) {
102 s = fgets(line,
sizeof(line) - 1, f);
109 #define DOCTYPE_HTML_PUBLIC "<!DOCTYPE HTML PUBLIC"
116 if ((se = strchr(s,
'#')) != NULL) *se =
'\0';
120 while (se > s && (se[-1] ==
'\n' || se[-1] ==
'\r'))
122 while (*s && strchr(
" \f\n\r\t\v", *s) != NULL)
124 if (*s ==
'\0')
continue;
158 for (i = 0; i < argc; i++) {
168 const char ** nav =
xcalloc((nac + 1),
sizeof(*nav));
170 for (i = 0, j = 0; i <
next; i++) {
176 memcpy(nav + j, av, ac *
sizeof(*nav));
177 if ((argc - next) > 0)
178 memcpy(nav + j + ac, argv + next, (argc - next) *
sizeof(*nav));
182 *argvPtr = argv =
_free(argv);
190 *argvPtr =
_free(*argvPtr);
199 if (argvPtr == NULL || (rpmrc !=
RPMRC_OK && av)) {
202 for (i = 0; i < ac; i++)
203 av[i] =
_free(av[i]);