Changeset c36f4d0
- Timestamp:
- Jul 23, 2011, 9:24:37 PM (13 years ago)
- Parents:
- 4ebbfbc (diff), c40d11a (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent. - Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
commands.c
refeec7f r83e023e 2165 2165 myargv[i]=argv[i]; 2166 2166 } 2167 owl_function_create_filter(argc, myargv); 2168 owl_function_change_currentview_filter("owl-dynamic"); 2167 if (owl_function_create_filter(argc, myargv)) { 2168 owl_function_change_currentview_filter("owl-dynamic"); 2169 } 2169 2170 g_free(myargv); 2170 2171 return NULL; -
functions.c
r4ebbfbc rc36f4d0 2132 2132 2133 2133 /* Create a new filter, or replace an existing one 2134 * with a new definition. 2134 * with a new definition. Returns true on success. 2135 2135 */ 2136 voidowl_function_create_filter(int argc, const char *const *argv)2136 bool owl_function_create_filter(int argc, const char *const *argv) 2137 2137 { 2138 2138 owl_filter *f; … … 2142 2142 if (argc < 2) { 2143 2143 owl_function_error("Wrong number of arguments to filter command"); 2144 return ;2144 return false; 2145 2145 } 2146 2146 … … 2152 2152 if (!strcmp(argv[1], "all")) { 2153 2153 owl_function_error("You may not change the 'all' filter."); 2154 return ;2154 return false; 2155 2155 } 2156 2156 … … 2160 2160 if (!f) { 2161 2161 owl_function_error("The filter '%s' does not exist.", argv[1]); 2162 return ;2162 return false; 2163 2163 } 2164 2164 if (owl_util_string_to_color(argv[3])==OWL_COLOR_INVALID) { 2165 2165 owl_function_error("The color '%s' is not available.", argv[3]); 2166 return ;2166 return false; 2167 2167 } 2168 2168 owl_filter_set_fgcolor(f, owl_util_string_to_color(argv[3])); 2169 2169 owl_mainwin_redisplay(owl_global_get_mainwin(&g)); 2170 return ;2170 return false; 2171 2171 } 2172 2172 if (argc==4 && !strcmp(argv[2], "-b")) { … … 2174 2174 if (!f) { 2175 2175 owl_function_error("The filter '%s' does not exist.", argv[1]); 2176 return ;2176 return false; 2177 2177 } 2178 2178 if (owl_util_string_to_color(argv[3])==OWL_COLOR_INVALID) { 2179 2179 owl_function_error("The color '%s' is not available.", argv[3]); 2180 return ;2180 return false; 2181 2181 } 2182 2182 owl_filter_set_bgcolor(f, owl_util_string_to_color(argv[3])); 2183 2183 owl_mainwin_redisplay(owl_global_get_mainwin(&g)); 2184 return ;2184 return true; 2185 2185 } 2186 2186 … … 2189 2189 if (f == NULL) { 2190 2190 owl_function_error("Invalid filter"); 2191 return ;2191 return false; 2192 2192 } 2193 2193 … … 2210 2210 } 2211 2211 owl_mainwin_redisplay(owl_global_get_mainwin(&g)); 2212 return true; 2212 2213 } 2213 2214 -
owl.h
r67e5ba36 rc40d11a 75 75 76 76 #define OWL_CONFIG_DIR "/.owl" /* this is relative to the user's home directory */ 77 #define OWL_STARTUP_FILE "/.owl/startup" /* this is relative to the user's home directory */78 77 79 78 #define OWL_FMTEXT_ATTR_NONE 0 … … 206 205 #define OWL_META(key) ((key)|010000) 207 206 /* OWL_CTRL is definied in kepress.c */ 208 209 #define LINE 2048210 207 211 208 #ifdef HAVE_LIBZEPHYR -
regex.c
rd427f08 rc40d11a 11 11 { 12 12 int ret; 13 char buff1[LINE]; 13 size_t errbuf_size; 14 char *errbuf; 14 15 const char *ptr; 15 16 … … 26 27 ret=regcomp(&(re->re), ptr, REG_EXTENDED|REG_ICASE); 27 28 if (ret) { 28 regerror(ret, NULL, buff1, LINE); 29 owl_function_makemsg("Error in regular expression: %s", buff1); 29 errbuf_size = regerror(ret, NULL, NULL, 0); 30 errbuf = g_new(char, errbuf_size); 31 regerror(ret, NULL, errbuf, errbuf_size); 32 owl_function_error("Error in regular expression: %s", errbuf); 33 g_free(errbuf); 30 34 g_free(re->string); 31 35 re->string=NULL; -
message.c
r6500907 r4ebbfbc 46 46 47 47 /* save the time */ 48 m->time=time(NULL); 49 m->timestr=g_strdup(ctime(&(m->time))); 50 m->timestr[strlen(m->timestr)-1]='\0'; 48 m->time = time(NULL); 49 m->timestr = owl_util_time_to_timestr(localtime(&m->time)); 51 50 52 51 m->fmtext = NULL; … … 796 795 /* save the time, we need to nuke the string saved by message_init */ 797 796 if (m->timestr) g_free(m->timestr); 798 m->time=n->z_time.tv_sec; 799 m->timestr=g_strdup(ctime(&(m->time))); 800 m->timestr[strlen(m->timestr)-1]='\0'; 797 m->time = n->z_time.tv_sec; 798 m->timestr = owl_util_time_to_timestr(localtime(&m->time)); 801 799 802 800 /* set other info */ -
owl.c
rb8a3e00 ra7fac14 389 389 } 390 390 391 #define CHECK_RESULT(s, syscall)\391 #define OR_DIE(s, syscall) \ 392 392 G_STMT_START { \ 393 if ((syscall) != 0) { \393 if ((syscall) == -1) { \ 394 394 perror((s)); \ 395 395 exit(1); \ … … 402 402 sigset_t sigset; 403 403 int ret, i; 404 const int signals[] = { SIGABRT, SIGBUS, SIGCHLD, SIGFPE, SIGHUP, SIGILL, 405 SIGINT, SIGQUIT, SIGSEGV, SIGTERM, SIGWINCH }; 404 const int reset_signals[] = { SIGABRT, SIGBUS, SIGCHLD, SIGFPE, SIGILL, 405 SIGQUIT, SIGSEGV, }; 406 /* Don't bother resetting watched ones because owl_signal_init will. */ 407 const int watch_signals[] = { SIGWINCH, SIGTERM, SIGHUP, SIGINT, }; 406 408 407 409 /* Sanitize our signals; the mask and dispositions from our parent 408 410 * aren't really useful. Signal list taken from equivalent code in 409 411 * Chromium. */ 410 CHECK_RESULT("sigemptyset", sigemptyset(&sigset));412 OR_DIE("sigemptyset", sigemptyset(&sigset)); 411 413 if ((ret = pthread_sigmask(SIG_SETMASK, &sigset, NULL)) != 0) { 412 414 errno = ret; 413 415 perror("pthread_sigmask"); 414 } 415 for (i = 0; i < G_N_ELEMENTS(signals); i++) { 416 CHECK_RESULT("sigaction", sigaction(signals[i], &sig_default, NULL)); 416 exit(1); 417 } 418 for (i = 0; i < G_N_ELEMENTS(reset_signals); i++) { 419 OR_DIE("sigaction", sigaction(reset_signals[i], &sig_default, NULL)); 417 420 } 418 421 419 422 /* Turn off SIGPIPE; we check the return value of write. */ 420 CHECK_RESULT("sigaction", sigaction(SIGPIPE, &sig_ignore, NULL));423 OR_DIE("sigaction", sigaction(SIGPIPE, &sig_ignore, NULL)); 421 424 422 425 /* Register some signals with the signal thread. */ 423 CHECK_RESULT("sigaddset", sigaddset(&sigset, SIGWINCH)); 424 CHECK_RESULT("sigaddset", sigaddset(&sigset, SIGTERM)); 425 CHECK_RESULT("sigaddset", sigaddset(&sigset, SIGHUP)); 426 CHECK_RESULT("sigaddset", sigaddset(&sigset, SIGINT)); 427 owl_signal_init(&sigset, sig_handler, NULL); 426 owl_signal_init(watch_signals, G_N_ELEMENTS(watch_signals), 427 sig_handler, NULL); 428 428 } 429 429 -
perl/modules/Twitter/lib/BarnOwl/Module/Twitter/Handle.pm
r7aa1fa5 r4ebbfbc 29 29 use BarnOwl; 30 30 use BarnOwl::Message::Twitter; 31 use POSIX qw( asctime);31 use POSIX qw(strftime); 32 32 33 33 use LWP::UserAgent; … … 247 247 ($self->{cfg}->{account_nickname} ? 248 248 "[$self->{cfg}->{account_nickname}]" : "") . 249 ": ratelimited until " . asctime(localtime($timeout)));249 ": ratelimited until " . strftime('%c', localtime($timeout))); 250 250 } elsif(exists($ratelimit->{error})) { 251 251 $self->sleep(60*20); -
signal.c
r1d21d9f ra7fac14 1 1 #include <errno.h> 2 #include <glib.h> 2 3 #include <pthread.h> 3 4 #include <signal.h> … … 13 14 static void *signal_thread_func(void *data); 14 15 15 /* Initializes the signal thread to listen for 'set' on a dedicated 16 static void dummy_handler(int signum) 17 { 18 /* Do nothing. This should never get called. It'd be nice to report the error 19 * or something, but you can't have nice things in a signal handler. */ 20 } 21 22 #define OR_DIE(s, syscall) \ 23 G_STMT_START { \ 24 if ((syscall) == -1) { \ 25 perror((s)); \ 26 exit(1); \ 27 } \ 28 } G_STMT_END 29 30 /* Initializes the signal thread to listen for 'signals' on a dedicated 16 31 * thread. 'callback' is called *on the signal thread* when a signal 17 32 * is received. … … 19 34 * This function /must/ be called before any other threads are 20 35 * created. (Otherwise the signals will not get blocked correctly.) */ 21 void owl_signal_init(const sigset_t *set, void (*callback)(const siginfo_t*, void*), void *data) { 36 void owl_signal_init(const int *signals, int num_signals, void (*callback)(const siginfo_t*, void*), void *data) { 37 struct sigaction sig_dummy = { .sa_handler = dummy_handler }; 22 38 int ret; 39 int i; 23 40 24 signal_set = *set;25 41 signal_cb = callback; 26 42 signal_cbdata = data; 43 44 /* Stuff the signals into our sigset_t. Also assign all of them to a dummy 45 * handler. Otherwise, if their default is SIG_IGN, they will get dropped if 46 * delivered while processing. On Solaris, they will not get delivered at 47 * all. */ 48 OR_DIE("sigemptyset", sigemptyset(&signal_set)); 49 for (i = 0; i < num_signals; i++) { 50 OR_DIE("sigaddset", sigaddset(&signal_set, signals[i])); 51 OR_DIE("sigaction", sigaction(signals[i], &sig_dummy, NULL)); 52 } 53 27 54 /* Block these signals in all threads, so we can get them. */ 28 if ((ret = pthread_sigmask(SIG_BLOCK, set, NULL)) != 0) {55 if ((ret = pthread_sigmask(SIG_BLOCK, &signal_set, NULL)) != 0) { 29 56 errno = ret; 30 57 perror("pthread_sigmask"); 58 exit(1); 31 59 } 32 60 /* Spawn a dedicated thread to sigwait. */ -
util.c
r8219374 r4ebbfbc 296 296 } 297 297 298 CALLER_OWN char *owl_util_time_to_timestr(const struct tm *time) 299 { 300 /* 32 chosen for first attempt because timestr will end up being 301 * something like "Www Mmm dd hh:mm:ss AM yyyy UTC\0" */ 302 size_t timestr_size = 16; 303 char *timestr = NULL; 304 do { 305 timestr_size *= 2; 306 timestr = g_renew(char, timestr, timestr_size); 307 } while (strftime(timestr, timestr_size, "%c", time) == 0); 308 return timestr; 309 } 310 298 311 /* These are in order of their value in owl.h */ 299 312 static const struct {
Note: See TracChangeset
for help on using the changeset viewer.