1/* 2 Unix SMB/CIFS implementation. 3 load printer lists 4 Copyright (C) Andrew Tridgell 1992-2000 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 3 of the License, or 9 (at your option) any later version. 10 11 This program is distributed in the hope that it will be useful, 12 but WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 GNU General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with this program. If not, see <http://www.gnu.org/licenses/>. 18*/ 19 20#include "includes.h" 21 22 23/*************************************************************************** 24auto-load some homes and printer services 25***************************************************************************/ 26static void add_auto_printers(void) 27{ 28 const char *p; 29 int pnum = lp_servicenumber(PRINTERS_NAME); 30 char *str; 31 char *saveptr; 32 33 if (pnum < 0) 34 if (process_registry_service(PRINTERS_NAME)) 35 pnum = lp_servicenumber(PRINTERS_NAME); 36 37 if (pnum < 0) 38 return; 39 40 if ((str = SMB_STRDUP(lp_auto_services())) == NULL) 41 return; 42 43 for (p = strtok_r(str, LIST_SEP, &saveptr); p; 44 p = strtok_r(NULL, LIST_SEP, &saveptr)) { 45 if (lp_servicenumber(p) >= 0) 46 continue; 47 48 if (pcap_printername_ok(p)) 49 lp_add_printer(p, pnum); 50 } 51 52 SAFE_FREE(str); 53} 54 55/*************************************************************************** 56load automatic printer services 57***************************************************************************/ 58void load_printers(void) 59{ 60 if (!pcap_cache_loaded()) 61 pcap_cache_reload(); 62 63 add_auto_printers(); 64 65 /* load all printcap printers */ 66 if (lp_load_printers() && lp_servicenumber(PRINTERS_NAME) >= 0) 67 pcap_printer_fn(lp_add_one_printer, NULL); 68} 69