/* $Id$ */ #include #include #include #include #include #include #include #include #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); }