1
0
mirror of https://github.com/samba-team/samba.git synced 2025-11-27 08:23:49 +03:00

smb.h: add one error code for no such printer job

libsmbclient.c: fix problems with return codes on smbc_unlink_print_job
This commit is contained in:
Richard Sharpe
-
parent 65275e73ee
commit 7557f9145c
2 changed files with 29 additions and 3 deletions

View File

@@ -174,6 +174,7 @@ implemented */
#define ERRbaddirectory 267 /* Invalid directory name in a path. */ #define ERRbaddirectory 267 /* Invalid directory name in a path. */
#define ERRunknownipc 2142 #define ERRunknownipc 2142
#define ERRbuftoosmall 2123 #define ERRbuftoosmall 2123
#define ERRnosuchprintjob 2151
#define ERROR_SUCCESS (0) #define ERROR_SUCCESS (0)
#define ERROR_INVALID_FUNCTION (1) #define ERROR_INVALID_FUNCTION (1)

View File

@@ -851,8 +851,9 @@ int smbc_unlink(const char *fname)
return -1; return -1;
} }
if (cli_printjob_del(&srv->cli, job) != 0) { if ((err = cli_printjob_del(&srv->cli, job)) != 0) {
return -1; return -1;
} }
@@ -2102,6 +2103,7 @@ off_t smbc_telldir(int fd)
int smbc_lseekdir(int fd, off_t offset, int whence) int smbc_lseekdir(int fd, off_t offset, int whence)
{ {
struct smbc_file *fe;
if (!smbc_initialized) { 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 ... */ return ENOSYS; /* Not implemented so far ... */
} }
@@ -2309,6 +2329,7 @@ int smbc_unlink_print_job(const char *fname, int id)
struct smbc_server *srv; struct smbc_server *srv;
fstring server, share, user, password; fstring server, share, user, password;
pstring path; pstring path;
int err;
if (!smbc_initialized) { 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 -1;
} }
return 0; return 0;