summaryrefslogtreecommitdiffstats
path: root/lib/Utils
Commit message (Collapse)AuthorAgeFilesLines
* add bits of infrastructure needed for xmlprc code.Denys Vlasenko2009-10-265-0/+522
| | | | | | This does not affect existing code in any way. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* backtrace rating saved with crash datadnovotny2009-10-131-0/+1
|
* Allow abrt_dbus.h to be included multiple times.Karel Klic2009-10-201-0/+5
|
* *: add "force" param to CreateReport dbus call. If !0, regenerates backtraceDenys Vlasenko2009-10-091-1/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* fix all instances of dent->d_type == DT_REG checksDenys Vlasenko2009-09-302-10/+23
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* remove DBusManager::uniq_nameDenys Vlasenko2009-09-291-2/+2
| | | | | | also fix some whitespace damage Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* fixed savind comments and how to reproduce filesZdenek Prikryl2009-09-211-1/+1
|
* comments and how to reproduce are stored nowNikola Pajkovsky2009-09-211-1/+2
|
* reduce verbosity a bitDenys Vlasenko2009-09-211-2/+2
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* remove a few #include <iostream>'sDenys Vlasenko2009-09-183-3/+0
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* remove a few C++-isms where they did not buy any convenience anywayDenys Vlasenko2009-09-181-6/+1
| | | | | | | | | | | | text data bss dec hex filename 182372 2624 2320 187316 2dbb4 abrt.t2/abrt-0.0.8.5/src/Daemon/.libs/abrtd 180635 2584 1968 185187 2d363 abrt.t3/abrt-0.0.8.5/src/Daemon/.libs/abrtd 34110 1340 768 36218 8d7a abrt.t2/abrt-0.0.8.5/src/CLI/.libs/abrt-cli 30202 1292 224 31718 7be6 abrt.t3/abrt-0.0.8.5/src/CLI/.libs/abrt-cli 22116 1688 376 24180 5e74 abrt.t2/abrt-0.0.8.5/src/Applet/.libs/abrt-applet 21254 1648 88 22990 59ce abrt.t3/abrt-0.0.8.5/src/Applet/.libs/abrt-applet Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* abrt-applet: remove dbus-c++ glue. -50k of codeDenys Vlasenko2009-09-182-1/+40
| | | | | | | | | | text data bss dec hex filename 70529 2144 1528 74201 121d9 abrt.t0/UNPACKED/usr/bin/abrt-applet 22116 1688 376 24180 5e74 abrt.t1/UNPACKED/usr/bin/abrt-applet Also, we do not use dbus-c++ anymore, which is 200k of code Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* factored out dbus init from CommLayerServerDBus.cpp to lib/Utils/abrt_dbus.cppDenys Vlasenko2009-09-173-0/+214
| | | | | | this will allow me to reuse this code for applet Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Move lib/Utils/DBusClientProxy.* to src/Applet/; do not link rpm to libABRTUtilsDenys Vlasenko2009-09-173-358/+8
| | | | | | | | | | | | | | | | | | | | | As a result, we can drop these libs from libABRTUtils: libbz2.so.1 => /lib64/libbz2.so.1 (0x00007ff8934ef000) libdb-4.7.so => /lib64/libdb-4.7.so (0x00007ff8921ae000) libdbus-c++-1.so.0 => /usr/lib64/libdbus-c++-1.so.0 (0x00007ff895276000) libelf.so.1 => /usr/lib64/libelf.so.1 (0x00007ff8930c5000) liblua-5.1.so => /usr/lib64/liblua-5.1.so (0x00007ff892c7a000) liblzma.so.0 => /usr/lib64/liblzma.so.0 (0x00007ff892ea5000) libnspr4.so => /lib64/libnspr4.so (0x00007ff890ec2000) libnss3.so => /lib64/libnss3.so (0x00007ff892948000) libnssutil3.so => /lib64/libnssutil3.so (0x00007ff891505000) libplc4.so => /lib64/libplc4.so (0x00007ff891300000) libplds4.so => /lib64/libplds4.so (0x00007ff8910fd000) libpopt.so.0 => /lib64/libpopt.so.0 (0x00007ff89273f000) librpmio.so.0 => /usr/lib64/librpmio.so.0 (0x00007ff8954a8000) librpm.so.0 => /usr/lib64/librpm.so.0 (0x00007ff8956d9000) Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* remove C++ dbus glue in src/CLI; fix a bug in --reportDenys Vlasenko2009-09-173-0/+339
| | | | | | | Several kb of code removed. The nly remaining use of C++ glue is desktop applet. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* merge correctiondnovotny2009-09-161-6/+3
|
* Merge branch 'master' of git://git.fedorahosted.org/git/abrtdnovotny2009-09-161-0/+6
|\ | | | | | | | | | | Conflicts: lib/Plugins/CCpp.cpp lib/Utils/Polkit.cpp
| * moved g_type_init() to right placeJiri Moskovcak2009-09-161-1/+2
| |
| * add forgotten }Denys Vlasenko2009-09-151-0/+1
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
| * reuse code, do not cut-n-pasteDenys Vlasenko2009-09-151-43/+13
| | | | | | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* | added timeout to Polkit, added authorization check for debuginfo-installdnovotny2009-09-161-44/+33
|/
* added another form of checking Polkit rights: from PIDdnovotny2009-09-152-1/+42
|
* trailing whitespace removedDenys Vlasenko2009-09-151-17/+17
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* unify CommLayer, MiddleWare and Utils into UtilsDenys Vlasenko2009-09-1514-12/+1048
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* moake one sfunction static; style fixesDenys Vlasenko2009-09-141-1/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* Polkit moved to Utils (can be used both in daemon and plugins)dnovotny2009-09-143-3/+112
|
* fix the bug where lock file was not removedDenys Vlasenko2009-09-092-0/+11
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* GetAndSetLock: simplify. old code was racyDenys Vlasenko2009-09-091-29/+39
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* remove unnecessary variable from last commitDenys Vlasenko2009-09-091-2/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* eliminate CDebugDump::m_bUnlock, m_nLockfileFD can be used insteadDenys Vlasenko2009-09-093-41/+42
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* make GetNextFile close directory fd when the search is overDenys Vlasenko2009-09-092-22/+23
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* four more more string& -> char* conversions. -2kDenys Vlasenko2009-09-092-9/+9
| | | | | | | | text data bss dec hex filename 188660 2776 2320 193756 2f4dc abrt.t5/abrt-0.0.8.5/src/Daemon/.libs/abrtd 186751 2776 2320 191847 2ed67 abrt.t6/abrt-0.0.8.5/src/Daemon/.libs/abrtd Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* replace one const string& parameter with const char*. almost -1k of code (!)Denys Vlasenko2009-09-092-2/+2
| | | | | | | | text data bss dec hex filename 189533 2776 2320 194629 2f845 abrt.t4/abrt-0.0.8.5/src/Daemon/.libs/abrtd 188660 2776 2320 193756 2f4dc abrt.t6/abrt-0.0.8.5/src/Daemon/.libs/abrtd Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* move die_out_of_memory() to abrtlibDenys Vlasenko2009-09-012-16/+11
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* replace comm_layer_inner_debug() with log() everywhereDenys Vlasenko2009-08-261-18/+8
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* move most of CCrashWatcher's init/deinit into daemon's main()Denys Vlasenko2009-08-211-0/+38
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* MiddleWare, Bugzilla: create new component file. Can be used in reportingZdenek Prikryl2009-08-201-0/+1
| | | | MiddleWare: fixed reporting according package name
* new function for gettings user's home directoryZdenek Prikryl2009-08-111-0/+6
|
* fix compile-time warnings.Denys Vlasenko2009-08-091-0/+6
| | | | | | | One fix (in CCrashWatcher::GetPluginsInfo) needs closer look, others are "trivially correct" Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* CDebugDump::Create(pDir, pUID): make 2nd param uid_t, not stringDenys Vlasenko2009-08-052-4/+3
|
* Hooks/CCpp.cpp: don't dump executables with "/abrt" substring in the nameDenys Vlasenko2009-08-051-1/+29
| | | | | | some cleanups and abrtlib work crept in too... Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* do not abort if chown fails, just warnDenys Vlasenko2009-08-051-16/+7
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* forgot to add lib/Utils/copyfd.cppDenys Vlasenko2009-08-051-0/+107
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* simplify C/C++ hookDenys Vlasenko2009-08-051-1/+2
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* move huge inlines out-of-lineDenys Vlasenko2009-08-052-0/+186
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* made some functions staticDenys Vlasenko2009-08-042-60/+53
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* add error checks on lstat calls; add handling of DT_UNKNOWNDenys Vlasenko2009-08-041-11/+15
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* small fixes to dumpoopsDenys Vlasenko2009-07-311-1/+1
| | | | Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* KerneloopsReporter: plug a leak in writefunctionDenys Vlasenko2009-07-311-1/+6
| | | | | | Also some preparatory cleanups for future dumpoops patch are included Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
* add utility functionsDenys Vlasenko2009-07-304-1/+427
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Logging machinery provided by this patch consists of several functions: +extern void error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); +extern void error_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); +extern void perror_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2))); +extern void perror_msg_and_die(const char *s, ...) __attribute__ ((noreturn, format (printf, 1, 2))); +/* This is a macro since it collides with log() from math.h */ +#undef log +#define log(...) error_msg(__VA_ARGS__) They are taking printf-style format strings. perror_msg_xxx functions append an errno string after the message: "xxx xxx xxx: No such file or directory" if errno is != 0. xxx_and_die functions do not return. All functions also ensure that the message ends with "\n", meaning that you do not need to add it into the message, but if you do, an extra "\n" will not be added. All functions ensure that the string is written in a single write() call, thus if two processes output to the same terminal or file, messages don't get intermingled. Ordinarily, messages go to the stderr. By setting global variable "logmode" to LOGMODE_SYSLOG or LOGMODE_NONE, they can be sent to syslog or be suppressed. Standard setting is LOGMODE_STDIO. LOGMODE_STDIO + LOGMODE_SYSLOG works too. Usually it is set by main() as needed, and then you can fearlessly use [p]error_msg[_and_die]() and be sure that message goes to the right place. +enum { + LOGMODE_NONE = 0, + LOGMODE_STDIO = (1 << 0), + LOGMODE_SYSLOG = (1 << 1), + LOGMODE_BOTH = LOGMODE_SYSLOG + LOGMODE_STDIO, +}; +extern int logmode; Exit code of xxx_and_die variants is controlled by the global variable +extern int xfunc_error_retval; By default it is = 1. Logging infrastructure uses a few other functions, which I find useful on their own, and since I discussed them with Zdenek and he thinks that they may be useful too, they are included in the patch also. The first group is "malloc or die" group: +void* malloc_or_warn(size_t size); +void* xmalloc(size_t size); +void* xrealloc(void *ptr, size_t size); +void* xzalloc(size_t size); +char* xstrdup(const char *s); +char* xstrndup(const char *s, int n); They are basically versions of malloc etc which exit on failure. The next group are simple I/O wrappers: +extern ssize_t safe_read(int fd, void *buf, size_t count); +extern ssize_t full_read(int fd, void *buf, size_t count); +extern void xread(int fd, void *buf, size_t count); +extern ssize_t safe_write(int fd, const void *buf, size_t count); +extern ssize_t full_write(int fd, const void *buf, size_t count); safe_xxx deal with the fact that read and write operations may "fail" with EINTR and in many cases we want to just repeat the operation. full_xxx deal with the fact that read and write are not guaranteed to read or write exact amount, they may to transfer less bytes. In this case we need to loop. The next group are the "x functions": +extern void xwrite(int fd, const void *buf, size_t count); +extern void xwrite_str(int fd, const char *str); +void xpipe(int filedes[2]); +void xdup2(int from, int to); +off_t xlseek(int fd, off_t offset, int whence); +void xsetenv(const char *key, const char *value); +int xsocket(int domain, int type, int protocol); +void xbind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen); +void xlisten(int s, int backlog); +ssize_t xsendto(int s, const void *buf, size_t len, const struct sockaddr *to, socklen_t tolen); +void xstat(const char *name, struct stat *stat_buf); +void xmove_fd(int from, int to); +char* xasprintf(const char *format, ...); They are similar to xmalloc in a sense that they exit on the failure. Most of them closely resemble corresponding libc functions. xmove_fd() is a wrapper for typical idiom "if (fd1!=fd2) dup2(fd1,fd2)", with error checking on dup2 failure added. xasprintf() is a "strcat on steroids". It's a printf-like function which returns a malloced string. In my experience, it is surprisingly useful: it makes complex concatenations easy in C. All these functions are declared in a new header, inc/abrtlib.h. It also contains a list of #includes: +#include <ctype.h> +#include <dirent.h> +#include <errno.h> +#include <fcntl.h> +#include <inttypes.h> +#include <setjmp.h> +#include <signal.h> +#include <stdio.h> +#include <stdlib.h> +#include <stdarg.h> +#include <stddef.h> +#include <string.h> +#include <sys/poll.h> +#include <sys/mman.h> +#include <sys/socket.h> +#include <sys/stat.h> +#include <sys/time.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <termios.h> +#include <time.h> +#include <unistd.h> +/* Try to pull in PATH_MAX */ +#include <limits.h> +#include <sys/param.h> +#ifndef PATH_MAX +# define PATH_MAX 256 +#endif +#include <pwd.h> +#include <grp.h> The rationale to do so is that these headers are pretty standard, and by having them included in this one file, we won't need to add #includes into many .c[pp] files later. The slowdown from gcc parsing these headers even if they are not needed is not worth spending time on optimizing out. Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>