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 2 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, write to the Free Software 18 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 19*/ 20 21#include "includes.h" 22 23 24/*************************************************************************** 25auto-load some homes and printer services 26***************************************************************************/ 27static void add_auto_printers(void) 28{ 29 const char *p; 30 int pnum = lp_servicenumber(PRINTERS_NAME); 31 char *str; 32 33 if (pnum < 0) 34 return; 35 36 if ((str = SMB_STRDUP(lp_auto_services())) == NULL) 37 return; 38 39 for (p = strtok(str, LIST_SEP); p; p = strtok(NULL, LIST_SEP)) { 40 if (lp_servicenumber(p) >= 0) 41 continue; 42 43 if (pcap_printername_ok(p)) 44 lp_add_printer(p, pnum); 45 } 46 47 SAFE_FREE(str); 48} 49 50/*************************************************************************** 51load automatic printer services 52***************************************************************************/ 53void load_printers(void) 54{ 55 if (!pcap_cache_loaded()) 56 pcap_cache_reload(); 57 58 add_auto_printers(); 59 60 /* load all printcap printers */ 61 if (lp_load_printers() && lp_servicenumber(PRINTERS_NAME) >= 0) 62 pcap_printer_fn(lp_add_one_printer); 63} 64