diff options
author | flz <flz@FreeBSD.org> | 2010-04-23 11:07:43 +0000 |
---|---|---|
committer | flz <flz@FreeBSD.org> | 2010-04-23 11:07:43 +0000 |
commit | e9cfab3d986b32566bb9678314eba47c39f07856 (patch) | |
tree | 6be9bed7e8e47b70e4765242d3ba0b6144132981 /usr.sbin/pkg_install/lib/exec.c | |
parent | 312805d71c96331a79af508c70e925b2eae8391f (diff) | |
download | FreeBSD-src-e9cfab3d986b32566bb9678314eba47c39f07856.zip FreeBSD-src-e9cfab3d986b32566bb9678314eba47c39f07856.tar.gz |
- Take libinstall.a out of pkg_install and make it a proper shared library.
- Rework the wrapper support to check libpkg version as well as pkg_install
version.
- Add libfetch to _prebuild_libs.
- There are no new features introduced.
Notes: the API is not stable, so basically, do not use libpkg in your
projects for now. Also there's no manpage for libpkg yet, because the API
will change drastically. I repeat, do not use libpkg for now.
Diffstat (limited to 'usr.sbin/pkg_install/lib/exec.c')
-rw-r--r-- | usr.sbin/pkg_install/lib/exec.c | 106 |
1 files changed, 0 insertions, 106 deletions
diff --git a/usr.sbin/pkg_install/lib/exec.c b/usr.sbin/pkg_install/lib/exec.c deleted file mode 100644 index fc8220c..0000000 --- a/usr.sbin/pkg_install/lib/exec.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * FreeBSD install - a package for the installation and maintainance - * of non-core utilities. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * Jordan K. Hubbard - * 18 July 1993 - * - * Miscellaneous system routines. - * - */ - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - -#include "lib.h" -#include <err.h> - -/* - * Unusual system() substitute. Accepts format string and args, - * builds and executes command. Returns exit code. - */ - -int -vsystem(const char *fmt, ...) -{ - va_list args; - char *cmd; - int ret, maxargs; - - maxargs = sysconf(_SC_ARG_MAX); - maxargs -= 32; /* some slop for the sh -c */ - cmd = malloc(maxargs); - if (!cmd) { - warnx("vsystem can't alloc arg space"); - return 1; - } - - va_start(args, fmt); - if (vsnprintf(cmd, maxargs, fmt, args) > maxargs) { - warnx("vsystem args are too long"); - return 1; - } -#ifdef DEBUG -printf("Executing %s\n", cmd); -#endif - ret = system(cmd); - va_end(args); - free(cmd); - return ret; -} - -char * -vpipe(const char *fmt, ...) -{ - FILE *fp; - char *cmd, *rp; - int maxargs; - va_list args; - - rp = malloc(MAXPATHLEN); - if (!rp) { - warnx("vpipe can't alloc buffer space"); - return NULL; - } - maxargs = sysconf(_SC_ARG_MAX); - maxargs -= 32; /* some slop for the sh -c */ - cmd = alloca(maxargs); - if (!cmd) { - warnx("vpipe can't alloc arg space"); - return NULL; - } - - va_start(args, fmt); - if (vsnprintf(cmd, maxargs, fmt, args) > maxargs) { - warnx("vsystem args are too long"); - return NULL; - } -#ifdef DEBUG - fprintf(stderr, "Executing %s\n", cmd); -#endif - fflush(NULL); - fp = popen(cmd, "r"); - if (fp == NULL) { - warnx("popen() failed"); - return NULL; - } - get_string(rp, MAXPATHLEN, fp); -#ifdef DEBUG - fprintf(stderr, "Returned %s\n", rp); -#endif - va_end(args); - if (pclose(fp) || (strlen(rp) == 0)) { - free(rp); - return NULL; - } - return rp; -} |