wileymud-1.187b/
wileymud-1.187b/attic/
wileymud-1.187b/attic/bin/
wileymud-1.187b/attic/lib/
wileymud-1.187b/attic/lib/adm/
wileymud-1.187b/attic/lib/man/
wileymud-1.187b/attic/lib/new-wld/
wileymud-1.187b/attic/lib/new-wld/default/
wileymud-1.187b/attic/lib/old/
wileymud-1.187b/attic/lib/wld/
wileymud-1.187b/attic/public_html/
wileymud-1.187b/attic/public_html/gfx/
wileymud-1.187b/attic/src/bin/
wileymud-1.187b/attic/src/etc/
wileymud-1.187b/attic/src/libauth-4.0-p5/
wileymud-1.187b/attic/src/sedna/
wileymud-1.187b/backups/
wileymud-1.187b/bin/
wileymud-1.187b/docs/
wileymud-1.187b/etc/
wileymud-1.187b/lib/
wileymud-1.187b/lib/adm/
wileymud-1.187b/lib/boards/
wileymud-1.187b/lib/log/
wileymud-1.187b/lib/man/
wileymud-1.187b/lib/ply/
wileymud-1.187b/lib/ply/a/
wileymud-1.187b/lib/ply/b/
wileymud-1.187b/lib/ply/c/
wileymud-1.187b/lib/ply/d/
wileymud-1.187b/lib/ply/g/
wileymud-1.187b/lib/ply/k/
wileymud-1.187b/lib/ply/m/
wileymud-1.187b/lib/ply/s/
wileymud-1.187b/lib/ply/t/
wileymud-1.187b/public_html/gfx/
wileymud-1.187b/src/bin/
wileymud-1.187b/src/convert/attic/
wileymud-1.187b/src/convert/obj/
wileymud-1.187b/src/convert/perl/
wileymud-1.187b/src/convert/perl/MudConvert/
wileymud-1.187b/src/convert/perl/MudConvert/DUMP/
wileymud-1.187b/src/convert/perl/MudConvert/Report/
wileymud-1.187b/src/convert/perl/MudConvert/WileyMUD/
wileymud-1.187b/src/convert/perl/output/
wileymud-1.187b/src/convert/perl/output/DUMP/
wileymud-1.187b/src/convert/perl/output/Report/
wileymud-1.187b/src/convert/perl/output/WileyMUD/
wileymud-1.187b/src/etc/
wileymud-1.187b/src/etc/init.d/
wileymud-1.187b/src/etc/rc.d/
wileymud-1.187b/src/etc/rc.d/init.d/
wileymud-1.187b/src/lib/
wileymud-1.187b/src/lib/adm/
wileymud-1.187b/src/lib/boards/
wileymud-1.187b/src/lib/log/
wileymud-1.187b/src/lib/man/
wileymud-1.187b/src/lib/ply/
wileymud-1.187b/src/lib/ply/a/
wileymud-1.187b/src/lib/ply/b/
wileymud-1.187b/src/lib/ply/c/
wileymud-1.187b/src/lib/ply/d/
wileymud-1.187b/src/lib/ply/e/
wileymud-1.187b/src/lib/ply/f/
wileymud-1.187b/src/lib/ply/g/
wileymud-1.187b/src/lib/ply/h/
wileymud-1.187b/src/lib/ply/i/
wileymud-1.187b/src/lib/ply/j/
wileymud-1.187b/src/lib/ply/k/
wileymud-1.187b/src/lib/ply/l/
wileymud-1.187b/src/lib/ply/m/
wileymud-1.187b/src/lib/ply/n/
wileymud-1.187b/src/lib/ply/o/
wileymud-1.187b/src/lib/ply/p/
wileymud-1.187b/src/lib/ply/q/
wileymud-1.187b/src/lib/ply/r/
wileymud-1.187b/src/lib/ply/s/
wileymud-1.187b/src/lib/ply/t/
wileymud-1.187b/src/lib/ply/u/
wileymud-1.187b/src/lib/ply/v/
wileymud-1.187b/src/lib/ply/w/
wileymud-1.187b/src/lib/ply/x/
wileymud-1.187b/src/lib/ply/y/
wileymud-1.187b/src/lib/ply/z/
wileymud-1.187b/src/obj/
wileymud-1.187b/src/utils/
wileymud-1.187b/src/utils/mobmaker/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdarg.h>
#include <assert.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

