From 134c0d27cce4a6912212770f645a46a22e204ad6 Mon Sep 17 00:00:00 2001 From: Richard Sharpe Date: Mon, 5 Mar 2001 13:34:48 +0000 Subject: smb.h: add one error code for no such printer job libsmbclient.c: fix problems with return codes on smbc_unlink_print_job (This used to be commit 7557f9145ccdced3fcebdd20e1eb6fc5a27abda2) --- source3/libsmb/libsmbclient.c | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) (limited to 'source3/libsmb') diff --git a/source3/libsmb/libsmbclient.c b/source3/libsmb/libsmbclient.c index 29f2d807ba..410e2ebdd6 100644 --- a/source3/libsmb/libsmbclient.c +++ b/source3/libsmb/libsmbclient.c @@ -851,8 +851,9 @@ int smbc_unlink(const char *fname) return -1; } - if (cli_printjob_del(&srv->cli, job) != 0) { + if ((err = cli_printjob_del(&srv->cli, job)) != 0) { + return -1; } @@ -2102,6 +2103,7 @@ off_t smbc_telldir(int fd) int smbc_lseekdir(int fd, off_t offset, int whence) { + struct smbc_file *fe; if (!smbc_initialized) { @@ -2117,6 +2119,24 @@ int smbc_lseekdir(int fd, off_t offset, int whence) } + fe = smbc_file_table[fd - smbc_start_fd]; + + if (!fe) { + + errno = EBADF; + return -1; + + } + + if (fe->file != False) { /* FIXME, should be dir, perhaps */ + + errno = ENOTDIR; + return -1; + + } + + /* Now, check what we were passed and see if it is OK ... */ + return ENOSYS; /* Not implemented so far ... */ } @@ -2309,6 +2329,7 @@ int smbc_unlink_print_job(const char *fname, int id) struct smbc_server *srv; fstring server, share, user, password; pstring path; + int err; if (!smbc_initialized) { @@ -2338,11 +2359,15 @@ int smbc_unlink_print_job(const char *fname, int id) } - if (cli_printjob_del(&srv->cli, id) < 0) { + if ((err = cli_printjob_del(&srv->cli, id)) != 0) { - errno = smbc_errno(&srv->cli); + if (err < 0) + errno = smbc_errno(&srv->cli); + else if (err == ERRnosuchprintjob) + errno = EINVAL; return -1; + } return 0; -- cgit