/*
- * $Id: uam.c,v 1.32 2009-11-05 14:38:07 franklahm Exp $
+ * $Id: uam.c,v 1.35 2009-11-08 01:15:31 didg Exp $
*
* Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
* All Rights Reserved. See COPYRIGHT.
#include <stdio.h>
#include <stdlib.h>
-
-/* STDC check */
-#if STDC_HEADERS
#include <string.h>
-#else /* STDC_HEADERS */
-#ifndef HAVE_STRCHR
-#define strchr index
-#define strrchr index
-#endif /* HAVE_STRCHR */
-char *strchr (), *strrchr ();
-#ifndef HAVE_MEMCPY
-#define memcpy(d,s,n) bcopy ((s), (d), (n))
-#define memmove(d,s,n) bcopy ((s), (d), (n))
-#endif /* ! HAVE_MEMCPY */
-#endif /* STDC_HEADERS */
-
-#ifdef HAVE_UNISTD_H
#include <unistd.h>
-#endif /* HAVE_UNISTD_H */
-#ifdef HAVE_FCNTL_H
#include <fcntl.h>
-#endif /* HAVE_FCNTL_H */
#include <ctype.h>
#include <atalk/logger.h>
#include <sys/param.h>
#include <netinet/in.h>
#include <arpa/inet.h>
-#include <netatalk/endian.h>
-#include <atalk/asp.h>
#include <atalk/dsi.h>
#include <atalk/afp.h>
#include <atalk/util.h>
+#include <atalk/globals.h>
-#include "globals.h"
#include "afp_config.h"
#include "auth.h"
#include "uam_auth.h"
-#ifdef AFP3x
#define utf8_encoding() (afp_version >= 30)
-#else
-#define utf8_encoding() (0)
-#endif
#ifdef TRU64
#include <netdb.h>
#endif /* TRU64 */
/* --- server uam functions -- */
-#ifndef NO_LOAD_UAM
-extern int uam_setup(const char *path);
-#endif
/* uam_load. uams must have a uam_setup function. */
struct uam_mod *uam_load(const char *path, const char *name)
struct uam_mod *mod;
void *module;
-#ifndef NO_LOAD_UAM
if ((module = mod_open(path)) == NULL) {
LOG(log_error, logtype_afpd, "uam_load(%s): failed to load: %s", name, mod_error());
return NULL;
}
-#endif
if ((mod = (struct uam_mod *) malloc(sizeof(struct uam_mod))) == NULL) {
LOG(log_error, logtype_afpd, "uam_load(%s): malloc failed", name);
if ((p = strchr(buf, '.')))
*p = '\0';
-#ifndef NO_LOAD_UAM
if ((mod->uam_fcn = mod_symbol(module, buf)) == NULL) {
LOG(log_error, logtype_afpd, "uam_load(%s): mod_symbol error for symbol %s",
name,
LOG(log_error, logtype_afpd, "uam_load(%s): uam_setup failed", name);
goto uam_load_err;
}
-#else
- uam_setup(name);
-#endif
mod->uam_module = module;
return mod;
if (mod->uam_fcn->uam_cleanup)
(*mod->uam_fcn->uam_cleanup)();
-#ifndef NO_LOAD_UAM
mod_close(mod->uam_module);
-#endif
free(mod);
}
switch (what) {
case UAM_OPTION_USERNAME:
- *buf = obj->username;
+ *buf = &(obj->username[0]);
if (len)
*len = sizeof(obj->username) - 1;
break;
{
struct DSI *dsi = obj->handle;
const struct sockaddr *sa;
- char hbuf[NI_MAXHOST];
+ static char hbuf[NI_MAXHOST];
sa = (struct sockaddr *)&dsi->client;
if (getnameinfo(sa, sizeof(dsi->client), hbuf, sizeof(hbuf), NULL, 0, 0) == 0)
if (!obj)
return AFPERR_PARAM;
- switch (obj->proto) {
- case AFPPROTO_ASP:
- if ((len = asp_wrtcont(obj->handle, buf, buflen )) < 0)
- goto uam_afp_read_err;
- return action(handle, buf, *buflen);
- break;
-
- case AFPPROTO_DSI:
len = dsi_writeinit(obj->handle, buf, *buflen);
if (!len || ((len = action(handle, buf, len)) < 0)) {
dsi_writeflush(obj->handle);
goto uam_afp_read_err;
}
}
- break;
- }
return 0;
uam_afp_read_err:
#endif /* TRU64 */
/* --- papd-specific functions (just placeholders) --- */
-void append(void *pf _U_, char *data _U_, int len _U_)
+struct papfile;
+
+UAM_MODULE_EXPORT void append(struct papfile *pf _U_, const char *data _U_, int len _U_)
{
return;
}