diff options
Diffstat (limited to 'source/printing/nt_printing.c')
-rw-r--r-- | source/printing/nt_printing.c | 35 |
1 files changed, 30 insertions, 5 deletions
diff --git a/source/printing/nt_printing.c b/source/printing/nt_printing.c index c4c26b04be0..3311790cd2c 100644 --- a/source/printing/nt_printing.c +++ b/source/printing/nt_printing.c @@ -408,7 +408,7 @@ BOOL get_a_builtin_ntform(UNISTR2 *uni_formname,nt_forms_struct *form) { int i,count; fstring form_name; - unistr2_to_ascii(form_name, uni_formname, sizeof(form_name)-1); + unistr2_to_dos(form_name, uni_formname, sizeof(form_name)-1); DEBUGADD(6,("Looking for builtin form %s \n", form_name)); count = sizeof(default_forms) / sizeof(default_forms[0]); for (i=0;i<count;i++) { @@ -510,7 +510,7 @@ BOOL add_a_form(nt_forms_struct **list, const FORM *form, int *count) update=False; - unistr2_to_ascii(form_name, &form->name, sizeof(form_name)-1); + unistr2_to_dos(form_name, &form->name, sizeof(form_name)-1); for (n=0; n<*count; n++) { if (!strncmp((*list)[n].name, form_name, strlen(form_name))) { DEBUG(103, ("NT workaround, [%s] already exists\n", form_name)); @@ -525,7 +525,7 @@ BOOL add_a_form(nt_forms_struct **list, const FORM *form, int *count) return False; } *list = tl; - unistr2_to_ascii((*list)[n].name, &form->name, sizeof((*list)[n].name)-1); + unistr2_to_dos((*list)[n].name, &form->name, sizeof((*list)[n].name)-1); (*count)++; } @@ -552,7 +552,7 @@ BOOL delete_a_form(nt_forms_struct **list, UNISTR2 *del_name, int *count, WERROR *ret = WERR_OK; - unistr2_to_ascii(form_name, del_name, sizeof(form_name)-1); + unistr2_to_dos(form_name, del_name, sizeof(form_name)-1); for (n=0; n<*count; n++) { if (!strncmp((*list)[n].name, form_name, strlen(form_name))) { @@ -586,7 +586,7 @@ void update_a_form(nt_forms_struct **list, const FORM *form, int count) { int n=0; fstring form_name; - unistr2_to_ascii(form_name, &(form->name), sizeof(form_name)-1); + unistr2_to_dos(form_name, &(form->name), sizeof(form_name)-1); DEBUG(106, ("[%s]\n", form_name)); for (n=0; n<count; n++) @@ -3007,6 +3007,31 @@ BOOL set_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level) } /**************************************************************************** + Delete driver init data stored for a specified driver +****************************************************************************/ + +BOOL del_driver_init(char *drivername) +{ + pstring key; + TDB_DATA kbuf; + + if (!drivername || !*drivername) { + DEBUG(3,("del_driver_init: No drivername specified!\n")); + return False; + } + + slprintf(key, sizeof(key)-1, "%s%s", DRIVER_INIT_PREFIX, drivername); + dos_to_unix(key); /* Convert key to unix-codepage */ + + kbuf.dptr = key; + kbuf.dsize = strlen(key)+1; + + DEBUG(6,("del_driver_init: Removing driver init data for [%s]\n", drivername)); + + return (tdb_delete(tdb_drivers, kbuf) == 0); +} + +/**************************************************************************** Pack up the DEVMODE and specifics for a printer into a 'driver init' entry in the tdb. Note: this is different from the driver entry and the printer entry. There should be a single driver init entry for each driver regardless |