+#ifndef _SQUID_HELPERS_BASIC_AUTH_MSNT_MSNTAUTH_H
+#define _SQUID_HELPERS_BASIC_AUTH_MSNT_MSNTAUTH_H
+
extern int OpenConfigFile(void);
extern int QueryServers(char *, char *);
extern void Checktimer(void);
-extern void Check_forchange(int);
+extern "C" void Check_forchange(int);
extern int Read_denyusers(void);
extern int Read_allowusers(void);
extern int Check_user(char *);
extern int Check_ifuserallowed(char *ConnectingUser);
extern void Check_forallowchange(void);
+#endif /* _SQUID_HELPERS_BASIC_AUTH_MSNT_MSNTAUTH_H */
static char *password = NULL; /* Workaround for Solaris 2.6 brokenness */
#endif
+extern "C" int password_conversation(int num_msg, PAM_CONV_FUNC_CONST_PARM struct pam_message **msg,
+ struct pam_response **resp, void *appdata_ptr);
+
/**
* A simple "conversation" function returning the supplied password.
* Has a bit to much error control, but this is my first PAM application
* so I'd rather check everything than make any mistakes. The function
* expects a single converstation message of type PAM_PROMPT_ECHO_OFF.
*/
-static int
+int
password_conversation(int num_msg, PAM_CONV_FUNC_CONST_PARM struct pam_message **msg, struct pam_response **resp, void *appdata_ptr)
{
if (num_msg != 1 || msg[0]->msg_style != PAM_PROMPT_ECHO_OFF) {
return credentials;
}
-/* signal handler to be invoked when the authentication operation
- * times out */
+extern "C" void timeout_during_auth(int signum);
+
static char got_timeout = 0;
-static void
+/** signal handler to be invoked when the authentication operation
+ * times out */
+void
timeout_during_auth(int signum)
{
dc_disconnect();
SQUIDCEXTERN void fatal(const char *message);
SQUIDCEXTERN void fatalf(const char *fmt,...) PRINTF_FORMAT_ARG1;
-SQUIDCEXTERN void fatal_dump(const char *message);
+extern void fatal_dump(const char *message);
-#endif
+#endif /* SQUID_FATAL_H */
SQUIDCEXTERN void storeAppendPrintf(StoreEntry *, const char *,...) PRINTF_FORMAT_ARG2;
/// \ingroup StoreAPI
-SQUIDCEXTERN void storeAppendVPrintf(StoreEntry *, const char *, va_list ap);
+extern void storeAppendVPrintf(StoreEntry *, const char *, va_list ap);
/// \ingroup StoreAPI
SQUIDCEXTERN int storeTooManyDiskFilesOpen(void);
SQUIDCEXTERN void oid2addr(oid *Dest, Ip::Address &addr, u_int code);
SQUIDCEXTERN Ip::Address *client_entry(Ip::Address *current);
-SQUIDCEXTERN variable_list *snmp_basicFn(variable_list *, snint *);
-SQUIDCEXTERN variable_list *snmp_confFn(variable_list *, snint *);
-SQUIDCEXTERN variable_list *snmp_sysFn(variable_list *, snint *);
-SQUIDCEXTERN variable_list *snmp_prfSysFn(variable_list *, snint *);
-SQUIDCEXTERN variable_list *snmp_prfProtoFn(variable_list *, snint *);
-SQUIDCEXTERN variable_list *snmp_prfPeerFn(variable_list *, snint *);
-SQUIDCEXTERN variable_list *snmp_netIpFn(variable_list *, snint *);
-SQUIDCEXTERN variable_list *snmp_netFqdnFn(variable_list *, snint *);
+extern variable_list *snmp_basicFn(variable_list *, snint *);
+extern variable_list *snmp_confFn(variable_list *, snint *);
+extern variable_list *snmp_sysFn(variable_list *, snint *);
+extern variable_list *snmp_prfSysFn(variable_list *, snint *);
+extern variable_list *snmp_prfProtoFn(variable_list *, snint *);
+extern variable_list *snmp_prfPeerFn(variable_list *, snint *);
+extern variable_list *snmp_netIpFn(variable_list *, snint *);
+extern variable_list *snmp_netFqdnFn(variable_list *, snint *);
#if USE_DNSSERVERS
-SQUIDCEXTERN variable_list *snmp_netDnsFn(variable_list *, snint *);
+extern variable_list *snmp_netDnsFn(variable_list *, snint *);
#else
-SQUIDCEXTERN variable_list *snmp_netIdnsFn(variable_list *, snint *);
+extern variable_list *snmp_netIdnsFn(variable_list *, snint *);
#endif /* USE_DNSSERVERS */
-SQUIDCEXTERN variable_list *snmp_meshPtblFn(variable_list *, snint *);
-SQUIDCEXTERN variable_list *snmp_meshCtblFn(variable_list *, snint *);
+extern variable_list *snmp_meshPtblFn(variable_list *, snint *);
+extern variable_list *snmp_meshCtblFn(variable_list *, snint *);
#endif /* SQUID_SNMP */
#if USE_WCCP
SQUIDCEXTERN void storeDigestNoteStoreReady(void);
SQUIDCEXTERN void storeDigestScheduleRebuild(void);
SQUIDCEXTERN void storeDigestDel(const StoreEntry * entry);
-SQUIDCEXTERN void storeDigestReport(StoreEntry *);
+extern void storeDigestReport(StoreEntry *);
/*
* store_rebuild.c
SQUIDCEXTERN const char *getMyHostname(void);
SQUIDCEXTERN const char *uniqueHostname(void);
SQUIDCEXTERN void safeunlink(const char *path, int quiet);
+
+#include "fatal.h"
void death(int sig);
-SQUIDCEXTERN void fatal(const char *message);
-SQUIDCEXTERN void fatalf(const char *fmt,...) PRINTF_FORMAT_ARG1;
-SQUIDCEXTERN void fatal_dump(const char *message);
void sigusr2_handle(int sig);
void sig_child(int sig);
SQUIDCEXTERN void leave_suid(void);
SQUIDCEXTERN void setSocketShutdownLifetimes(int);
SQUIDCEXTERN void setMaxFD(void);
SQUIDCEXTERN void setSystemLimits(void);
-SQUIDCEXTERN void squid_signal(int sig, SIGHDLR *, int flags);
+extern void squid_signal(int sig, SIGHDLR *, int flags);
SQUIDCEXTERN pid_t readPidFile(void);
SQUIDCEXTERN void keepCapabilities(void);
SQUIDCEXTERN void BroadcastSignalIfAny(int& sig);
static oid_ParseFn *snmpTreeGet(oid * Current, snint CurrentLen);
static mib_tree_entry *snmpTreeEntry(oid entry, snint len, mib_tree_entry * current);
static mib_tree_entry *snmpTreeSiblingEntry(oid entry, snint len, mib_tree_entry * current);
-static void snmpSnmplibDebug(int lvl, char *buf);
+extern "C" void snmpSnmplibDebug(int lvl, char *buf);
/*
* The functions used during startup:
return outbuf.content();
}
-static void
+void
snmpSnmplibDebug(int lvl, char *buf)
{
debugs(49, lvl, buf);
static StoreIOState::STIOCB storeSwapOutFileClosed;
static StoreIOState::STFNCB storeSwapOutFileNotify;
+// wrapper to cross C/C++ ABI boundary. xfree is extern "C" for libraries.
+static void xfree_cppwrapper(void *x)
+{
+ xfree(x);
+}
+
/* start swapping object to disk */
static void
storeSwapOutStart(StoreEntry * e)
e->swap_dirn = mem->swapout.sio->swap_dirn;
/* write out the swap metadata */
- storeIOWrite(mem->swapout.sio, buf, mem->swap_hdr_sz, 0, xfree);
+ storeIOWrite(mem->swapout.sio, buf, mem->swap_hdr_sz, 0, xfree_cppwrapper);
}
static void
fatal("storeAppendPrintf: Not implemented");
}
-extern "C" void
+void
storeAppendVPrintf(StoreEntry * e, const char *fmt, va_list vargs)
{
fatal("storeAppendVPrintf: Not implemented");
static void usage(const char *progname);
static int Now(struct timeval *);
-static SIGHDLR catchSignal;
-static SIGHDLR pipe_handler;
+SIGHDLR catchSignal;
+SIGHDLR pipe_handler;
static void set_our_signal(void);
static ssize_t myread(int fd, void *buf, size_t len);
static ssize_t mywrite(int fd, void *buf, size_t len);
#endif
} /* ARGSUSED */
-static void
+void
catchSignal(int sig)
{
interrupted = 1;
fprintf(stderr, "Interrupted.\n");
}
-static void
+void
pipe_handler(int sig)
{
fprintf(stderr, "SIGPIPE received.\n");