mirror of
https://github.com/Llewellynvdm/conky.git
synced 2024-12-26 04:17:33 +00:00
Merge remote branch 'origin/master' into lua-config
Conflicts: src/conky.cc
This commit is contained in:
commit
ad79c87376
@ -40,7 +40,7 @@ struct combine_data {
|
||||
char *right;
|
||||
};
|
||||
|
||||
void parse_combine_arg(struct text_object *obj, const char *arg, void *free_at_crash)
|
||||
void parse_combine_arg(struct text_object *obj, const char *arg)
|
||||
{
|
||||
struct combine_data *cd;
|
||||
unsigned int i,j;
|
||||
@ -89,7 +89,7 @@ void parse_combine_arg(struct text_object *obj, const char *arg, void *free_at_c
|
||||
extract_variable_text_internal(obj->sub->sub, cd->right);
|
||||
obj->data.opaque = cd;
|
||||
} else {
|
||||
CRIT_ERR(obj, free_at_crash, "combine needs arguments: <text1> <text2>");
|
||||
throw combine_needs_2_args_error();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,7 @@
|
||||
#ifndef _COMBINE_H
|
||||
#define _COMBINE_H
|
||||
|
||||
void parse_combine_arg(struct text_object *, const char *, void *);
|
||||
void parse_combine_arg(struct text_object *, const char *);
|
||||
void print_combine(struct text_object *, char *, int);
|
||||
void free_combine(struct text_object *);
|
||||
|
||||
|
46
src/conky.cc
46
src/conky.cc
@ -2893,7 +2893,7 @@ void initialisation(int argc, char **argv) {
|
||||
break;
|
||||
|
||||
case '?':
|
||||
throw std::runtime_error("Unknown argument");
|
||||
throw unknown_arg_throw();
|
||||
}
|
||||
}
|
||||
|
||||
@ -2930,7 +2930,7 @@ void initialisation(int argc, char **argv) {
|
||||
fprintf(stderr, PACKAGE_NAME": forked to background, pid is %d\n",
|
||||
pid);
|
||||
fflush(stderr);
|
||||
exit(EXIT_SUCCESS);
|
||||
throw fork_throw();
|
||||
}
|
||||
}
|
||||
|
||||
@ -3048,37 +3048,39 @@ int main(int argc, char **argv)
|
||||
try {
|
||||
conky::export_symbols(*state);
|
||||
|
||||
#ifdef BUILD_WEATHER_XOAP
|
||||
/* Load xoap keys, if existing */
|
||||
load_xoap_keys();
|
||||
#endif /* BUILD_WEATHER_XOAP */
|
||||
|
||||
#ifdef HAVE_SYS_INOTIFY_H
|
||||
// the file descriptor will be automatically closed on exit
|
||||
inotify_fd = inotify_init();
|
||||
if(inotify_fd != -1) {
|
||||
fcntl(inotify_fd, F_SETFL, fcntl(inotify_fd, F_GETFL) | O_NONBLOCK);
|
||||
|
||||
fcntl(inotify_fd, F_SETFD, fcntl(inotify_fd, F_GETFD) | FD_CLOEXEC);
|
||||
}
|
||||
#endif /* HAVE_SYS_INOTIFY_H */
|
||||
|
||||
initialisation(argc, argv);
|
||||
|
||||
first_pass = 0; /* don't ever call fork() again */
|
||||
|
||||
main_loop();
|
||||
}
|
||||
catch(conky::critical_error &e) {
|
||||
std::cerr << "caught critical exception: " << e.what() << std::endl;
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
catch(std::runtime_error &e) {
|
||||
std::cerr << "caught exception: " << e.what() << std::endl;
|
||||
catch(fork_throw &e) { return EXIT_SUCCESS; }
|
||||
catch(unknown_arg_throw &e) { return EXIT_FAILURE; }
|
||||
catch(obj_create_error &e) {
|
||||
std::cerr << e.what() << std::endl;
|
||||
clean_up(NULL, NULL);
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
#ifdef BUILD_WEATHER_XOAP
|
||||
/* Load xoap keys, if existing */
|
||||
load_xoap_keys();
|
||||
#endif /* BUILD_WEATHER_XOAP */
|
||||
|
||||
#ifdef HAVE_SYS_INOTIFY_H
|
||||
// the file descriptor will be automatically closed on exit
|
||||
inotify_fd = inotify_init();
|
||||
if(inotify_fd != -1) {
|
||||
fcntl(inotify_fd, F_SETFL, fcntl(inotify_fd, F_GETFL) | O_NONBLOCK);
|
||||
|
||||
fcntl(inotify_fd, F_SETFD, fcntl(inotify_fd, F_GETFD) | FD_CLOEXEC);
|
||||
}
|
||||
#endif /* HAVE_SYS_INOTIFY_H */
|
||||
//////////// XXX ////////////////////////////////
|
||||
|
||||
main_loop();
|
||||
|
||||
disk_cleanup();
|
||||
|
||||
#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
|
||||
|
19
src/core.cc
19
src/core.cc
@ -1707,8 +1707,14 @@ struct text_object *construct_text_object(char *s, const char *arg, long
|
||||
parse_scroll_arg(obj, arg, free_at_crash, s);
|
||||
obj->callbacks.print = &print_scroll;
|
||||
obj->callbacks.free = &free_scroll;
|
||||
END OBJ_ARG(combine, 0, "combine needs arguments: <text1> <text2>")
|
||||
parse_combine_arg(obj, arg, free_at_crash);
|
||||
END OBJ(combine, 0)
|
||||
try {
|
||||
parse_combine_arg(obj, arg);
|
||||
}
|
||||
catch(combine_needs_2_args_error &e) {
|
||||
free(obj);
|
||||
throw obj_create_error(e.what());
|
||||
}
|
||||
obj->callbacks.print = &print_combine;
|
||||
obj->callbacks.free = &free_combine;
|
||||
#ifdef BUILD_NVIDIA
|
||||
@ -1936,8 +1942,15 @@ int extract_variable_text_internal(struct text_object *retval, const char *const
|
||||
tmp_p++;
|
||||
}
|
||||
|
||||
obj = construct_text_object(buf, arg,
|
||||
try {
|
||||
obj = construct_text_object(buf, arg,
|
||||
line, &ifblock_opaque, orig_p);
|
||||
}
|
||||
catch(obj_create_error &e) {
|
||||
free(buf);
|
||||
free(orig_p);
|
||||
throw e;
|
||||
}
|
||||
if (obj != NULL) {
|
||||
append_object(retval, obj);
|
||||
}
|
||||
|
@ -34,6 +34,30 @@
|
||||
#include <stdexcept>
|
||||
#include "i18n.h"
|
||||
|
||||
class fork_throw : public std::runtime_error {
|
||||
public:
|
||||
fork_throw() : std::runtime_error("Fork happened") {}
|
||||
fork_throw(const std::string &msg) : std::runtime_error(msg) {}
|
||||
};
|
||||
|
||||
class unknown_arg_throw : public std::runtime_error {
|
||||
public:
|
||||
unknown_arg_throw() : std::runtime_error("Unknown argumunt given") {}
|
||||
unknown_arg_throw(const std::string &msg) : std::runtime_error(msg) {}
|
||||
};
|
||||
|
||||
class combine_needs_2_args_error : public std::runtime_error {
|
||||
public:
|
||||
combine_needs_2_args_error() : std::runtime_error("combine needs arguments: <text1> <text2>") {}
|
||||
combine_needs_2_args_error(const std::string &msg) : std::runtime_error(msg) {}
|
||||
};
|
||||
|
||||
class obj_create_error : public std::runtime_error {
|
||||
public:
|
||||
obj_create_error() : std::runtime_error("Failed to create object") {}
|
||||
obj_create_error(const std::string &msg) : std::runtime_error(msg) {}
|
||||
};
|
||||
|
||||
void clean_up(void *memtofree1, void* memtofree2);
|
||||
void clean_up_without_threads(void *memtofree1, void* memtofree2);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user