/* * "$Id$" * * Main header file for the CUPS scheduler. * * Copyright 2007-2014 by Apple Inc. * Copyright 1997-2007 by Easy Software Products, all rights reserved. * * These coded instructions, statements, and computer programs are the * property of Apple Inc. and are protected by Federal copyright * law. Distribution and use rights are outlined in the file "LICENSE.txt" * "LICENSE" which should have been included with this file. If this * file is missing or damaged, see the license at "http://www.cups.org/". */ /* * Include necessary headers. */ #include #include #include #include #include #include #include #include #include #include #include #include #ifdef WIN32 # include #else # include #endif /* WIN32 */ #include "mime.h" #if defined(HAVE_CDSASSL) # include #endif /* HAVE_CDSASSL */ /* * Some OS's don't have hstrerror(), most notably Solaris... */ #ifndef HAVE_HSTRERROR # ifdef hstrerror # undef hstrerror # endif /* hstrerror */ # define hstrerror cups_hstrerror extern const char *cups_hstrerror(int); #endif /* !HAVE_HSTRERROR */ /* * Common constants. */ #ifndef FALSE # define FALSE 0 # define TRUE (!FALSE) #endif /* !FALSE */ /* * Implementation limits... */ #define MAX_ENV 100 /* Maximum number of environment strings */ #define MAX_USERPASS 33 /* Maximum size of username/password */ #define MAX_FILTERS 20 /* Maximum number of filters */ #define MAX_SYSTEM_GROUPS 32 /* Maximum number of system groups */ /* * Defaults... */ #define DEFAULT_HISTORY INT_MAX /* Preserve job history? */ #define DEFAULT_FILES 86400 /* Preserve job files? */ #define DEFAULT_TIMEOUT 300 /* Timeout during requests/updates */ #define DEFAULT_KEEPALIVE 30 /* Timeout between requests */ /* * Global variable macros... */ #ifdef _MAIN_C_ # define VAR # define VALUE(x) =x # define VALUE2(x,y) ={x,y} #else # define VAR extern # define VALUE(x) # define VALUE2(x,y) #endif /* _MAIN_C */ /* * Other stuff for the scheduler... */ #include "sysman.h" #include "statbuf.h" #include "cert.h" #include "auth.h" #include "client.h" #include "policy.h" #include "printers.h" #include "classes.h" #include "job.h" #include "colorman.h" #include "conf.h" #include "banners.h" #include "dirsvc.h" #include "network.h" #include "subscriptions.h" /* * Reload types... */ #define RELOAD_NONE 0 /* No reload needed */ #define RELOAD_ALL 1 /* Reload everything */ #define RELOAD_CUPSD 2 /* Reload only cupsd.conf */ /* * Select callback function type... */ typedef void (*cupsd_selfunc_t)(void *data); /* * Globals... */ VAR int TestConfigFile VALUE(0); /* Test the cupsd.conf file? */ VAR int MaxFDs VALUE(0); /* Maximum number of files */ VAR time_t ReloadTime VALUE(0); /* Time of reload request... */ VAR int NeedReload VALUE(RELOAD_ALL), /* Need to load configuration? */ DoingShutdown VALUE(0); /* Shutting down the scheduler? */ VAR void *DefaultProfile VALUE(0); /* Default security profile */ #if defined(HAVE_LAUNCHD) || defined(HAVE_SYSTEMD) VAR int OnDemand VALUE(0); /* Launched on demand */ #endif /* HAVE_LAUNCHD || HAVE_SYSTEMD */ /* * Prototypes... */ /* env.c */ extern void cupsdInitEnv(void); extern int cupsdLoadEnv(char *envp[], int envmax); extern void cupsdSetEnv(const char *name, const char *value); extern void cupsdSetEnvf(const char *name, const char *value, ...) __attribute__ ((__format__ (__printf__, 2, 3))); extern void cupsdUpdateEnv(void); /* file.c */ extern void cupsdCleanFiles(const char *path, const char *pattern); extern int cupsdCloseCreatedConfFile(cups_file_t *fp, const char *filename); extern void cupsdClosePipe(int *fds); extern cups_file_t *cupsdCreateConfFile(const char *filename, mode_t mode); extern cups_file_t *cupsdOpenConfFile(const char *filename); extern int cupsdOpenPipe(int *fds); extern int cupsdRemoveFile(const char *filename); extern int cupsdUnlinkOrRemoveFile(const char *filename); /* main.c */ extern int cupsdAddString(cups_array_t **a, const char *s); extern void cupsdCheckProcess(void); extern void cupsdClearString(char **s); extern void cupsdFreeStrings(cups_array_t **a); extern void cupsdHoldSignals(void); extern char *cupsdMakeUUID(const char *name, int number, char *buffer, size_t bufsize); extern void cupsdReleaseSignals(void); extern void cupsdSetString(char **s, const char *v); extern void cupsdSetStringf(char **s, const char *f, ...) __attribute__ ((__format__ (__printf__, 2, 3))); /* process.c */ extern void *cupsdCreateProfile(int job_id, int allow_networking); extern void cupsdDestroyProfile(void *profile); extern int cupsdEndProcess(int pid, int force); extern const char *cupsdFinishProcess(int pid, char *name, size_t namelen, int *job_id); extern int cupsdStartProcess(const char *command, char *argv[], char *envp[], int infd, int outfd, int errfd, int backfd, int sidefd, int root, void *profile, cupsd_job_t *job, int *pid); /* select.c */ extern int cupsdAddSelect(int fd, cupsd_selfunc_t read_cb, cupsd_selfunc_t write_cb, void *data); extern int cupsdDoSelect(long timeout); #ifdef CUPSD_IS_SELECTING extern int cupsdIsSelecting(int fd); #endif /* CUPSD_IS_SELECTING */ extern void cupsdRemoveSelect(int fd); extern void cupsdStartSelect(void); extern void cupsdStopSelect(void); /* server.c */ extern void cupsdStartServer(void); extern void cupsdStopServer(void); /* * End of "$Id$". */