17 char *perms =
xstrdup(
"----------");
21 else if (S_ISDIR(mode))
25 else if (S_ISFIFO(mode))
31 else if (S_ISCHR(mode))
33 else if (S_ISBLK(mode))
38 if (mode & S_IRUSR) perms[1] =
'r';
39 if (mode & S_IWUSR) perms[2] =
'w';
40 if (mode & S_IXUSR) perms[3] =
'x';
42 if (mode & S_IRGRP) perms[4] =
'r';
43 if (mode & S_IWGRP) perms[5] =
'w';
44 if (mode & S_IXGRP) perms[6] =
'x';
46 if (mode & S_IROTH) perms[7] =
'r';
47 if (mode & S_IWOTH) perms[8] =
'w';
48 if (mode & S_IXOTH) perms[9] =
'x';
51 perms[3] = ((mode & S_IXUSR) ?
's' :
'S');
54 perms[6] = ((mode & S_IXGRP) ?
's' :
'S');
57 perms[9] = ((mode & S_IXOTH) ?
't' :
'T');
70 int argc = (argcPtr ? *argcPtr : 0);
71 const char **
argv = (argvPtr ? *argvPtr :
NULL);
78 xfd =
Fdopen(fd,
"r.fpio");
93 s = fgets(line,
sizeof(line) - 1, f);
102 #define DOCTYPE_HTML_PUBLIC "<!DOCTYPE HTML PUBLIC"
109 if ((se = strchr(s,
'#')) !=
NULL) *se =
'\0';
113 while (se > s && (se[-1] ==
'\n' || se[-1] ==
'\r'))
115 while (*s && strchr(
" \f\n\r\t\v", *s) !=
NULL)
117 if (*s ==
'\0')
continue;
152 for (i = 0; i < argc; i++) {
162 const char ** nav = (
const char **)
xcalloc((nac + 1),
sizeof(*nav));
164 for (i = 0, j = 0; i <
next; i++) {
170 memcpy(nav + j, av, ac *
sizeof(*nav));
171 if ((argc - next) > 0)
172 memcpy(nav + j + ac, argv + next, (argc - next) *
sizeof(*nav));
176 *argvPtr = argv =
_free(argv);
184 *argvPtr =
_free(*argvPtr);
193 for (i = 0; i <
ac; i++)
194 av[i] =
_free(av[i]);
rpmlog(RPMLOG_ERR,"%s\n", buf)
char * xstrdup(const char *str)
#define DOCTYPE_HTML_PUBLIC
rpmiob rpmiobFree(rpmiob iob)
Destroy a I/O buffer instance.
rpmiob rpmiobAppend(rpmiob iob, const char *s, size_t nl)
Append string to I/O buffer.
static PyObject *char * mode
enum rpmRC_e rpmRC
RPM return codes.
Yet Another syslog(3) API clone.
int rpmGlob(const char *patterns, int *argcPtr, const char ***argvPtr)
Return URL path(s) from a (URL prefixed) pattern glob.
const char * Fstrerror(FD_t fd)
strerror(3) clone.
void * xcalloc(size_t nmemb, size_t size)
char * rpmPermsString(int mode)
Return ls(1)-like formatted mode string.
Routines to expand a manifest containing glob expressions into an argv list.
The FD_t File Handle data structure.
rpmRC rpmReadPackageManifest(FD_t fd, int *argcPtr, const char ***argvPtr)
Read manifest, glob items, and append to existing args.
rpmiob rpmiobNew(size_t len)
Create an I/O buffer.
int Ferror(FD_t fd)
ferror(3) clone.
char * rpmiobStr(rpmiob iob)
Return I/O buffer (as string).
FD_t Fdopen(FD_t ofd, const char *fmode)
static const char * fdGetOPath(FD_t fd)
static void * fdGetFp(FD_t fd)
static void * _free(const void *p)
Wrapper to free(3), hides const compilation noise, permit NULL, return NULL.