void _cupsSetDefaults(void) { cups_file_t *fp; /* File */ const char *home; /* Home directory of user */ char filename[1024]; /* Filename */ _cups_client_conf_t cc; /* client.conf values */ _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */ DEBUG_puts("_cupsSetDefaults()"); /* * Load initial client.conf values... */ cups_init_client_conf(&cc); /* * Read the /etc/cups/client.conf and ~/.cups/client.conf files, if * present. */ snprintf(filename, sizeof(filename), "%s/client.conf", cg->cups_serverroot); if ((fp = cupsFileOpen(filename, "r")) != NULL) { cups_read_client_conf(fp, &cc); cupsFileClose(fp); } # ifdef HAVE_GETEUID if ((geteuid() == getuid() || !getuid()) && getegid() == getgid() && (home = getenv("HOME")) != NULL) # elif !defined(WIN32) if (getuid() && (home = getenv("HOME")) != NULL) # else if ((home = getenv("HOME")) != NULL) # endif /* HAVE_GETEUID */ { /* * Look for ~/.cups/client.conf... */ snprintf(filename, sizeof(filename), "%s/.cups/client.conf", home); if ((fp = cupsFileOpen(filename, "r")) != NULL) { cups_read_client_conf(fp, &cc); cupsFileClose(fp); } } /* * Finalize things so every client.conf value is set... */ cups_finalize_client_conf(&cc); if (cg->encryption == (http_encryption_t)-1) cg->encryption = cc.encryption; if (!cg->server[0] || !cg->ipp_port) cupsSetServer(cc.server_name); if (!cg->ipp_port) cups_set_default_ipp_port(cg); if (!cg->user[0]) strlcpy(cg->user, cc.user, sizeof(cg->user)); #ifdef HAVE_GSSAPI if (!cg->gss_service_name[0]) strlcpy(cg->gss_service_name, cc.gss_service_name, sizeof(cg->gss_service_name)); #endif /* HAVE_GSSAPI */ if (cg->any_root < 0) cg->any_root = cc.any_root; if (cg->expired_certs < 0) cg->expired_certs = cc.expired_certs; if (cg->validate_certs < 0) cg->validate_certs = cc.validate_certs; #ifdef HAVE_SSL _httpTLSSetOptions(cc.ssl_options); #endif /* HAVE_SSL */ }
void _cupsSetDefaults(void) { cups_file_t *fp; /* File */ const char *home, /* Home directory of user */ *cups_encryption, /* CUPS_ENCRYPTION env var */ *cups_server, /* CUPS_SERVER env var */ #ifdef HAVE_GSSAPI *cups_gssservicename, /* CUPS_GSSSERVICENAME env var */ #endif /* HAVE_GSSAPI */ *cups_anyroot, /* CUPS_ANYROOT env var */ *cups_expiredroot, /* CUPS_EXPIREDROOT env var */ *cups_expiredcerts; /* CUPS_EXPIREDCERTS env var */ char filename[1024]; /* Filename */ _cups_globals_t *cg = _cupsGlobals(); /* Pointer to library globals */ DEBUG_puts("_cupsSetDefaults()"); /* * First collect environment variables... */ cups_encryption = getenv("CUPS_ENCRYPTION"); cups_server = getenv("CUPS_SERVER"); #ifdef HAVE_GSSAPI cups_gssservicename = getenv("CUPS_GSSSERVICENAME"); #endif /* HAVE_GSSAPI */ cups_anyroot = getenv("CUPS_ANYROOT"); cups_expiredroot = getenv("CUPS_EXPIREDROOT"); cups_expiredcerts = getenv("CUPS_EXPIREDCERTS"); /* * Then, if needed, read the ~/.cups/client.conf or /etc/cups/client.conf * files to get the default values... */ if (cg->encryption == (http_encryption_t)-1 || !cg->server[0] || !cg->ipp_port) { if ((home = getenv("HOME")) != NULL) { /* * Look for ~/.cups/client.conf... */ snprintf(filename, sizeof(filename), "%s/.cups/client.conf", home); fp = cupsFileOpen(filename, "r"); } else fp = NULL; if (!fp) { /* * Look for CUPS_SERVERROOT/client.conf... */ snprintf(filename, sizeof(filename), "%s/client.conf", cg->cups_serverroot); fp = cupsFileOpen(filename, "r"); } /* * Read the configuration file and apply any environment variables; both * functions handle NULL cups_file_t pointers... */ cups_read_client_conf(fp, cg, cups_encryption, cups_server, #ifdef HAVE_GSSAPI cups_gssservicename, #endif /* HAVE_GSSAPI */ cups_anyroot, cups_expiredroot, cups_expiredcerts); cupsFileClose(fp); } }