Ruby 2.1.5p273(2014-11-13revision48405)

- Main Page
- Modules
- Data Structures
- Files

- File List
- Globals

syslog.c
Go to the documentation of this file.
1 /*
2 * UNIX Syslog extension for Ruby
3 * Amos Gouaux, University of Texas at Dallas
4 * <amos+ruby@utdallas.edu>
5 * Documented by mathew <meta@pobox.com>
6 *
7 * $RoughId: syslog.c,v 1.21 2002/02/25 12:21:17 knu Exp $
8 * $Id: syslog.c 44904 2014-02-10 13:35:07Z naruse $
9 */
10
11 #include "ruby/ruby.h"
12 #include "ruby/util.h"
13 #include <syslog.h>
14
15 /* Syslog class */
16 static VALUE mSyslog;
17 /*
18 * Module holding all Syslog constants. See Syslog::log and
19 * Syslog::open for constant descriptions.
20 */
21 static VALUE mSyslogConstants;
22 /* Module holding Syslog option constants */
23 static VALUE mSyslogOption;
24 /* Module holding Syslog facility constants */
25 static VALUE mSyslogFacility;
26 /* Module holding Syslog level constants */
27 static VALUE mSyslogLevel;
28 /* Module holding Syslog utility macros */
29 static VALUE mSyslogMacros;
30
31 static const char *syslog_ident = NULL;
32 static int syslog_options = -1, syslog_facility = -1, syslog_mask = -1;
33 static int syslog_opened = 0;
34
35 /* Package helper routines */
36 static void syslog_write(int pri, int argc, VALUE *argv)
37 {
38 VALUE str;
39
40 if (argc < 1) {
41 rb_raise(rb_eArgError, "no log message supplied");
42 }
43
44 if (!syslog_opened) {
45 rb_raise(rb_eRuntimeError, "must open syslog before write");
46 }
47
48 str = rb_f_sprintf(argc, argv);
49
50 syslog(pri, "%s", RSTRING_PTR(str));
51 }
52
53 /* Closes the syslog facility.
54 * Raises a runtime exception if it is not open.
55 */
56 static VALUE mSyslog_close(VALUE self)
57 {
58 if (!syslog_opened) {
59 rb_raise(rb_eRuntimeError, "syslog not opened");
60 }
61
62 closelog();
63
64 xfree((void *)syslog_ident);
65 syslog_ident = NULL;
66 syslog_options = syslog_facility = syslog_mask = -1;
67 syslog_opened = 0;
68
69 return Qnil;
70 }
71
72 /* call-seq:
73 * open(ident, options, facility) => syslog
74 *
75 * :yields: syslog
76 *
77 * Open the syslog facility.
78 * Raises a runtime exception if it is already open.
79 *
80 * Can be called with or without a code block. If called with a block, the
81 * Syslog object created is passed to the block.
82 *
83 * If the syslog is already open, raises a RuntimeError.
84 *
85 * +ident+ is a String which identifies the calling program.
86 *
87 * +options+ is the logical OR of any of the following:
88 *
89 * LOG_CONS:: If there is an error while sending to the system logger,
90 * write directly to the console instead.
91 *
92 * LOG_NDELAY:: Open the connection now, rather than waiting for the first
93 * message to be written.
94 *
95 * LOG_NOWAIT:: Don't wait for any child processes created while logging
96 * messages. (Has no effect on Linux.)
97 *
98 * LOG_ODELAY:: Opposite of LOG_NDELAY; wait until a message is sent before
99 * opening the connection. (This is the default.)
100 *
101 * LOG_PERROR:: Print the message to stderr as well as sending it to syslog.
102 * (Not in POSIX.1-2001.)
103 *
104 * LOG_PID:: Include the current process ID with each message.
105 *
106 * +facility+ describes the type of program opening the syslog, and is
107 * the logical OR of any of the following which are defined for the host OS:
108 *
109 * LOG_AUTH:: Security or authorization. Deprecated, use LOG_AUTHPRIV
110 * instead.
111 *
112 * LOG_AUTHPRIV:: Security or authorization messages which should be kept
113 * private.
114 *
115 * LOG_CONSOLE:: System console message.
116 *
117 * LOG_CRON:: System task scheduler (cron or at).
118 *
119 * LOG_DAEMON:: A system daemon which has no facility value of its own.
120 *
121 * LOG_FTP:: An FTP server.
122 *
123 * LOG_KERN:: A kernel message (not sendable by user processes, so not of
124 * much use to Ruby, but listed here for completeness).
125 *
126 * LOG_LPR:: Line printer subsystem.
127 *
128 * LOG_MAIL:: Mail delivery or transport subsystem.
129 *
130 * LOG_NEWS:: Usenet news system.
131 *
132 * LOG_NTP:: Network Time Protocol server.
133 *
134 * LOG_SECURITY:: General security message.
135 *
136 * LOG_SYSLOG:: Messages generated internally by syslog.
137 *
138 * LOG_USER:: Generic user-level message.
139 *
140 * LOG_UUCP:: UUCP subsystem.
141 *
142 * LOG_LOCAL0 to LOG_LOCAL7:: Locally-defined facilities.
143 *
144 * Example:
145 *
146 * Syslog.open("webrick", Syslog::LOG_PID,
147 * Syslog::LOG_DAEMON | Syslog::LOG_LOCAL3)
148 *
149 */
150 static VALUE mSyslog_open(int argc, VALUE *argv, VALUE self)
151 {
152 VALUE ident, opt, fac;
153
154 if (syslog_opened) {
155 rb_raise(rb_eRuntimeError, "syslog already open");
156 }
157
158 rb_scan_args(argc, argv, "03", &ident, &opt, &fac);
159
160 if (NIL_P(ident)) {
161 ident = rb_gv_get("$0");
162 }
163 SafeStringValue(ident);
164 syslog_ident = strdup(RSTRING_PTR(ident));
165
166 if (NIL_P(opt)) {
167 syslog_options = LOG_PID | LOG_CONS;
168 } else {
169 syslog_options = NUM2INT(opt);
170 }
171
172 if (NIL_P(fac)) {
173 syslog_facility = LOG_USER;
174 } else {
175 syslog_facility = NUM2INT(fac);
176 }
177
178 openlog(syslog_ident, syslog_options, syslog_facility);
179
180 syslog_opened = 1;
181
182 setlogmask(syslog_mask = setlogmask(0));
183
184 /* be like File.new.open {...} */
185 if (rb_block_given_p()) {
186 rb_ensure(rb_yield, self, mSyslog_close, self);
187 }
188
189 return self;
190 }
191
192 /* call-seq:
193 * reopen(ident, options, facility) => syslog
194 *
195 * :yields: syslog
196 *
197 * Closes and then reopens the syslog.
198 *
199 * Arguments are the same as for open().
200 */
201 static VALUE mSyslog_reopen(int argc, VALUE *argv, VALUE self)
202 {
203 mSyslog_close(self);
204
205 return mSyslog_open(argc, argv, self);
206 }
207
208 /* call-seq:
209 * opened?
210 *
211 * Returns true if the syslog is open.
212 */
213 static VALUE mSyslog_isopen(VALUE self)
214 {
215 return syslog_opened ? Qtrue : Qfalse;
216 }
217
218 /* Returns the identity string used in the last call to open()
219 */
220 static VALUE mSyslog_ident(VALUE self)
221 {
222 return syslog_opened ? rb_str_new2(syslog_ident) : Qnil;
223 }
224
225 /* Returns the options bitmask used in the last call to open()
226 */
227 static VALUE mSyslog_options(VALUE self)
228 {
229 return syslog_opened ? INT2NUM(syslog_options) : Qnil;
230 }
231
232 /* Returns the facility number used in the last call to open()
233 */
234 static VALUE mSyslog_facility(VALUE self)
235 {
236 return syslog_opened ? INT2NUM(syslog_facility) : Qnil;
237 }
238
239 /* Returns the log priority mask in effect. The mask is not reset by opening
240 * or closing syslog.
241 */
242 static VALUE mSyslog_get_mask(VALUE self)
243 {
244 return syslog_opened ? INT2NUM(syslog_mask) : Qnil;
245 }
246
247 /* call-seq:
248 * mask=(priority_mask)
249 *
250 * Sets the log priority mask. A method LOG_UPTO is defined to make it easier
251 * to set mask values. Example:
252 *
253 * Syslog.mask = Syslog::LOG_UPTO(Syslog::LOG_ERR)
254 *
255 * Alternatively, specific priorities can be selected and added together using
256 * binary OR. Example:
257 *
258 * Syslog.mask = Syslog::LOG_MASK(Syslog::LOG_ERR) | Syslog::LOG_MASK(Syslog::LOG_CRIT)
259 *
260 * The priority mask persists through calls to open() and close().
261 */
262 static VALUE mSyslog_set_mask(VALUE self, VALUE mask)
263 {
264 if (!syslog_opened) {
265 rb_raise(rb_eRuntimeError, "must open syslog before setting log mask");
266 }
267
268 setlogmask(syslog_mask = NUM2INT(mask));
269
270 return mask;
271 }
272
273 /* call-seq:
274 * log(priority, format_string, *format_args)
275 *
276 * Log a message with the specified priority. Example:
277 *
278 * Syslog.log(Syslog::LOG_CRIT, "Out of disk space")
279 * Syslog.log(Syslog::LOG_CRIT, "User %s logged in", ENV['USER'])
280 *
281 * The priority levels, in descending order, are:
282 *
283 * LOG_EMERG:: System is unusable
284 * LOG_ALERT:: Action needs to be taken immediately
285 * LOG_CRIT:: A critical condition has occurred
286 * LOG_ERR:: An error occurred
287 * LOG_WARNING:: Warning of a possible problem
288 * LOG_NOTICE:: A normal but significant condition occurred
289 * LOG_INFO:: Informational message
290 * LOG_DEBUG:: Debugging information
291 *
292 * Each priority level also has a shortcut method that logs with it's named priority.
293 * As an example, the two following statements would produce the same result:
294 *
295 * Syslog.log(Syslog::LOG_ALERT, "Out of memory")
296 * Syslog.alert("Out of memory")
297 *
298 * Format strings are as for printf/sprintf, except that in addition %m is
299 * replaced with the error message string that would be returned by
300 * strerror(errno).
301 *
302 */
303 static VALUE mSyslog_log(int argc, VALUE *argv, VALUE self)
304 {
305 VALUE pri;
306
307 if (argc < 2) {
308 rb_raise(rb_eArgError, "wrong number of arguments (%d for 2+)", argc);
309 }
310
311 argc--;
312 pri = *argv++;
313
314 if (!FIXNUM_P(pri)) {
315 rb_raise(rb_eTypeError, "type mismatch: %"PRIsVALUE" given", rb_obj_class(pri));
316 }
317
318 syslog_write(FIX2INT(pri), argc, argv);
319
320 return self;
321 }
322
323 /* Returns an inspect() string summarizing the object state.
324 */
325 static VALUE mSyslog_inspect(VALUE self)
326 {
327 Check_Type(self, T_MODULE);
328
329 if (!syslog_opened)
330 return rb_sprintf("<#%s: opened=false>", rb_class2name(self));
331
332 return rb_sprintf("<#%s: opened=true, ident=\"%s\", options=%d, facility=%d, mask=%d>",
333 rb_class2name(self),
334 syslog_ident,
335 syslog_options,
336 syslog_facility,
337 syslog_mask);
338 }
339
340 /* Returns self, for backward compatibility.
341 */
342 static VALUE mSyslog_instance(VALUE self)
343 {
344 return self;
345 }
346
347 #define define_syslog_shortcut_method(pri, name) \
348 static VALUE mSyslog_##name(int argc, VALUE *argv, VALUE self) \
349 { \
350 syslog_write((pri), argc, argv); \
351 \
352 return self; \
353 }
354
355 #ifdef LOG_EMERG
356 define_syslog_shortcut_method(LOG_EMERG, emerg)
357 #endif
358 #ifdef LOG_ALERT
359 define_syslog_shortcut_method(LOG_ALERT, alert)
360 #endif
361 #ifdef LOG_CRIT
362 define_syslog_shortcut_method(LOG_CRIT, crit)
363 #endif
364 #ifdef LOG_ERR
365 define_syslog_shortcut_method(LOG_ERR, err)
366 #endif
367 #ifdef LOG_WARNING
368 define_syslog_shortcut_method(LOG_WARNING, warning)
369 #endif
370 #ifdef LOG_NOTICE
371 define_syslog_shortcut_method(LOG_NOTICE, notice)
372 #endif
373 #ifdef LOG_INFO
374 define_syslog_shortcut_method(LOG_INFO, info)
375 #endif
376 #ifdef LOG_DEBUG
377 define_syslog_shortcut_method(LOG_DEBUG, debug)
378 #endif
379
380 /* call-seq:
381 * LOG_MASK(priority_level) => priority_mask
382 *
383 * Generates a mask bit for a priority level. See #mask=
384 */
385 static VALUE mSyslogMacros_LOG_MASK(VALUE mod, VALUE pri)
386 {
387 return INT2FIX(LOG_MASK(NUM2INT(pri)));
388 }
389
390 /* call-seq:
391 * LOG_UPTO(priority_level) => priority_mask
392 *
393 * Generates a mask value for priority levels at or below the level specified.
394 * See #mask=
395 */
396 static VALUE mSyslogMacros_LOG_UPTO(VALUE mod, VALUE pri)
397 {
398 return INT2FIX(LOG_UPTO(NUM2INT(pri)));
399 }
400
401 static VALUE mSyslogMacros_included(VALUE mod, VALUE target)
402 {
403 rb_extend_object(target, mSyslogMacros);
404 return mod;
405 }
406
407 /* The syslog package provides a Ruby interface to the POSIX system logging
408 * facility.
409 *
410 * Syslog messages are typically passed to a central logging daemon.
411 * The daemon may filter them; route them into different files (usually
412 * found under /var/log); place them in SQL databases; forward
413 * them to centralized logging servers via TCP or UDP; or even alert the
414 * system administrator via email, pager or text message.
415 *
416 * Unlike application-level logging via Logger or Log4r, syslog is designed
417 * to allow secure tamper-proof logging.
418 *
419 * The syslog protocol is standardized in RFC 5424.
420 */
421 void Init_syslog()
422 {
423 mSyslog = rb_define_module("Syslog");
424
425 mSyslogConstants = rb_define_module_under(mSyslog, "Constants");
426
427 mSyslogOption = rb_define_module_under(mSyslog, "Option");
428 mSyslogFacility = rb_define_module_under(mSyslog, "Facility");
429 mSyslogLevel = rb_define_module_under(mSyslog, "Level");
430 mSyslogMacros = rb_define_module_under(mSyslog, "Macros");
431
432 rb_define_module_function(mSyslog, "open", mSyslog_open, -1);
433 rb_define_module_function(mSyslog, "reopen", mSyslog_reopen, -1);
434 rb_define_module_function(mSyslog, "open!", mSyslog_reopen, -1);
435 rb_define_module_function(mSyslog, "opened?", mSyslog_isopen, 0);
436
437 rb_define_module_function(mSyslog, "ident", mSyslog_ident, 0);
438 rb_define_module_function(mSyslog, "options", mSyslog_options, 0);
439 rb_define_module_function(mSyslog, "facility", mSyslog_facility, 0);
440
441 rb_define_module_function(mSyslog, "log", mSyslog_log, -1);
442 rb_define_module_function(mSyslog, "close", mSyslog_close, 0);
443 rb_define_module_function(mSyslog, "mask", mSyslog_get_mask, 0);
444 rb_define_module_function(mSyslog, "mask=", mSyslog_set_mask, 1);
445
446 rb_define_singleton_method(mSyslog, "inspect", mSyslog_inspect, 0);
447 rb_define_module_function(mSyslog, "instance", mSyslog_instance, 0);
448
449 /* Syslog options */
450
451 #define rb_define_syslog_option(c) \
452 rb_define_const(mSyslogOption, #c, INT2NUM(c))
453
454 #ifdef LOG_PID
455 rb_define_syslog_option(LOG_PID);
456 #endif
457 #ifdef LOG_CONS
458 rb_define_syslog_option(LOG_CONS);
459 #endif
460 #ifdef LOG_ODELAY
461 rb_define_syslog_option(LOG_ODELAY); /* deprecated */
462 #endif
463 #ifdef LOG_NDELAY
464 rb_define_syslog_option(LOG_NDELAY);
465 #endif
466 #ifdef LOG_NOWAIT
467 rb_define_syslog_option(LOG_NOWAIT); /* deprecated */
468 #endif
469 #ifdef LOG_PERROR
470 rb_define_syslog_option(LOG_PERROR);
471 #endif
472
473 /* Syslog facilities */
474
475 #define rb_define_syslog_facility(c) \
476 rb_define_const(mSyslogFacility, #c, INT2NUM(c))
477
478 #ifdef LOG_AUTH
479 rb_define_syslog_facility(LOG_AUTH);
480 #endif
481 #ifdef LOG_AUTHPRIV
482 rb_define_syslog_facility(LOG_AUTHPRIV);
483 #endif
484 #ifdef LOG_CONSOLE
485 rb_define_syslog_facility(LOG_CONSOLE);
486 #endif
487 #ifdef LOG_CRON
488 rb_define_syslog_facility(LOG_CRON);
489 #endif
490 #ifdef LOG_DAEMON
491 rb_define_syslog_facility(LOG_DAEMON);
492 #endif
493 #ifdef LOG_FTP
494 rb_define_syslog_facility(LOG_FTP);
495 #endif
496 #ifdef LOG_KERN
497 rb_define_syslog_facility(LOG_KERN);
498 #endif
499 #ifdef LOG_LPR
500 rb_define_syslog_facility(LOG_LPR);
501 #endif
502 #ifdef LOG_MAIL
503 rb_define_syslog_facility(LOG_MAIL);
504 #endif
505 #ifdef LOG_NEWS
506 rb_define_syslog_facility(LOG_NEWS);
507 #endif
508 #ifdef LOG_NTP
509 rb_define_syslog_facility(LOG_NTP);
510 #endif
511 #ifdef LOG_SECURITY
512 rb_define_syslog_facility(LOG_SECURITY);
513 #endif
514 #ifdef LOG_SYSLOG
515 rb_define_syslog_facility(LOG_SYSLOG);
516 #endif
517 #ifdef LOG_USER
518 rb_define_syslog_facility(LOG_USER);
519 #endif
520 #ifdef LOG_UUCP
521 rb_define_syslog_facility(LOG_UUCP);
522 #endif
523 #ifdef LOG_LOCAL0
524 rb_define_syslog_facility(LOG_LOCAL0);
525 #endif
526 #ifdef LOG_LOCAL1
527 rb_define_syslog_facility(LOG_LOCAL1);
528 #endif
529 #ifdef LOG_LOCAL2
530 rb_define_syslog_facility(LOG_LOCAL2);
531 #endif
532 #ifdef LOG_LOCAL3
533 rb_define_syslog_facility(LOG_LOCAL3);
534 #endif
535 #ifdef LOG_LOCAL4
536 rb_define_syslog_facility(LOG_LOCAL4);
537 #endif
538 #ifdef LOG_LOCAL5
539 rb_define_syslog_facility(LOG_LOCAL5);
540 #endif
541 #ifdef LOG_LOCAL6
542 rb_define_syslog_facility(LOG_LOCAL6);
543 #endif
544 #ifdef LOG_LOCAL7
545 rb_define_syslog_facility(LOG_LOCAL7);
546 #endif
547
548 /* Syslog levels and the shortcut methods */
549
550 #define rb_define_syslog_level(c, m) \
551 rb_define_const(mSyslogLevel, #c, INT2NUM(c)); \
552 rb_define_module_function(mSyslog, #m, mSyslog_##m, -1)
553
554 #ifdef LOG_EMERG
555 rb_define_syslog_level(LOG_EMERG, emerg);
556 #endif
557 #ifdef LOG_ALERT
558 rb_define_syslog_level(LOG_ALERT, alert);
559 #endif
560 #ifdef LOG_CRIT
561 rb_define_syslog_level(LOG_CRIT, crit);
562 #endif
563 #ifdef LOG_ERR
564 rb_define_syslog_level(LOG_ERR, err);
565 #endif
566 #ifdef LOG_WARNING
567 rb_define_syslog_level(LOG_WARNING, warning);
568 #endif
569 #ifdef LOG_NOTICE
570 rb_define_syslog_level(LOG_NOTICE, notice);
571 #endif
572 #ifdef LOG_INFO
573 rb_define_syslog_level(LOG_INFO, info);
574 #endif
575 #ifdef LOG_DEBUG
576 rb_define_syslog_level(LOG_DEBUG, debug);
577 #endif
578
579 /* Syslog macros */
580
581 rb_define_method(mSyslogMacros, "LOG_MASK", mSyslogMacros_LOG_MASK, 1);
582 rb_define_method(mSyslogMacros, "LOG_UPTO", mSyslogMacros_LOG_UPTO, 1);
583 rb_define_singleton_method(mSyslogMacros, "included", mSyslogMacros_included, 1);
584
585 rb_include_module(mSyslogConstants, mSyslogOption);
586 rb_include_module(mSyslogConstants, mSyslogFacility);
587 rb_include_module(mSyslogConstants, mSyslogLevel);
588 rb_funcall(mSyslogConstants, rb_intern("include"), 1, mSyslogMacros);
589
590 rb_define_singleton_method(mSyslogConstants, "included", mSyslogMacros_included, 1);
591 rb_funcall(mSyslog, rb_intern("include"), 1, mSyslogConstants);
592 }
rb_define_syslog_facility
#define rb_define_syslog_facility(c)
INT2NUM
#define INT2NUM(x)
Definition: ruby.h:1288
NUM2INT
#define NUM2INT(x)
Definition: ruby.h:630
rb_define_singleton_method
void rb_define_singleton_method(VALUE obj, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a singleton method for obj.
Definition: class.c:1655
ruby.h
rb_f_sprintf
VALUE rb_f_sprintf(int, const VALUE *)
Definition: sprintf.c:415
T_MODULE
#define T_MODULE
Definition: ruby.h:480
Qtrue
#define Qtrue
Definition: ruby.h:426
mSyslog_isopen
static VALUE mSyslog_isopen(VALUE self)
Definition: syslog.c:213
rb_eTypeError
VALUE rb_eTypeError
Definition: error.c:548
mSyslog_reopen
static VALUE mSyslog_reopen(int argc, VALUE *argv, VALUE self)
Definition: syslog.c:201
rb_funcall
VALUE rb_funcall(VALUE, ID, int,...)
Calls a method.
Definition: vm_eval.c:775
syslog_opened
static int syslog_opened
Definition: syslog.c:33
Check_Type
#define Check_Type(v, t)
Definition: ruby.h:532
rb_raise
void rb_raise(VALUE exc, const char *fmt,...)
Definition: error.c:1857
mSyslogLevel
static VALUE mSyslogLevel
Definition: syslog.c:27
syslog_write
static void syslog_write(int pri, int argc, VALUE *argv)
Definition: syslog.c:36
rb_include_module
void rb_include_module(VALUE klass, VALUE module)
Definition: class.c:827
mSyslog_instance
static VALUE mSyslog_instance(VALUE self)
Definition: syslog.c:342
FIXNUM_P
#define FIXNUM_P(f)
Definition: ruby.h:347
mSyslog_ident
static VALUE mSyslog_ident(VALUE self)
Definition: syslog.c:220
rb_gv_get
VALUE rb_gv_get(const char *)
Definition: variable.c:819
syslog_mask
static int syslog_mask
Definition: syslog.c:32
rb_block_given_p
int rb_block_given_p(void)
Definition: eval.c:712
rb_eRuntimeError
VALUE rb_eRuntimeError
Definition: error.c:547
NIL_P
#define NIL_P(v)
Definition: ruby.h:438
mSyslog
static VALUE mSyslog
Definition: syslog.c:16
strscanner::str
VALUE str
Definition: strscan.c:33
argc
int argc
Definition: ruby.c:131
Qfalse
#define Qfalse
Definition: ruby.h:425
syslog_ident
static const char * syslog_ident
Definition: syslog.c:31
rb_str_new2
#define rb_str_new2
Definition: intern.h:840
Init_syslog
void Init_syslog()
Definition: syslog.c:421
err
int err
Definition: win32.c:114
mSyslog_close
static VALUE mSyslog_close(VALUE self)
Definition: syslog.c:56
syslog_facility
static int syslog_facility
Definition: syslog.c:32
rb_define_module_function
void rb_define_module_function(VALUE module, const char *name, VALUE(*func)(ANYARGS), int argc)
Defines a module function for module.
Definition: class.c:1670
rb_yield
VALUE rb_yield(VALUE)
Definition: vm_eval.c:942
util.h
rb_sprintf
VALUE rb_sprintf(const char *format,...)
Definition: sprintf.c:1250
mSyslogMacros
static VALUE mSyslogMacros
Definition: syslog.c:29
mSyslog_facility
static VALUE mSyslog_facility(VALUE self)
Definition: syslog.c:234
strdup
#define strdup(s)
Definition: util.h:67
rb_scan_args
int rb_scan_args(int argc, const VALUE *argv, const char *fmt,...)
Definition: class.c:1728
PRIsVALUE
#define PRIsVALUE
Definition: ruby.h:137
Qnil
#define Qnil
Definition: ruby.h:427
syslog_options
static int syslog_options
Definition: syslog.c:32
mSyslogFacility
static VALUE mSyslogFacility
Definition: syslog.c:25
debug
#define debug(x)
Definition: _sdbm.c:52
VALUE
unsigned long VALUE
Definition: ruby.h:88
rb_class2name
const char * rb_class2name(VALUE)
Definition: variable.c:397
rb_extend_object
void rb_extend_object(VALUE obj, VALUE module)
Definition: eval.c:1305
FIX2INT
#define FIX2INT(x)
Definition: ruby.h:632
mSyslogOption
static VALUE mSyslogOption
Definition: syslog.c:23
rb_ensure
VALUE rb_ensure(VALUE(*b_proc)(ANYARGS), VALUE data1, VALUE(*e_proc)(ANYARGS), VALUE data2)
Definition: eval.c:839
mSyslog_inspect
static VALUE mSyslog_inspect(VALUE self)
Definition: syslog.c:325
rb_define_module_under
VALUE rb_define_module_under(VALUE outer, const char *name)
Definition: class.c:766
rb_define_syslog_option
#define rb_define_syslog_option(c)
RSTRING_PTR
#define RSTRING_PTR(str)
Definition: ruby.h:845
mSyslogConstants
static VALUE mSyslogConstants
Definition: syslog.c:21
INT2FIX
#define INT2FIX(i)
Definition: ruby.h:231
rb_define_syslog_level
#define rb_define_syslog_level(c, m)
mSyslog_set_mask
static VALUE mSyslog_set_mask(VALUE self, VALUE mask)
Definition: syslog.c:262
mSyslog_log
static VALUE mSyslog_log(int argc, VALUE *argv, VALUE self)
Definition: syslog.c:303
SafeStringValue
#define SafeStringValue(v)
Definition: ruby.h:545
mSyslogMacros_LOG_UPTO
static VALUE mSyslogMacros_LOG_UPTO(VALUE mod, VALUE pri)
Definition: syslog.c:396
mSyslog_open
static VALUE mSyslog_open(int argc, VALUE *argv, VALUE self)
Definition: syslog.c:150
xfree
void void xfree(void *)
rb_define_module
VALUE rb_define_module(const char *name)
Definition: class.c:746
rb_intern
#define rb_intern(str)
mod
#define mod(x, y)
Definition: date_strftime.c:28
NULL
#define NULL
Definition: _sdbm.c:103
define_syslog_shortcut_method
#define define_syslog_shortcut_method(pri, name)
Definition: syslog.c:347
mSyslogMacros_included
static VALUE mSyslogMacros_included(VALUE mod, VALUE target)
Definition: syslog.c:401
rb_define_method
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(ANYARGS), int argc)
Definition: class.c:1488
rb_eArgError
VALUE rb_eArgError
Definition: error.c:549
mSyslog_get_mask
static VALUE mSyslog_get_mask(VALUE self)
Definition: syslog.c:242
mSyslog_options
static VALUE mSyslog_options(VALUE self)
Definition: syslog.c:227
mSyslogMacros_LOG_MASK
static VALUE mSyslogMacros_LOG_MASK(VALUE mod, VALUE pri)
Definition: syslog.c:385
argv
char ** argv
Definition: ruby.c:132
rb_obj_class
VALUE rb_obj_class(VALUE)
Definition: object.c:226