From 6fda988f360b3145d5772b6964f336dd652357ea Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Tue, 21 Jul 2009 19:07:30 +0200 Subject: Use own files for each function, add get_ipv6_addr.c --- src/general.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/general.c (limited to 'src/general.c') diff --git a/src/general.c b/src/general.c new file mode 100644 index 0000000..4016ecd --- /dev/null +++ b/src/general.c @@ -0,0 +1,70 @@ +#include +#include +#include +#include +#include +#include +#include + +#include "i3status.h" + +/* + * Reads size bytes into the destination buffer from filename. + * + */ +void slurp(char *filename, char *destination, int size) { + int fd; + + if ((fd = open(filename, O_RDONLY)) == -1) + die("Could not open \"%s\"\n", filename); + + (void)read(fd, destination, size); + (void)close(fd); +} + +/* + * Skip the given character for exactly 'amount' times, returns + * a pointer to the first non-'character' character in 'input'. + * + */ +char *skip_character(char *input, char character, int amount) { + char *walk; + size_t len = strlen(input); + int blanks = 0; + + for (walk = input; ((size_t)(walk - input) < len) && (blanks < amount); walk++) + if (*walk == character) + blanks++; + + return (walk == input ? walk : walk-1); +} + +/* + * Write errormessage to statusbar and exit + * + */ +void die(const char *fmt, ...) { + char buffer[512]; + va_list ap; + va_start(ap, fmt); + (void)vsnprintf(buffer, sizeof(buffer), fmt, ap); + va_end(ap); + + if (wmii_path != NULL) + write_error_to_statusbar(buffer); + else + fprintf(stderr, "%s", buffer); + exit(EXIT_FAILURE); +} + +/* + * This function just concats two strings in place, it should only be used + * for concatting order to the name of a file or concatting color codes. + * Otherwise, the buffer size would have to be increased. + * + */ +char *concat(const char *str1, const char *str2) { + static char concatbuf[32]; + (void)snprintf(concatbuf, sizeof(concatbuf), "%s%s", str1, str2); + return concatbuf; +} -- cgit v1.2.3