[Samba] SLow cups printing, lots of get-printer-attributes
Martin Zielinski
mz at seh.de
Mon Jan 7 12:14:32 GMT 2008
Hello Emmanuel,
If your can compile the sources yourself, you could try the attached
diff to extend the setprinter call of rpcclient.
usage: setprinter comment [location]
CAVE: It's just a may-be-buggy patch from me. Not from the samba team.
Use at your own risk! :-)
Bye,
Martin
Emmanuel Lacour schrieb:
> On Wed, Jan 02, 2008 at 09:45:49AM -0800, Jeremy Allison wrote:
>> On Wed, Jan 02, 2008 at 08:52:46AM +0100, Martin Zielinski wrote:
>>> Hello,
>>>
>>> This is the result of asking cups for a comment and location string to
>>> sync them between cups and samba.
>>> I've allready asked the samba-team to replace it with a more general
>>> approach but got no response until now.
>> Sorry, your mail is sat in my inbox. I understand the issue and I'm planning
>> to try and get the fix into 3.2.
>>
>
> Thanks.
>
> I'm currently trying to create a script to maintain comment/location for
> my printers, using rpcclient.
> I can change comment with "setprinter the_printer_name the_description"
> without problem.
> But when I try this for setting the location, I get WERR_ACCESS_DENIED:
>
> setprinterdata the_printer_name string location the_location
>
>
> any idea to solve this would be welcome ;)
>
>
-------------- next part --------------
--- samba-3.0.28.orig/source/rpcclient/cmd_spoolss.c 2007-11-15 04:15:04.000000000 +0100
+++ samba-3.0.28/source/rpcclient/cmd_spoolss.c 2008-01-07 13:12:14.000000000 +0100
@@ -476,17 +476,28 @@
fstring printername,
servername,
user,
- comment;
+ comment,
+ location;
- if (argc == 1 || argc > 3) {
- printf("Usage: %s printername comment\n", argv[0]);
+ /* Added the option to change the printer location */
+
+ if (argc == 1 || argc > 4) {
+ printf("Usage: %s printername comment [location]\n", argv[0]);
return WERR_OK;
}
+ comment[0] = '\0';
+ location[0] = '\0';
+
/* Open a printer handle */
- if (argc == 3) {
- fstrcpy(comment, argv[2]);
+ if (argc >= 3) {
+ if (argv[2][0] != '-' || argv[2][1] != '\0') {
+ fstrcpy(comment, argv[2]);
+ }
+ }
+ if (argc > 3) {
+ fstrcpy(location, argv[3]);
}
slprintf(servername, sizeof(servername)-1, "\\\\%s", cli->cli->desthost);
@@ -513,12 +524,15 @@
/* Modify the comment. */
init_unistr(&ctr.printers_2->comment, comment);
+ /* Modify the location. */
+ if (argc > 3)
+ init_unistr(&ctr.printers_2->location, location);
ctr.printers_2->devmode = NULL;
ctr.printers_2->secdesc = NULL;
result = rpccli_spoolss_setprinter(cli, mem_ctx, &pol, info_level, &ctr, 0);
if (W_ERROR_IS_OK(result))
- printf("Success in setting comment.\n");
+ printf("Success in setting comment%s.\n", argc>3?" and location":"");
done:
if (opened_hnd)
More information about the samba
mailing list