diff options
author | Gerald Carter <jerry@samba.org> | 2001-05-17 18:57:25 +0000 |
---|---|---|
committer | Gerald Carter <jerry@samba.org> | 2001-05-17 18:57:25 +0000 |
commit | 09506ac0e64b84d73e3b8fdd4942fa52dba6060f (patch) | |
tree | 8c2a9a5acdc933dd5ee709def03fc78c4d177707 /source/libsmb/cli_spoolss.c | |
parent | f2bb3c50f3481689521607f79ba2bfd696330380 (diff) | |
download | samba-09506ac0e64b84d73e3b8fdd4942fa52dba6060f.tar.gz samba-09506ac0e64b84d73e3b8fdd4942fa52dba6060f.tar.xz samba-09506ac0e64b84d73e3b8fdd4942fa52dba6060f.zip |
merge from 2.2 DeletePrinterDriver() server side stud coming
in separate commit after I get it working in 2.2.
Diffstat (limited to 'source/libsmb/cli_spoolss.c')
-rw-r--r-- | source/libsmb/cli_spoolss.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/source/libsmb/cli_spoolss.c b/source/libsmb/cli_spoolss.c index f68483dabe3..4f8d6c0c883 100644 --- a/source/libsmb/cli_spoolss.c +++ b/source/libsmb/cli_spoolss.c @@ -1053,4 +1053,61 @@ done: return result; } +/********************************************************************** + * Delete a Printer Driver from the server (does not remove + * the driver files + */ +uint32 cli_spoolss_deleteprinterdriver ( + struct cli_state *cli, + TALLOC_CTX *mem_ctx, + char *arch, + char *driver +) +{ + prs_struct qbuf, rbuf; + SPOOL_Q_DELETEPRINTERDRIVER q; + SPOOL_R_DELETEPRINTERDRIVER r; + uint32 result; + fstring server; + + ZERO_STRUCT(q); + ZERO_STRUCT(r); + + + /* Initialise input parameters */ + prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL); + prs_init(&rbuf, 0, mem_ctx, UNMARSHALL); + + slprintf (server, sizeof(fstring)-1, "\\\\%s", cli->desthost); + strupper (server); + + /* write the request */ + make_spoolss_q_deleteprinterdriver (mem_ctx, &q, server, arch, driver); + + /* Marshall data and send request */ + result = NT_STATUS_UNSUCCESSFUL; + if (!spoolss_io_q_deleteprinterdriver ("", &q, &qbuf, 0) || + !rpc_api_pipe_req (cli,SPOOLSS_DELETEPRINTERDRIVER , &qbuf, &rbuf)) + { + goto done; + } + + + /* Unmarshall response */ + result = NT_STATUS_UNSUCCESSFUL; + if (!spoolss_io_r_deleteprinterdriver ("", &r, &rbuf, 0)) + { + goto done; + } + + /* Return output parameters */ + result = r.status; + +done: + prs_mem_free(&qbuf); + prs_mem_free(&rbuf); + + return result; +} + |