1
0
mirror of https://github.com/samba-team/samba.git synced 2025-08-03 04:22:09 +03:00

Now that I am running config.developer, I decided to get rif of some warnings:

1. reboot in parse_reg and cli_reg was shadowing a definition on FreeBSD
   4.3 from system includes.

2. Added a bit of const to places.

3. Made sure internal functions were declared where needed.
This commit is contained in:
Richard Sharpe
-
parent f8a915b14d
commit fd847aa936
5 changed files with 269 additions and 181 deletions

View File

@ -23,7 +23,7 @@
#include "includes.h"
#include "../include/libsmbclient.h"
#include "../include/libsmb_internal.h"
/*
* Functions exported by libsmb_cache.c that we need here
@ -70,7 +70,7 @@ smbc_parse_path(SMBCCTX *context, const char *fname, char *server, char *share,
{
static pstring s;
pstring userinfo;
char *p;
const char *p;
char *q, *r;
int len;
@ -119,7 +119,7 @@ smbc_parse_path(SMBCCTX *context, const char *fname, char *server, char *share,
r = strchr_m(p, '/');
if (q && (!r || q < r)) {
pstring username, passwd, domain;
char *u = userinfo;
const char *u = userinfo;
next_token(&p, userinfo, "@", sizeof(fstring));
@ -218,7 +218,7 @@ int smbc_check_server(SMBCCTX * context, SMBCSRV * server)
}
/*
* Remove a server from the list server_table if it's unused.
* Remove a server from the cached server list it's unused.
* On success, 0 is returned. 1 is returned if the server could not be removed.
*
* Also useable outside libsmbclient
@ -228,11 +228,12 @@ int smbc_remove_unused_server(SMBCCTX * context, SMBCSRV * srv)
SMBCFILE * file;
/* are we being fooled ? */
if (!context || !context->_initialized || !srv) return 1;
if (!context || !context->internal ||
!context->internal->_initialized || !srv) return 1;
/* Check all open files/directories for a relation with this server */
for (file = context->_files; file; file=file->next) {
for (file = context->internal->_files; file; file=file->next) {
if (file->srv == srv) {
/* Still used */
DEBUG(3, ("smbc_remove_usused_server: %p still used by %p.\n",
@ -241,7 +242,7 @@ int smbc_remove_unused_server(SMBCCTX * context, SMBCSRV * srv)
}
}
DLIST_REMOVE(context->_servers, srv);
DLIST_REMOVE(context->internal->_servers, srv);
cli_shutdown(&srv->cli);
@ -474,7 +475,8 @@ static SMBCFILE *smbc_open_ctx(SMBCCTX *context, const char *fname, int flags, m
SMBCFILE *file = NULL;
int fd;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL; /* Best I can think of ... */
return NULL;
@ -541,7 +543,7 @@ static SMBCFILE *smbc_open_ctx(SMBCCTX *context, const char *fname, int flags, m
file->offset = 0;
file->file = True;
DLIST_ADD(context->_files, file);
DLIST_ADD(context->internal->_files, file);
return file;
}
@ -572,7 +574,8 @@ static int creat_bits = O_WRONLY | O_CREAT | O_TRUNC; /* FIXME: Do we need this
static SMBCFILE *smbc_creat_ctx(SMBCCTX *context, const char *path, mode_t mode)
{
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return NULL;
@ -590,7 +593,8 @@ static ssize_t smbc_read_ctx(SMBCCTX *context, SMBCFILE *file, void *buf, size_t
{
int ret;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
@ -599,7 +603,7 @@ static ssize_t smbc_read_ctx(SMBCCTX *context, SMBCFILE *file, void *buf, size_t
DEBUG(4, ("smbc_read(%p, %d)\n", file, (int)count));
if (!file || !DLIST_CONTAINS(context->_files, file)) {
if (!file || !DLIST_CONTAINS(context->internal->_files, file)) {
errno = EBADF;
return -1;
@ -640,14 +644,15 @@ static ssize_t smbc_write_ctx(SMBCCTX *context, SMBCFILE *file, void *buf, size_
{
int ret;
if (!context || context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
}
if (!file || !DLIST_CONTAINS(context->_files, file)) {
if (!file || !DLIST_CONTAINS(context->internal->_files, file)) {
errno = EBADF;
return -1;
@ -685,14 +690,15 @@ static int smbc_close_ctx(SMBCCTX *context, SMBCFILE *file)
{
SMBCSRV *srv;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
}
if (!file || !DLIST_CONTAINS(context->_files, file)) {
if (!file || !DLIST_CONTAINS(context->internal->_files, file)) {
errno = EBADF;
return -1;
@ -714,7 +720,7 @@ static int smbc_close_ctx(SMBCCTX *context, SMBCFILE *file)
* from the server cache if unused */
errno = smbc_errno(context, &file->srv->cli);
srv = file->srv;
DLIST_REMOVE(context->_files, file);
DLIST_REMOVE(context->internal->_files, file);
SAFE_FREE(file->fname);
SAFE_FREE(file);
context->callbacks.remove_unused_server_fn(context, srv);
@ -736,7 +742,7 @@ static int smbc_close_ctx(SMBCCTX *context, SMBCFILE *file)
* from the server cache if unused */
errno = smbc_errno(context, &file->srv->cli);
srv = file->srv;
DLIST_REMOVE(context->_files, file);
DLIST_REMOVE(context->internal->_files, file);
SAFE_FREE(file->fname);
SAFE_FREE(file);
context->callbacks.remove_unused_server_fn(context, srv);
@ -744,7 +750,7 @@ static int smbc_close_ctx(SMBCCTX *context, SMBCFILE *file)
return -1;
}
DLIST_REMOVE(context->_files, file);
DLIST_REMOVE(context->internal->_files, file);
SAFE_FREE(file->fname);
SAFE_FREE(file);
@ -761,7 +767,8 @@ static BOOL smbc_getatr(SMBCCTX * context, SMBCSRV *srv, char *path,
SMB_INO_T *ino)
{
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
@ -797,7 +804,8 @@ static int smbc_unlink_ctx(SMBCCTX *context, const char *fname)
pstring path;
SMBCSRV *srv = NULL;
if (!context || context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL; /* Best I can think of ... */
return -1;
@ -891,8 +899,10 @@ static int smbc_rename_ctx(SMBCCTX *ocontext, const char *oname,
pstring path1, path2;
SMBCSRV *srv = NULL;
if (!ocontext || !ncontext ||
!ocontext->_initialized || !ncontext->_initialized) {
if (!ocontext || !ncontext ||
!ocontext->internal || !ncontext->internal ||
!ocontext->internal->_initialized ||
!ncontext->internal->_initialized) {
errno = EINVAL; /* Best I can think of ... */
return -1;
@ -960,14 +970,15 @@ static off_t smbc_lseek_ctx(SMBCCTX *context, SMBCFILE *file, off_t offset, int
{
size_t size;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
}
if (!file || !DLIST_CONTAINS(context->_files, file)) {
if (!file || !DLIST_CONTAINS(context->internal->_files, file)) {
errno = EBADF;
return -1;
@ -1020,7 +1031,8 @@ static
ino_t smbc_inode(SMBCCTX *context, const char *name)
{
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
@ -1088,7 +1100,8 @@ static int smbc_stat_ctx(SMBCCTX *context, const char *fname, struct stat *st)
uint16 mode = 0;
SMB_INO_T ino = 0;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL; /* Best I can think of ... */
return -1;
@ -1171,14 +1184,15 @@ static int smbc_fstat_ctx(SMBCCTX *context, SMBCFILE *file, struct stat *st)
uint16 mode;
SMB_INO_T ino = 0;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
}
if (!file || !DLIST_CONTAINS(context->_files, file)) {
if (!file || !DLIST_CONTAINS(context->internal->_files, file)) {
errno = EBADF;
return -1;
@ -1271,9 +1285,6 @@ static int add_dirent(SMBCFILE *dir, const char *name, const char *comment, uint
ZERO_STRUCTP(dirent);
ZERO_STRUCTP(dirent);
if (dir->dir_list == NULL) {
dir->dir_list = malloc(sizeof(struct smbc_dir_list));
@ -1354,8 +1365,6 @@ list_fn(const char *name, uint32 type, const char *comment, void *state)
dirent_type = SMBC_FILE_SHARE; /* FIXME, error? */
break;
}
ZERO_STRUCTP(dir->dir_list);
}
else dirent_type = dir->dir_type;
@ -1390,9 +1399,9 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname)
SMBCSRV *srv = NULL;
SMBCFILE *dir = NULL;
struct in_addr rem_ip;
int slot = 0;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return NULL;
@ -1488,7 +1497,6 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname)
return NULL;
}
ZERO_STRUCTP(dir->dir_end);
dir->srv = srv;
@ -1668,7 +1676,7 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname)
}
DLIST_ADD(context->_files, dir);
DLIST_ADD(context->internal->_files, dir);
return dir;
}
@ -1680,14 +1688,15 @@ static SMBCFILE *smbc_opendir_ctx(SMBCCTX *context, const char *fname)
static int smbc_closedir_ctx(SMBCCTX *context, SMBCFILE *dir)
{
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
}
if (!dir || !DLIST_CONTAINS(context->_files, dir)) {
if (!dir || !DLIST_CONTAINS(context->internal->_files, dir)) {
errno = EBADF;
return -1;
@ -1696,7 +1705,7 @@ static int smbc_closedir_ctx(SMBCCTX *context, SMBCFILE *dir)
smbc_remove_dir(dir); /* Clean it up */
DLIST_REMOVE(context->_files, dir);
DLIST_REMOVE(context->internal->_files, dir);
if (dir) {
@ -1719,14 +1728,15 @@ struct smbc_dirent *smbc_readdir_ctx(SMBCCTX *context, SMBCFILE *dir)
/* Check that all is ok first ... */
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return NULL;
}
if (!dir || !DLIST_CONTAINS(context->_files, dir)) {
if (!dir || !DLIST_CONTAINS(context->internal->_files, dir)) {
errno = EBADF;
return NULL;
@ -1755,12 +1765,12 @@ struct smbc_dirent *smbc_readdir_ctx(SMBCCTX *context, SMBCFILE *dir)
/* Hmmm, do I even need to copy it? */
memcpy(context->_dirent, dirent, dirent->dirlen); /* Copy the dirent */
dirp = (struct smbc_dirent *)context->_dirent;
memcpy(context->internal->_dirent, dirent, dirent->dirlen); /* Copy the dirent */
dirp = (struct smbc_dirent *)context->internal->_dirent;
dirp->comment = (char *)(&dirp->name + dirent->namelen + 1);
dir->dir_next = dir->dir_next->next;
return (struct smbc_dirent *)context->_dirent;
return (struct smbc_dirent *)context->internal->_dirent;
}
}
@ -1777,14 +1787,15 @@ static int smbc_getdents_ctx(SMBCCTX *context, SMBCFILE *dir, struct smbc_dirent
/* Check that all is ok first ... */
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
}
if (!dir || !DLIST_CONTAINS(context->_files, dir)) {
if (!dir || !DLIST_CONTAINS(context->internal->_files, dir)) {
errno = EBADF;
return -1;
@ -1863,7 +1874,8 @@ static int smbc_mkdir_ctx(SMBCCTX *context, const char *fname, mode_t mode)
fstring server, share, user, password, workgroup;
pstring path;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
@ -1949,7 +1961,8 @@ static int smbc_rmdir_ctx(SMBCCTX *context, const char *fname)
fstring server, share, user, password, workgroup;
pstring path;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
@ -2046,14 +2059,15 @@ static int smbc_rmdir_ctx(SMBCCTX *context, const char *fname)
static off_t smbc_telldir_ctx(SMBCCTX *context, SMBCFILE *dir)
{
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
}
if (!dir || !DLIST_CONTAINS(context->_files, dir)) {
if (!dir || !DLIST_CONTAINS(context->internal->_files, dir)) {
errno = EBADF;
return -1;
@ -2110,7 +2124,8 @@ static int smbc_lseekdir_ctx(SMBCCTX *context, SMBCFILE *dir, off_t offset)
struct smbc_dirent *dirent = (struct smbc_dirent *)offset;
struct smbc_dir_list *list_ent = NULL;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
@ -2156,7 +2171,8 @@ static int smbc_lseekdir_ctx(SMBCCTX *context, SMBCFILE *dir, off_t offset)
static int smbc_fstatdir_ctx(SMBCCTX *context, SMBCFILE *dir, struct stat *st)
{
if (context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
@ -2178,7 +2194,8 @@ static SMBCFILE *smbc_open_print_job_ctx(SMBCCTX *context, const char *fname)
fstring server, share, user, password;
pstring path;
if (!context || context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return NULL;
@ -2215,8 +2232,8 @@ static int smbc_print_file_ctx(SMBCCTX *c_file, const char *fname, SMBCCTX *c_pr
int bytes, saverr, tot_bytes = 0;
char buf[4096];
if (!c_file || !c_file->_initialized || !c_print ||
!c_print->_initialized) {
if (!c_file || !c_file->internal->_initialized || !c_print ||
!c_print->internal->_initialized) {
errno = EINVAL;
return -1;
@ -2285,13 +2302,14 @@ static int smbc_print_file_ctx(SMBCCTX *c_file, const char *fname, SMBCCTX *c_pr
* Routine to list print jobs on a printer share ...
*/
static int smbc_list_print_jobs_ctx(SMBCCTX *context, const char *fname, void (*fn)(struct print_job_info *))
static int smbc_list_print_jobs_ctx(SMBCCTX *context, const char *fname, smbc_list_print_job_fn fn)
{
SMBCSRV *srv;
fstring server, share, user, password, workgroup;
pstring path;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
@ -2321,7 +2339,7 @@ static int smbc_list_print_jobs_ctx(SMBCCTX *context, const char *fname, void (*
}
if (cli_print_queue(&srv->cli, fn) < 0) {
if (cli_print_queue(&srv->cli, (void (*)(struct print_job_info *))fn) < 0) {
errno = smbc_errno(context, &srv->cli);
return -1;
@ -2343,7 +2361,8 @@ static int smbc_unlink_print_job_ctx(SMBCCTX *context, const char *fname, int id
pstring path;
int err;
if (!context || !context->_initialized) {
if (!context || !context->internal ||
!context->internal->_initialized) {
errno = EINVAL;
return -1;
@ -2394,14 +2413,23 @@ SMBCCTX * smbc_new_context(void)
{
SMBCCTX * context;
context = malloc(sizeof(*context));
context = malloc(sizeof(SMBCCTX));
if (!context) {
errno = ENOMEM;
return NULL;
}
ZERO_STRUCTP(context);
context->internal = malloc(sizeof(struct smbc_internal_data));
if (!context->internal) {
errno = ENOMEM;
return NULL;
}
ZERO_STRUCTP(context->internal);
/* ADD REASONABLE DEFAULTS */
context->debug = 0;
context->timeout = 20000; /* 20 seconds */
@ -2456,25 +2484,25 @@ int smbc_free_context(SMBCCTX * context, int shutdown_ctx)
SMBCFILE * f;
DEBUG(1,("Performing aggressive shutdown.\n"));
f = context->_files;
f = context->internal->_files;
while (f) {
context->close(context, f);
f = f->next;
}
context->_files = NULL;
context->internal->_files = NULL;
/* First try to remove the servers the nice way. */
if (context->callbacks.purge_cached_fn(context)) {
SMBCSRV * s;
DEBUG(1, ("Could not purge all servers, Nice way shutdown failed.\n"));
s = context->_servers;
s = context->internal->_servers;
while (s) {
cli_shutdown(&s->cli);
context->callbacks.remove_cached_srv_fn(context, s);
SAFE_FREE(s);
s = s->next;
}
context->_servers = NULL;
context->internal->_servers = NULL;
}
}
else {
@ -2484,12 +2512,12 @@ int smbc_free_context(SMBCCTX * context, int shutdown_ctx)
errno = EBUSY;
return 1;
}
if (context->_servers) {
if (context->internal->_servers) {
DEBUG(1, ("Active servers in context, free_context failed.\n"));
errno = EBUSY;
return 1;
}
if (context->_files) {
if (context->internal->_files) {
DEBUG(1, ("Active files in context, free_context failed.\n"));
errno = EBUSY;
return 1;
@ -2502,6 +2530,7 @@ int smbc_free_context(SMBCCTX * context, int shutdown_ctx)
SAFE_FREE(context->user);
DEBUG(3, ("Context %p succesfully freed\n", context));
SAFE_FREE(context->internal);
SAFE_FREE(context);
return 0;
}
@ -2520,13 +2549,13 @@ SMBCCTX * smbc_init_context(SMBCCTX * context)
int pid;
char *user = NULL, *home = NULL;
if (!context) {
if (!context || !context->internal) {
errno = EBADF;
return NULL;
}
/* Do not initialise the same client twice */
if (context->_initialized) {
if (context->internal->_initialized) {
return 0;
}
@ -2633,7 +2662,7 @@ SMBCCTX * smbc_init_context(SMBCCTX * context)
* FIXME: Should we check the function pointers here?
*/
context->_initialized = 1;
context->internal->_initialized = 1;
return context;
}