#include "global.h"
#include "bug.h"

#define __SQL_C__
#include "sql.h"

EXEC SQL INCLUDE sqlca;

int db_connected = 0;
int db_logging = 1;

int db_log_info = 0;
int db_log_errors = 1;
int db_log_boot = 1;
int db_log_auth = 1;
int db_log_kills = 0;
int db_log_resets = 0;
int db_log_imc = 1;

int init_sql( void )
{
  EXEC SQL BEGIN DECLARE SECTION;
  const char *sql_connect = "tcp:postgresql://localhost:5432/wiley";
  const char *sql_user = "wiley";
  const char *sql_passwd = "tardis69";
  EXEC SQL END DECLARE SECTION;

//  if (ECPGstatus(__LINE__, NULL)) {
//    db_connected = 1;
//    return db_connected;
//  }
  fprintf(stderr, "Connecting to database server...");

  EXEC SQL CONNECT TO :sql_connect AS :sql_user USER :sql_user IDENTIFIED BY :sql_passwd;
  if (sqlca.sqlcode == 0 ) {
    db_connected = 1;
    fprintf(stderr, "success!\n");
  } else {
    db_connected = 0;
    fprintf(stderr, "failed!\n");
  }

  //assert(sqlca.sqlcode == 0);
  return db_connected;
}

void close_sql( void )
{
  if (db_connected)
    EXEC SQL DISCONNECT ALL;

  db_connected = 0;
}

int verify_sql( void )
{
  EXEC SQL BEGIN DECLARE SECTION;
  int is_connected;
  EXEC SQL END DECLARE SECTION;

  is_connected = 0;

  if (ECPGstatus(__LINE__, NULL)) {
      EXEC SQL SELECT 1 INTO :is_connected;
  }

  return is_connected;
}

char *version_sql( void )
{
  EXEC SQL BEGIN DECLARE SECTION;
  static char version[MAX_STRING_LENGTH];
  EXEC SQL END DECLARE SECTION;

  if (db_connected) {
    EXEC SQL SELECT version() INTO :version LIMIT 1;
    if (sqlca.sqlcode != 0 ) {
      fprintf(stderr, "error code %ld, message %s, rows %ld, warning %c\n",
             sqlca.sqlcode, sqlca.sqlerrm.sqlerrmc, sqlca.sqlerrd[2],
             sqlca.sqlwarn[0]);
      strcpy(version, sqlca.sqlerrm.sqlerrmc);
    }
  } else {
    strcpy(version, "Not Connected");
  }
  return version;
}

int compare_dates_file_sql( const char *filename, const char *tablename, const char *fieldname )
{
  EXEC SQL BEGIN DECLARE SECTION;
  char statement[MAX_STRING_LENGTH];
  int sql_time = 0;
  EXEC SQL END DECLARE SECTION;
  struct stat statbuf;
  int file_time = 0;

  if (db_connected) {
    sprintf(statement, "SELECT floor(extract(epoch FROM %s))::int FROM %s ORDER BY %s DESC LIMIT 1",
            fieldname, tablename, fieldname);
    EXEC SQL PREPARE stmt FROM :statement;
    EXEC SQL EXECUTE stmt INTO :sql_time;
    EXEC SQL DEALLOCATE PREPARE stmt;
  
    if(!stat(filename, &statbuf)) {
      file_time = (int)statbuf.st_mtime;
    }
  
    return file_time < sql_time ? -1 : (file_time == sql_time ? 0 : 1);
  } else {
    return 1; /* If SQL isn't available, the file IS the newest */
  }
}