1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-11 05:18:09 +03:00

printing: Create default architecture directories on init.

Reviewed-by: Guenther Deschner <gd@samba.org>

Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Thu Jan 17 20:36:17 CET 2013 on sn-devel-104
This commit is contained in:
Andreas Schneider 2013-01-17 17:18:04 +01:00 committed by Andreas Schneider
parent 79fa78e285
commit d34cd6d061

View File

@ -74,6 +74,61 @@ static const struct print_architecture_table_node archi_table[]= {
{NULL, "", -1 }
};
static bool print_driver_directories_init(void)
{
int service, i;
char *driver_path;
bool ok;
TALLOC_CTX *mem_ctx = talloc_stackframe();
service = lp_servicenumber("print$");
if (service < 0) {
/* We don't have a print$ share */
DEBUG(5, ("No print$ share has been configured.\n"));
return true;
}
driver_path = lp_pathname(mem_ctx, service);
if (driver_path == NULL) {
return false;
}
ok = directory_create_or_exist(driver_path, sec_initial_uid(), 0755);
if (!ok) {
DEBUG(1, ("Failed to create printer driver directory %s\n",
driver_path));
talloc_free(mem_ctx);
return false;
}
for (i = 0; archi_table[i].long_archi != NULL; i++) {
const char *arch_path;
arch_path = talloc_asprintf(mem_ctx,
"%s/%s",
driver_path,
archi_table[i].short_archi);
if (arch_path == NULL) {
talloc_free(mem_ctx);
return false;
}
ok = directory_create_or_exist(arch_path,
sec_initial_uid(),
0755);
if (!ok) {
DEBUG(1, ("Failed to create printer driver "
"architecture directory %s\n",
arch_path));
talloc_free(mem_ctx);
return false;
}
}
talloc_free(mem_ctx);
return true;
}
/****************************************************************************
Open the NT printing tdbs. Done once before fork().
****************************************************************************/
@ -82,6 +137,10 @@ bool nt_printing_init(struct messaging_context *msg_ctx)
{
WERROR win_rc;
if (!print_driver_directories_init()) {
return false;
}
if (!nt_printing_tdb_upgrade()) {
return false;
}