Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | (* Copyright (C) 1999-2007 Henry Cejtin, Matthew Fluet, Suresh |
2 | * Jagannathan, and Stephen Weeks. | |
3 | * Copyright (C) 1997-2000 NEC Research Institute. | |
4 | * | |
5 | * MLton is released under a BSD-style license. | |
6 | * See the file MLton-LICENSE for details. | |
7 | *) | |
8 | ||
9 | (* From Tom 7 <twm@andrew.cmu.edu>. *) | |
10 | (* Implementation of the SYSLOG interface using MLton FFI. | |
11 | * This will only work in MLton. | |
12 | *) | |
13 | ||
14 | structure MLtonSyslog :> MLTON_SYSLOG = | |
15 | struct | |
16 | ||
17 | open PrimitiveFFI.MLton.Syslog | |
18 | ||
19 | type openflag = C_Int.t | |
20 | ||
21 | local | |
22 | open Logopt | |
23 | in | |
24 | val CONS = LOG_CONS | |
25 | val NDELAY = LOG_NDELAY | |
26 | val NOWAIT = LOG_NOWAIT | |
27 | val ODELAY = LOG_ODELAY | |
28 | (* NOT STANDARD *) | |
29 | val PERROR = LOG_PERROR | |
30 | (* *) | |
31 | val PID = LOG_PID | |
32 | end | |
33 | ||
34 | type facility = C_Int.t | |
35 | ||
36 | local | |
37 | open Facility | |
38 | in | |
39 | val AUTHPRIV = LOG_AUTH | |
40 | val CRON = LOG_CRON | |
41 | val DAEMON = LOG_DAEMON | |
42 | val KERN = LOG_KERN | |
43 | val LOCAL0 = LOG_LOCAL0 | |
44 | val LOCAL1 = LOG_LOCAL1 | |
45 | val LOCAL2 = LOG_LOCAL2 | |
46 | val LOCAL3 = LOG_LOCAL3 | |
47 | val LOCAL4 = LOG_LOCAL4 | |
48 | val LOCAL5 = LOG_LOCAL5 | |
49 | val LOCAL6 = LOG_LOCAL6 | |
50 | val LOCAL7 = LOG_LOCAL7 | |
51 | val LPR = LOG_LPR | |
52 | val MAIL = LOG_MAIL | |
53 | val NEWS = LOG_NEWS | |
54 | (* NOT STANDARD *) | |
55 | val SYSLOG = LOG_SYSLOG | |
56 | (* *) | |
57 | val USER = LOG_USER | |
58 | val UUCP = LOG_UUCP | |
59 | end | |
60 | ||
61 | type loglevel = C_Int.t | |
62 | ||
63 | local | |
64 | open Severity | |
65 | in | |
66 | val ALERT = LOG_ALERT | |
67 | val CRIT = LOG_CRIT | |
68 | val DEBUG = LOG_DEBUG | |
69 | val EMERG = LOG_EMERG | |
70 | val ERR = LOG_ERR | |
71 | val INFO = LOG_INFO | |
72 | val NOTICE = LOG_NOTICE | |
73 | val WARNING = LOG_WARNING | |
74 | end | |
75 | ||
76 | val openlog = fn (s, opt, fac) => | |
77 | let | |
78 | val optf = foldl C_Int.orb 0 opt | |
79 | in | |
80 | openlog (NullString.nullTerm s, optf, fac) | |
81 | end | |
82 | ||
83 | val closelog = fn () => | |
84 | closelog () | |
85 | ||
86 | val log = fn (lev, msg) => | |
87 | syslog (lev, NullString.nullTerm msg) | |
88 | ||
89 | end |