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