+/* $Id$ */
+
+#include <mit-copyright.h>
+#include <moira.h>
+#include <moira_site.h>
+
+#include <sys/stat.h>
+#include <sys/types.h>
+
+#include <ctype.h>
+#include <stdio.h>
+#include <string.h>
+
+#include "util.h"
+
+EXEC SQL INCLUDE sqlca;
+
+char *whoami = "lpcaccess.gen";
+char *db = "moira/moira";
+
+void sqlerr(void);
+
+int main(int argc, char **argv)
+{
+ EXEC SQL BEGIN DECLARE SECTION;
+ char name[PRINTERS_RP_SIZE], duplexname[PRINTERS_DUPLEXNAME_SIZE];
+ int lpc_acl, list_id;
+ EXEC SQL END DECLARE SECTION;
+ TARFILE *tf;
+ FILE *out;
+ char filename[MAXPATHLEN];
+ time_t mtime, now = time(NULL);
+
+ init_acls();
+
+ EXEC SQL CONNECT :db;
+
+ EXEC SQL WHENEVER SQLERROR DO sqlerr();
+
+ sprintf(filename, "%s/lpcaccess.out", DCM_DIR);
+ tf = tarfile_open(filename);
+
+ EXEC SQL SELECT list_id INTO :list_id FROM list
+ WHERE name = 'ops-lpcaccess-top';
+
+ out = tarfile_start(tf, "lpcaccess.top", 0755, 1, 1, "daemon", "daemon",
+ now);
+ dump_krb_acl(out, "LIST", list_id, 5);
+ tarfile_end(tf);
+
+ EXEC SQL SELECT list_id INTO :list_id FROM LIST
+ WHERE name = 'sap-lpcaccess-top';
+
+ out = tarfile_start(tf, "sap-lpcaccess.top", 0755, 1, 1, "daemon", "daemon",
+ now);
+ dump_krb_acl(out, "LIST", list_id, 5);
+ tarfile_end(tf);
+
+ EXEC SQL DECLARE csr_lpc CURSOR FOR SELECT UNIQUE rp, duplexname, lpc_acl
+ FROM printers WHERE lpc_acl != 0;
+ EXEC SQL OPEN csr_lpc;
+ while (1)
+ {
+ EXEC SQL FETCH csr_lpc INTO :name, :duplexname, :lpc_acl;
+ if (sqlca.sqlcode)
+ break;
+
+ strtrim(name);
+
+ tarfile_mkdir(tf, name, 0755, 1, 1, "daemon", "daemon", now);
+ sprintf(filename, "%s/lpcaccess", name);
+ out = tarfile_start(tf, filename, 0755, 1, 1, "daemon", "daemon", now);
+ dump_krb_acl(out, "LIST", lpc_acl, 5);
+ tarfile_end(tf);
+
+ if (*duplexname)
+ {
+ strtrim(duplexname);
+
+ tarfile_mkdir(tf, duplexname, 0755, 1, 1, "daemon", "daemon", now);
+ sprintf(filename, "%s/lpcaccess", duplexname);
+ out = tarfile_start(tf, filename, 0755, 1, 1, "daemon", "daemon", now);
+ dump_krb_acl(out, "LIST", lpc_acl, 5);
+ tarfile_end(tf);
+ }
+
+ }
+ EXEC SQL CLOSE csr_lpc;
+
+ tarfile_close(tf);
+
+ exit(MR_SUCCESS);
+}
+
+void sqlerr(void)
+{
+ db_error(sqlca.sqlcode);
+}
+