/* Guckt ob Verbindung da und versucht aufzubauen. * gibt 1 zurueck, wenn erfolgreich, sonst 0 */ static int pg_connect(){ if (PQstatus(connection) == CONNECTION_OK){ PQexec(connection,"SELECT 1"); /* Status neusetzen erzwingen */ } if(PQstatus(connection) != CONNECTION_OK){ if (connection == NULL){ if(conn_string == NULL){ conn_string = malloc(sizeof(char)*512); snprintf(conn_string, 512, "host=%s dbname=%s user=%s password=%s connect_timeout=%s", global_opts.pg_host, global_opts.pg_database, global_opts.pg_user, global_opts.pg_pass, global_opts.pg_timeout); } connection = PQconnectdb(conn_string); /* Connection aufbauen */ add_clean(clean_write, connection); /* Callbackfunktion zum Aufraeumen registrieren */ } else { PQreset(connection); /* Connecion resetten */ } if(PQstatus(connection) != CONNECTION_OK){ DEBUGOUT2("\nFehler beim Aufbau der Datenbankverbindung\n%s\n", PQerrorMessage(connection)); #ifndef NO_LOGING snprintf(get_error_buffer(), ERR_BUFFERSIZE, "Fehler beim Aufbau der Datenbankverbindung: %s", PQerrorMessage(connection)); log_error(get_error_buffer()); #endif return 0; } DEBUGOUT1("\nDatenbankverbindung erfolgreich hergestellt\n"); } return 1; }
/* Ein Datum in die Datenbank schreiben */ static void pg_insert(char *query){ PGresult *res; if(pg_connect()){ res = PQexec(connection, query); if(!res || PQresultStatus(res) != PGRES_COMMAND_OK){ DEBUGOUT2("Fehler beim INSERT: %s\n", query); #ifndef NO_LOGING snprintf(get_error_buffer(), ERR_BUFFERSIZE, "Fehler beim INSERT: %s", query); log_error(get_error_buffer()); #endif } else { DEBUGOUT2("Query: '%s' ausgefuehrt\n", query); } PQclear(res); } }
void _cupsRasterAddError(const char *f, /* I - Printf-style error message */ ...) /* I - Additional arguments as needed */ { _cups_raster_error_t *buf = get_error_buffer(); /* Error buffer */ va_list ap; /* Pointer to additional arguments */ char s[2048]; /* Message string */ size_t bytes; /* Bytes in message string */ va_start(ap, f); bytes = vsnprintf(s, sizeof(s), f, ap); va_end(ap); if (bytes <= 0) return; bytes ++; if (bytes >= sizeof(s)) return; if (bytes > (size_t)(buf->end - buf->current)) { /* * Allocate more memory... */ char *temp; /* New buffer */ size_t size; /* Size of buffer */ size = buf->end - buf->start + 2 * bytes + 1024; if (buf->start) temp = realloc(buf->start, size); else temp = malloc(size); if (!temp) return; /* * Update pointers... */ buf->end = temp + size; buf->current = temp + (buf->current - buf->start); buf->start = temp; } /* * Append the message to the end of the current string... */ memcpy(buf->current, s, bytes); buf->current += bytes - 1; }
const char * /* O - Last error */ cupsRasterErrorString(void) { _cups_raster_error_t *buf = get_error_buffer(); /* Error buffer */ if (buf->current == buf->start) return (NULL); else return (buf->start); }
void _cupsRasterClearError(void) { _cups_raster_error_t *buf = get_error_buffer(); /* Error buffer */ buf->current = buf->start; if (buf->start) *(buf->start) = '\0'; }