Import Upstream version 20180207
[hcoop/debian/mlton.git] / basis-library / mlton / syslog.sml
CommitLineData
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
14structure MLtonSyslog :> MLTON_SYSLOG =
15struct
16
17open PrimitiveFFI.MLton.Syslog
18
19type openflag = C_Int.t
20
21local
22 open Logopt
23in
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
32end
33
34type facility = C_Int.t
35
36local
37 open Facility
38in
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
59end
60
61type loglevel = C_Int.t
62
63local
64 open Severity
65in
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
74end
75
76val 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
83val closelog = fn () =>
84 closelog ()
85
86val log = fn (lev, msg) =>
87 syslog (lev, NullString.nullTerm msg)
88
89end