diff options
-rw-r--r-- | src/pacman/Makefile | 2 | ||||
-rw-r--r-- | src/pacman/add.c | 3 | ||||
-rw-r--r-- | src/pacman/conf.c | 2 | ||||
-rw-r--r-- | src/pacman/download.c | 2 | ||||
-rw-r--r-- | src/pacman/log.c | 115 | ||||
-rw-r--r-- | src/pacman/log.h | 49 | ||||
-rw-r--r-- | src/pacman/pacman.c | 134 | ||||
-rw-r--r-- | src/pacman/pacman.h | 23 | ||||
-rw-r--r-- | src/pacman/query.c | 2 | ||||
-rw-r--r-- | src/pacman/remove.c | 3 | ||||
-rw-r--r-- | src/pacman/sync.c | 1 | ||||
-rw-r--r-- | src/pacman/trans.c | 87 | ||||
-rw-r--r-- | src/pacman/trans.h | 29 |
13 files changed, 292 insertions, 160 deletions
diff --git a/src/pacman/Makefile b/src/pacman/Makefile index 3d2874ac..9aebc67c 100644 --- a/src/pacman/Makefile +++ b/src/pacman/Makefile @@ -6,10 +6,12 @@ AR=ar rc RAN=ranlib OBJECTS=util.o \ + log.o \ list.o \ package.o \ db.o \ download.o \ + trans.o \ add.o \ remove.o \ upgrade.o \ diff --git a/src/pacman/add.c b/src/pacman/add.c index 1bf46f36..b3bc05ad 100644 --- a/src/pacman/add.c +++ b/src/pacman/add.c @@ -25,9 +25,10 @@ #include <alpm.h> /* pacman */ +#include "log.h" #include "list.h" #include "download.h" -#include "pacman.h" +#include "trans.h" extern unsigned char pmo_upgrade; extern unsigned char pmo_flags; diff --git a/src/pacman/conf.c b/src/pacman/conf.c index c5df8352..bc6b214f 100644 --- a/src/pacman/conf.c +++ b/src/pacman/conf.c @@ -27,10 +27,10 @@ #include <alpm.h> /* pacman */ #include "util.h" +#include "log.h" #include "list.h" #include "sync.h" #include "download.h" -#include "pacman.h" #define min(X, Y) ((X) < (Y) ? (X) : (Y)) diff --git a/src/pacman/download.c b/src/pacman/download.c index 8fbcd647..f994cab4 100644 --- a/src/pacman/download.c +++ b/src/pacman/download.c @@ -31,9 +31,9 @@ #include <alpm.h> /* pacman */ +#include "log.h" #include "list.h" #include "download.h" -#include "pacman.h" /* progress bar */ static char sync_fnm[25]; diff --git a/src/pacman/log.c b/src/pacman/log.c new file mode 100644 index 00000000..c0bb62b6 --- /dev/null +++ b/src/pacman/log.c @@ -0,0 +1,115 @@ +/* + * log.c + * + * Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +#include "config.h" +#include <stdio.h> +#include <string.h> +#include <stdarg.h> + +#include <alpm.h> + +/* pacman */ +#include "log.h" + +#define LOG_STR_LEN 256 + +extern unsigned short pmo_verbose; + +static int neednl; /* for cleaner message output */ + +/* Callback to handle notifications from the library + */ +void cb_log(unsigned short level, char *msg) +{ + char str[8] = ""; + + switch(level) { + case PM_LOG_DEBUG: + sprintf(str, "DEBUG"); + break; + case PM_LOG_ERROR: + sprintf(str, "ERROR"); + break; + case PM_LOG_WARNING: + sprintf(str, "WARNING"); + break; + case PM_LOG_FLOW1: + sprintf(str, "FLOW1"); + break; + case PM_LOG_FLOW2: + sprintf(str, "FLOW2"); + break; + case PM_LOG_FUNCTION: + sprintf(str, "FUNCTION"); + break; + default: + sprintf(str, "???"); + break; + } + + if(strlen(str) > 0) { + MSG(NL, "%s: %s\n", str, msg); + } +} + +/* Wrapper to fprintf() that allows to choose if we want the output + * to be appended on the current line, or written to a new one + */ +void pm_fprintf(FILE *file, unsigned short line, char *fmt, ...) +{ + va_list args; + + char str[LOG_STR_LEN]; + + if(neednl == 1 && line == NL) { + fprintf(stdout, "\n"); + neednl = 0; + } + + va_start(args, fmt); + vsnprintf(str, LOG_STR_LEN, fmt, args); + va_end(args); + + fprintf(file, str); + fflush(file); + + neednl = (str[strlen(str)-1] == 10) ? 0 : 1; +} + +/* Check verbosity option and, if set, print the + * string to stdout + */ +void vprint(char *fmt, ...) +{ + va_list args; + + if(pmo_verbose > 1) { + if(neednl == 1) { + fprintf(stdout, "\n"); + neednl = 0; + } + va_start(args, fmt); + pm_fprintf(stdout, NL, fmt, args); + va_end(args); + } +} + +/* vim: set ts=2 sw=2 noet: */ diff --git a/src/pacman/log.h b/src/pacman/log.h new file mode 100644 index 00000000..bb982b88 --- /dev/null +++ b/src/pacman/log.h @@ -0,0 +1,49 @@ +/* + * log.h + * + * Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ +#ifndef _PM_LOG_H +#define _PM_LOG_H + +#define MSG(line, fmt, args...) pm_fprintf(stdout, line, fmt, ##args) +#define ERR(line, fmt, args...) do { \ + pm_fprintf(stderr, line, "error: "); \ + pm_fprintf(stderr, CL, fmt, ##args); \ +} while(0) +#define DBG(line, fmt, args...) do { \ + char str[256]; \ + snprintf(str, 256, fmt, ##args); \ + cb_log(PM_LOG_DEBUG, str); \ +} while(0) + +enum { + NL, /* new line */ + CL /* current line */ +}; + +/* callback to handle messages/notifications from pacman library */ +void cb_log(unsigned short level, char *msg); + +void pm_fprintf(FILE *file, unsigned short line, char *fmt, ...); + +void vprint(char *fmt, ...); + +#endif /* _PM_LOG_H */ + +/* vim: set ts=2 sw=2 noet: */ diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c index ff96cf48..0b2b9bab 100644 --- a/src/pacman/pacman.c +++ b/src/pacman/pacman.c @@ -24,19 +24,14 @@ #include <limits.h> #include <getopt.h> #include <string.h> -#include <unistd.h> -#include <sys/types.h> -#include <sys/stat.h> -#include <fcntl.h> -#include <errno.h> #include <signal.h> -#include <stdarg.h> #include <mcheck.h> /* debug */ #include <alpm.h> /* pacman */ #include "list.h" #include "util.h" +#include "log.h" #include "download.h" #include "conf.h" #include "package.h" @@ -88,8 +83,6 @@ list_t *pm_targets = NULL; int maxcols = 80; -int neednl = 0; /* for cleaner message output */ - int main(int argc, char *argv[]) { int ret = 0; @@ -234,92 +227,6 @@ void cleanup(int signum) exit(signum); } -/* Callback to handle notifications from the library - */ -void cb_log(unsigned short level, char *msg) -{ - char str[8] = ""; - - switch(level) { - case PM_LOG_DEBUG: - sprintf(str, "DEBUG"); - break; - case PM_LOG_ERROR: - sprintf(str, "ERROR"); - break; - case PM_LOG_WARNING: - sprintf(str, "WARNING"); - break; - case PM_LOG_FLOW1: - sprintf(str, "FLOW1"); - break; - case PM_LOG_FLOW2: - sprintf(str, "FLOW2"); - break; - case PM_LOG_FUNCTION: - sprintf(str, "FUNCTION"); - break; - default: - sprintf(str, "???"); - break; - } - - if(strlen(str) > 0) { - MSG(NL, "%s: %s\n", str, msg); - } -} - -/* Callback to handle transaction events - */ -void cb_trans(unsigned short event, void *data1, void *data2) -{ - char str[256] = ""; - - switch(event) { - case PM_TRANS_EVT_DEPS_START: - MSG(NL, "checking dependencies... "); - break; - case PM_TRANS_EVT_CONFLICTS_START: - MSG(NL, "checking for file conflicts... "); - break; - case PM_TRANS_EVT_DEPS_DONE: - case PM_TRANS_EVT_CONFLICTS_DONE: - MSG(CL, "done.\n"); - break; - case PM_TRANS_EVT_ADD_START: - MSG(NL, "installing %s... ", (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME)); - break; - case PM_TRANS_EVT_ADD_DONE: - MSG(CL, "done.\n"); - snprintf(str, 256, "installed %s (%s)", - (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME), - (char *)alpm_pkg_getinfo(data1, PM_PKG_VERSION)); - alpm_logaction(str); - break; - case PM_TRANS_EVT_REMOVE_START: - MSG(NL, "removing %s... ", (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME)); - break; - case PM_TRANS_EVT_REMOVE_DONE: - MSG(CL, "done.\n"); - snprintf(str, 256, "removed %s (%s)", - (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME), - (char *)alpm_pkg_getinfo(data1, PM_PKG_VERSION)); - alpm_logaction(str); - break; - case PM_TRANS_EVT_UPGRADE_START: - MSG(NL, "upgrading %s... ", (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME)); - break; - case PM_TRANS_EVT_UPGRADE_DONE: - MSG(CL, "done.\n"); - snprintf(str, 256, "upgraded %s (%s -> %s)", - (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME), - (char *)alpm_pkg_getinfo(data1, PM_PKG_VERSION), - (char *)alpm_pkg_getinfo(data2, PM_PKG_VERSION)); - alpm_logaction(str); - break; - } -} - int pacman_deptest(list_t *targets) { PM_LIST *lp, *data; @@ -645,43 +552,4 @@ char *buildstring(list_t *strlist) return(str); } -/* Check verbosity option and, if set, print the - * string to stdout - */ -void vprint(char *fmt, ...) -{ - va_list args; - - if(pmo_verbose > 1) { - if(neednl == 1) { - fprintf(stdout, "\n"); - neednl = 0; - } - va_start(args, fmt); - pm_fprintf(stdout, NL, fmt, args); - va_end(args); - } -} - -void pm_fprintf(FILE *file, unsigned short line, char *fmt, ...) -{ - va_list args; - - char str[256]; - - if(neednl == 1 && line == NL) { - fprintf(stdout, "\n"); - neednl = 0; - } - - va_start(args, fmt); - vsnprintf(str, 256, fmt, args); - va_end(args); - - fprintf(file, str); - fflush(file); - - neednl = (str[strlen(str)-1] == 10) ? 0 : 1; -} - /* vim: set ts=2 sw=2 noet: */ diff --git a/src/pacman/pacman.h b/src/pacman/pacman.h index e4e99b50..fd8a5cfb 100644 --- a/src/pacman/pacman.h +++ b/src/pacman/pacman.h @@ -37,26 +37,6 @@ #define PM_OP_SYNC 6 #define PM_OP_DEPTEST 7 -#define MSG(line, fmt, args...) pm_fprintf(stdout, line, fmt, ##args) -#define ERR(line, fmt, args...) do { \ - pm_fprintf(stderr, line, "error: "); \ - pm_fprintf(stderr, CL, fmt, ##args); \ -} while(0) -#define DBG(line, fmt, args...) do { \ - char str[256]; \ - snprintf(str, 256, fmt, ##args); \ - cb_log(PM_LOG_DEBUG, str); \ -} while(0) - -enum { - NL, /* new line */ - CL /* current line */ -}; -/* callback to handle messages/notifications from pacman library */ -void cb_log(unsigned short level, char *msg); -/* callback to handle messages/notifications from pacman transactions */ -void cb_trans(unsigned short event, void *data1, void *data2); - void cleanup(int signum); int pacman_deptest(list_t *targets); @@ -64,11 +44,10 @@ int pacman_deptest(list_t *targets); int parseargs(int argc, char **argv); void usage(int op, char *myname); + void version(); char *buildstring(list_t *strlist); -void vprint(char *fmt, ...); -void pm_fprintf(FILE *file, unsigned short line, char *fmt, ...); #endif /* _PM_PACMAN_H */ diff --git a/src/pacman/query.c b/src/pacman/query.c index 235a8b6d..22e16b84 100644 --- a/src/pacman/query.c +++ b/src/pacman/query.c @@ -31,7 +31,7 @@ #include "package.h" #include "db.h" #include "query.h" -#include "pacman.h" +#include "log.h" extern unsigned short pmo_q_isfile; extern unsigned short pmo_q_info; diff --git a/src/pacman/remove.c b/src/pacman/remove.c index 2f543106..4da11898 100644 --- a/src/pacman/remove.c +++ b/src/pacman/remove.c @@ -26,8 +26,9 @@ #include <alpm.h> /* pacman */ #include "util.h" +#include "log.h" #include "list.h" -#include "pacman.h" +#include "trans.h" extern unsigned char pmo_flags; diff --git a/src/pacman/sync.c b/src/pacman/sync.c index 4dac47d7..86ede1cd 100644 --- a/src/pacman/sync.c +++ b/src/pacman/sync.c @@ -30,6 +30,7 @@ #include <alpm.h> /* pacman */ #include "util.h" +#include "log.h" #include "download.h" #include "list.h" #include "package.h" diff --git a/src/pacman/trans.c b/src/pacman/trans.c new file mode 100644 index 00000000..37645e91 --- /dev/null +++ b/src/pacman/trans.c @@ -0,0 +1,87 @@ +/* + * trans.c + * + * Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +#include "config.h" +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/stat.h> +#include <unistd.h> +#include <dirent.h> + +#include <alpm.h> +/* pacman */ +#include "log.h" +#include "trans.h" + +/* Callback to handle transaction events + */ +void cb_trans(unsigned short event, void *data1, void *data2) +{ + char str[256] = ""; + + switch(event) { + case PM_TRANS_EVT_DEPS_START: + MSG(NL, "checking dependencies... "); + break; + case PM_TRANS_EVT_CONFLICTS_START: + MSG(NL, "checking for file conflicts... "); + break; + case PM_TRANS_EVT_DEPS_DONE: + case PM_TRANS_EVT_CONFLICTS_DONE: + MSG(CL, "done.\n"); + break; + case PM_TRANS_EVT_ADD_START: + MSG(NL, "installing %s... ", (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME)); + break; + case PM_TRANS_EVT_ADD_DONE: + MSG(CL, "done.\n"); + snprintf(str, 256, "installed %s (%s)", + (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME), + (char *)alpm_pkg_getinfo(data1, PM_PKG_VERSION)); + alpm_logaction(str); + break; + case PM_TRANS_EVT_REMOVE_START: + MSG(NL, "removing %s... ", (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME)); + break; + case PM_TRANS_EVT_REMOVE_DONE: + MSG(CL, "done.\n"); + snprintf(str, 256, "removed %s (%s)", + (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME), + (char *)alpm_pkg_getinfo(data1, PM_PKG_VERSION)); + alpm_logaction(str); + break; + case PM_TRANS_EVT_UPGRADE_START: + MSG(NL, "upgrading %s... ", (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME)); + break; + case PM_TRANS_EVT_UPGRADE_DONE: + MSG(CL, "done.\n"); + snprintf(str, 256, "upgraded %s (%s -> %s)", + (char *)alpm_pkg_getinfo(data1, PM_PKG_NAME), + (char *)alpm_pkg_getinfo(data1, PM_PKG_VERSION), + (char *)alpm_pkg_getinfo(data2, PM_PKG_VERSION)); + alpm_logaction(str); + break; + } +} + + +/* vim: set ts=2 sw=2 noet: */ diff --git a/src/pacman/trans.h b/src/pacman/trans.h new file mode 100644 index 00000000..368da617 --- /dev/null +++ b/src/pacman/trans.h @@ -0,0 +1,29 @@ +/* + * trans.h + * + * Copyright (c) 2002-2005 by Judd Vinet <jvinet@zeroflux.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ +#ifndef _PM_TRANS_H +#define _PM_TRANS_H + +/* callback to handle messages/notifications from pacman transactions */ +void cb_trans(unsigned short event, void *data1, void *data2); + +#endif /* _PM_TRANS_H */ + +/* vim: set ts=2 sw=2 noet: */ |