}
} else {
/* Neither the workgroup nor server exists */
- errno = ECONNREFUSED;
if (dir) {
SAFE_FREE(dir->fname);
SAFE_FREE(dir);
}
TALLOC_FREE(frame);
+ errno = ECONNREFUSED;
return NULL;
}
frame = talloc_stackframe();
if (!SMBC_dlist_contains(context->internal->files, dir)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
if (!context || !context->internal->initialized) {
- errno = EINVAL;
DEBUG(0, ("Invalid context in SMBC_readdir_ctx()\n"));
TALLOC_FREE(frame);
+ errno = EINVAL;
return NULL;
}
if (!SMBC_dlist_contains(context->internal->files, dir)) {
- errno = EBADF;
DEBUG(0, ("Invalid dir in SMBC_readdir_ctx()\n"));
TALLOC_FREE(frame);
+ errno = EBADF;
return NULL;
}
if (dir->file != False) { /* FIXME, should be dir, perhaps */
- errno = ENOTDIR;
DEBUG(0, ("Found file vs directory in SMBC_readdir_ctx()\n"));
TALLOC_FREE(frame);
+ errno = ENOTDIR;
return NULL;
}
dirent = dir->dir_next->dirent;
if (!dirent) {
- errno = ENOENT;
TALLOC_FREE(frame);
+ errno = ENOENT;
return NULL;
}
ret = smbc_readdir_internal(context, dirp, dirent, maxlen);
if (ret == -1) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return NULL;
}
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!SMBC_dlist_contains(context->internal->files, dir)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
if (dir->file != False) { /* FIXME, should be dir, perhaps */
- errno = ENOTDIR;
TALLOC_FREE(frame);
+ errno = ENOTDIR;
return -1;
}
if (!dirlist->dirent) {
- errno = ENOENT; /* Bad error */
TALLOC_FREE(frame);
+ errno = ENOENT; /* Bad error */
return -1;
}
ret = smbc_readdir_internal(context, dirent,
dirlist->dirent, maxlen);
if (ret == -1) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (rem < count) { /* We managed to copy something */
- errno = 0;
TALLOC_FREE(frame);
+ errno = 0;
return count - rem;
}
else { /* Nothing copied ... */
- errno = EINVAL; /* Not enough space ... */
TALLOC_FREE(frame);
+ errno = EINVAL; /* Not enough space ... */
return -1;
}
NTSTATUS status;
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!fname) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
&user,
&password,
NULL)) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!user || user[0] == (char)0) {
user = talloc_strdup(frame, smbc_getUser(context));
if (!user) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return -1;
}
}
server, port, share, &workgroup, &user, &password);
if (!srv) {
-
+ int err = errno; /* errno set by SMBC_server */
TALLOC_FREE(frame);
- return -1; /* errno set by SMBC_server */
-
+ errno = err;
+ return -1;
}
creds = context->internal->creds;
srv->cli, path, &targetcli, &targetpath);
if (!NT_STATUS_IS_OK(status)) {
d_printf("Could not resolve %s\n", path);
- errno = ENOENT;
TALLOC_FREE(frame);
+ errno = ENOENT;
return -1;
}
/*d_printf(">>>mkdir: resolved path as %s\n", targetpath);*/
NTSTATUS status;
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!fname) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
&user,
&password,
NULL)) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!user || user[0] == (char)0) {
user = talloc_strdup(frame, smbc_getUser(context));
if (!user) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return -1;
}
}
server, port, share, &workgroup, &user, &password);
if (!srv) {
-
+ int err = errno; /* errno set by SMBC_server */
TALLOC_FREE(frame);
- return -1; /* errno set by SMBC_server */
-
+ errno = err;
+ return -1;
}
creds = context->internal->creds;
srv->cli, path, &targetcli, &targetpath);
if (!NT_STATUS_IS_OK(status)) {
d_printf("Could not resolve %s\n", path);
- errno = ENOENT;
TALLOC_FREE(frame);
+ errno = ENOENT;
return -1;
}
/*d_printf(">>>rmdir: resolved path as %s\n", targetpath);*/
lpath = talloc_asprintf(frame, "%s\\*",
targetpath);
if (!lpath) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return -1;
}
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!SMBC_dlist_contains(context->internal->files, dir)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
if (dir->file != False) { /* FIXME, should be dir, perhaps */
- errno = ENOTDIR;
TALLOC_FREE(frame);
+ errno = ENOTDIR;
return -1;
}
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (dir->file != False) { /* FIXME, should be dir, perhaps */
- errno = ENOTDIR;
TALLOC_FREE(frame);
+ errno = ENOTDIR;
return -1;
}
ok = update_dir_ents(dir, dirent);
if (!ok) {
- errno = EINVAL; /* Bad entry */
TALLOC_FREE(frame);
+ errno = EINVAL; /* Bad entry */
return -1;
}
if (!context || !context->internal->initialized) {
- errno = EINVAL; /* Best I can think of ... */
TALLOC_FREE(frame);
+ errno = EINVAL; /* Best I can think of ... */
return -1;
}
if (!fname) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
&user,
&password,
NULL)) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!user || user[0] == (char)0) {
user = talloc_strdup(frame, smbc_getUser(context));
if (!user) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return -1;
}
}
server, port, share, &workgroup, &user, &password);
if (!srv) {
+ int err = errno; /* errno set by SMBC_server */
TALLOC_FREE(frame);
- return -1; /* errno set by SMBC_server */
+ errno = err;
+ return -1;
}
creds = context->internal->creds;
srv->cli, path, &targetcli, &targetpath);
if (!NT_STATUS_IS_OK(status)) {
d_printf("Could not resolve %s\n", path);
- errno = ENOENT;
TALLOC_FREE(frame);
+ errno = ENOENT;
return -1;
}
if (!context || !context->internal->initialized) {
- errno = EINVAL; /* Best I can think of ... */
TALLOC_FREE(frame);
+ errno = EINVAL; /* Best I can think of ... */
return -1;
}
if (!fname) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
&user,
&password,
NULL)) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!user || user[0] == (char)0) {
user = talloc_strdup(frame, smbc_getUser(context));
if (!user) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return -1;
}
}
server, port, share, &workgroup, &user, &password);
if (!srv) {
+ int err = errno; /* errno set by SMBC_server */
TALLOC_FREE(frame);
- return -1; /* errno set by SMBC_server */
+ errno = err;
+ return -1;
}
ok = SMBC_setatr(
(struct timespec) { .tv_nsec = SAMBA_UTIME_OMIT },
0);
if (!ok) {
+ int err = errno; /* errno set by SMBC_setatr */
TALLOC_FREE(frame);
- return -1; /* errno set by SMBC_setatr */
+ errno = err;
+ return -1;
}
TALLOC_FREE(frame);
if (!context || !context->internal->initialized) {
- errno = EINVAL; /* Best I can think of ... */
TALLOC_FREE(frame);
+ errno = EINVAL; /* Best I can think of ... */
return -1;
}
if (!fname) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
&user,
&password,
NULL)) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!user || user[0] == (char)0) {
user = talloc_strdup(frame, smbc_getUser(context));
if (!user) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return -1;
}
}
server, port, share, &workgroup, &user, &password);
if (!srv) {
+ int err = errno; /* SMBC_server sets errno */
TALLOC_FREE(frame);
- return -1; /* SMBC_server sets errno */
-
+ errno = err;
+ return -1;
}
creds = context->internal->creds;
srv->cli, path, &targetcli, &targetpath);
if (!NT_STATUS_IS_OK(status)) {
d_printf("Could not resolve %s\n", path);
- errno = ENOENT;
TALLOC_FREE(frame);
+ errno = ENOENT;
return -1;
}
/*d_printf(">>>unlink: resolved path as %s\n", targetpath);*/
!ocontext->internal->initialized ||
!ncontext->internal->initialized) {
- errno = EINVAL; /* Best I can think of ... */
TALLOC_FREE(frame);
+ errno = EINVAL; /* Best I can think of ... */
return -1;
}
if (!oname || !nname) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
&user1,
&password1,
NULL)) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!user1 || user1[0] == (char)0) {
user1 = talloc_strdup(frame, smbc_getUser(ocontext));
if (!user1) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return -1;
}
}
if (SMBC_parse_path(frame,
- ncontext,
- nname,
- NULL,
- &server2,
- &port2,
- &share2,
- &path2,
- &user2,
- &password2,
- NULL)) {
- errno = EINVAL;
+ ncontext,
+ nname,
+ NULL,
+ &server2,
+ &port2,
+ &share2,
+ &path2,
+ &user2,
+ &password2,
+ NULL))
+ {
TALLOC_FREE(frame);
- return -1;
+ errno = EINVAL;
+ return -1;
}
if (!user2 || user2[0] == (char)0) {
user2 = talloc_strdup(frame, smbc_getUser(ncontext));
if (!user2) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return -1;
}
}
if (strcmp(server1, server2) || strcmp(share1, share2) ||
strcmp(user1, user2)) {
/* Can't rename across file systems, or users?? */
- errno = EXDEV;
TALLOC_FREE(frame);
+ errno = EXDEV;
return -1;
}
srv = SMBC_server(frame, ocontext, True,
server1, port1, share1, &workgroup, &user1, &password1);
if (!srv) {
+ int err = errno;
TALLOC_FREE(frame);
+ errno = err;
return -1;
}
srv->cli, path1, &targetcli1, &targetpath1);
if (!NT_STATUS_IS_OK(status)) {
d_printf("Could not resolve %s\n", path1);
- errno = ENOENT;
TALLOC_FREE(frame);
+ errno = ENOENT;
return -1;
}
srv->cli, path2, &targetcli2, &targetpath2);
if (!NT_STATUS_IS_OK(status)) {
d_printf("Could not resolve %s\n", path2);
- errno = ENOENT;
TALLOC_FREE(frame);
+ errno = ENOENT;
return -1;
}
/*d_printf(">>>rename: resolved path as %s\n", targetpath2);*/
strcmp(targetcli1->share, targetcli2->share))
{
/* can't rename across file systems */
- errno = EXDEV;
TALLOC_FREE(frame);
+ errno = EXDEV;
return -1;
}
!NT_STATUS_IS_OK(cli_rename(targetcli1, targetpath1,
targetpath2, false))) {
- errno = eno;
TALLOC_FREE(frame);
+ errno = eno;
return -1;
}
TALLOC_CTX *frame = talloc_stackframe();
if (!context || !context->internal->initialized) {
- errno = EINVAL; /* Best I can think of ... */
TALLOC_FREE(frame);
+ errno = EINVAL; /* Best I can think of ... */
return NULL;
}
if (!fname) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return NULL;
}
&user,
&password,
NULL)) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return NULL;
}
if (!user || user[0] == (char)0) {
user = talloc_strdup(frame, smbc_getUser(context));
if (!user) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return NULL;
}
}
srv = SMBC_server(frame, context, True,
server, port, share, &workgroup, &user, &password);
if (!srv) {
- if (errno == EPERM) errno = EACCES;
+ int err = errno;
+
TALLOC_FREE(frame);
+
+ errno = err;
+ if (errno == EPERM) {
+ errno = EACCES;
+ }
return NULL; /* SMBC_server sets errno */
}
file = SMB_CALLOC_ARRAY(SMBCFILE, 1);
if (!file) {
- errno = ENOMEM;
TALLOC_FREE(frame);
+ errno = ENOMEM;
return NULL;
}
srv->cli, path, &targetcli, &targetpath);
if (!NT_STATUS_IS_OK(status)) {
d_printf("Could not resolve %s\n", path);
- errno = ENOENT;
SAFE_FREE(file);
TALLOC_FREE(frame);
+ errno = ENOENT;
return NULL;
}
/*d_printf(">>>open: resolved %s as %s\n", path, targetpath);*/
off_t offset;
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
DEBUG(4, ("smbc_read(%p, %zu)\n", file, count));
if (!SMBC_dlist_contains(context->internal->files, file)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
/* Check that the buffer exists ... */
if (buf == NULL) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
NTSTATUS status;
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!SMBC_dlist_contains(context->internal->files, srcfile)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
if (!SMBC_dlist_contains(context->internal->files, dstfile)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
/* First check all pointers before dereferencing them */
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!SMBC_dlist_contains(context->internal->files, file)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
/* Check that the buffer exists ... */
if (buf == NULL) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
status = cli_writeall(file->targetcli, file->cli_fd,
0, (const uint8_t *)buf, offset, count, NULL);
if (!NT_STATUS_IS_OK(status)) {
- errno = map_errno_from_nt_status(status);
TALLOC_FREE(frame);
+ errno = map_errno_from_nt_status(status);
return -1;
}
NTSTATUS status;
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!SMBC_dlist_contains(context->internal->files, file)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
TALLOC_CTX *frame = talloc_stackframe();
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!SMBC_dlist_contains(context->internal->files, file)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
if (!file->file) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1; /* Can't lseek a dir ... */
}
file->targetcli, file->cli_fd, NULL,
&size, NULL, NULL, NULL, NULL,
NULL))) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
file->offset = size + offset;
TALLOC_CTX *frame = talloc_stackframe();
if (!context || !context->internal->initialized) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!SMBC_dlist_contains(context->internal->files, file)) {
- errno = EBADF;
TALLOC_FREE(frame);
+ errno = EBADF;
return -1;
}
if (!file->file) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}
if (!NT_STATUS_IS_OK(cli_ftruncate(file->targetcli, file->cli_fd, (uint64_t)size))) {
- errno = EINVAL;
TALLOC_FREE(frame);
+ errno = EINVAL;
return -1;
}