79 |
if (printer_name == NULL) |
if (printer_name == NULL) |
80 |
return 0; |
return 0; |
81 |
|
|
82 |
|
*data = NULL; |
83 |
|
|
84 |
home = getenv("HOME"); |
home = getenv("HOME"); |
85 |
if (home == NULL) |
if (home == NULL) |
86 |
return 0; |
return 0; |
87 |
|
|
88 |
path = (char *) xmalloc(strlen(home) + sizeof("/.rdesktop/rdpdr/") + strlen(printer_name) + sizeof("/AutoPrinterCacheData")); |
path = (char *) xmalloc(strlen(home) + sizeof("/.rdesktop/rdpdr/") + strlen(printer_name) + |
89 |
|
sizeof("/AutoPrinterCacheData")); |
90 |
sprintf(path, "%s/.rdesktop/rdpdr/%s/AutoPrinterCacheData", home, printer_name); |
sprintf(path, "%s/.rdesktop/rdpdr/%s/AutoPrinterCacheData", home, printer_name); |
91 |
|
|
92 |
fd = open(path, O_RDONLY); |
fd = open(path, O_RDONLY); |
119 |
if (!printercache_mkdir(home, printer_name)) |
if (!printercache_mkdir(home, printer_name)) |
120 |
return; |
return; |
121 |
|
|
122 |
path = (char *) xmalloc(strlen(home) + sizeof("/.rdesktop/rdpdr/") + strlen(printer_name) + sizeof("/AutoPrinterCacheData")); |
path = (char *) xmalloc(strlen(home) + sizeof("/.rdesktop/rdpdr/") + strlen(printer_name) + |
123 |
|
sizeof("/AutoPrinterCacheData")); |
124 |
sprintf(path, "%s/.rdesktop/rdpdr/%s/AutoPrinterCacheData", home, printer_name); |
sprintf(path, "%s/.rdesktop/rdpdr/%s/AutoPrinterCacheData", home, printer_name); |
125 |
|
|
126 |
fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0600); |
fd = open(path, O_WRONLY | O_CREAT | O_TRUNC, 0600); |
149 |
in_uint32_le(s, type); |
in_uint32_le(s, type); |
150 |
switch (type) |
switch (type) |
151 |
{ |
{ |
152 |
|
/*case 4: renaming of item old name and then new name */ |
153 |
|
/*case 3: delete item name */ |
154 |
case 2: |
case 2: |
|
|
|
155 |
in_uint32_le(s, printer_unicode_length); |
in_uint32_le(s, printer_unicode_length); |
156 |
in_uint32_le(s, blob_length); |
in_uint32_le(s, blob_length); |
157 |
|
|
162 |
} |
} |
163 |
break; |
break; |
164 |
|
|
165 |
case 1: |
/*case 1: */ |
|
|
|
166 |
// TODO: I think this one just tells us what printer is on LPT? but why? |
// TODO: I think this one just tells us what printer is on LPT? but why? |
167 |
|
|
168 |
|
// |
169 |
|
// your name and the "users choice" of printer driver |
170 |
|
// my guess is that you can store it and automagically reconnect |
171 |
|
// the printer with correct driver next time. |
172 |
default: |
default: |
173 |
|
|
174 |
unimpl("RDPDR Printer Cache Packet Type: %d\n", type); |
unimpl("RDPDR Printer Cache Packet Type: %d\n", type); |