s3:modules: Update getdate.y to work with newer bison versions
[samba.git] / source3 / printing / printer_list.h
1 /*
2    Unix SMB/CIFS implementation.
3    Share Database of available printers.
4    Copyright (C) Simo Sorce 2010
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 #ifndef _PRINTER_LIST_H_
21 #define _PRINTER_LIST_H_
22
23 bool printer_list_parent_init(void);
24
25 /**
26  * @brief Get the comment and the last refresh time from the printer list
27  *        database.
28  *
29  * @param[in]  mem_ctx  The talloc memory context to use.
30  *
31  * @param[in]  name     The printer name to lookup.
32  *
33  * @param[out] comment  A pointer to store the comment of the printer.
34  *
35  * @param[out] location A pointer to store the location of the printer.
36  *
37  * @param[out] last_refresh A pointer to store the last refresh time of the
38  *                          printer.
39  *
40  * @return              NT_STATUS_OK on success, a correspoining NTSTATUS error
41  *                      code on a failure.
42  */
43 NTSTATUS printer_list_get_printer(TALLOC_CTX *mem_ctx,
44                                   const char *name,
45                                   const char **comment,
46                                   const char **location,
47                                   time_t *last_refresh);
48
49 /**
50  * @brief Add a printer to the printer list database.
51  *
52  * @param[in]  mem_ctx  The talloc memory context to use.
53  *
54  * @param[in]  name     The printer name to store in the db.
55  *
56  * @param[in]  comment  The comment to store in the db.
57  *
58  * @param[in]  location  The location to store in the db.
59  *
60  * @param[in]  last_refresh The last refresh time of the printer to store in
61  *                          the db.
62  *
63  * @return              NT_STATUS_OK on success, a correspoining NTSTATUS error
64  *                      code on a failure.
65  */
66 NTSTATUS printer_list_set_printer(TALLOC_CTX *mem_ctx,
67                                   const char *name,
68                                   const char *comment,
69                                   const char *location,
70                                   time_t last_refresh);
71
72 /**
73  * @brief Get the time of the last refresh of the printer database.
74  *
75  * @param[out] last_refresh The last refresh time in the db.
76  *
77  * @return              NT_STATUS_OK on success, a correspoining NTSTATUS error
78  *                      code on a failure.
79  */
80 NTSTATUS printer_list_get_last_refresh(time_t *last_refresh);
81
82 /**
83  * @brief Mark the database as reloaded.
84  *
85  * This sets the last refresh time to the current time. You can get the last
86  * reload/refresh time of the database with printer_list_get_last_refresh().
87  *
88  * @return              NT_STATUS_OK on success, a correspoining NTSTATUS error
89  *                      code on a failure.
90  */
91 NTSTATUS printer_list_mark_reload(void);
92
93 /**
94  * @brief Cleanup old entries in the database.
95  *
96  * Entries older than the last refresh times will be deleted.
97  *
98  * @return              NT_STATUS_OK on success, a correspoining NTSTATUS error
99  *                      code on a failure.
100  */
101 NTSTATUS printer_list_clean_old(void);
102
103 NTSTATUS printer_list_read_run_fn(void (*fn)(const char *, const char *, const char *, void *),
104                                   void *private_data);
105 #endif /* _PRINTER_LIST_H_ */