/*
 * Soft Fail, more info see README, COPYRIGHT and CHANGELOG files
 */

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <mysql/mysql.h>
#include "softfail.h"

void usage() {
   fprintf(stderr, "Valid usage options are:\n");
   fprintf(stderr, "-b\tDelete all entries auto-blacklisted.\n");
   fprintf(stderr, "-f\tDelete all entries auto inserted.\n");
   fprintf(stderr, "-h\tThis help.\n\n");
   fprintf(stderr, "or run the command without options at all to delete\n");
   fprintf(stderr, "all automatically added entries older than %d days.\n",
	MAXDAYSAUTOBLACKINDB);
}

int main(int argc, char **argv) {
  MYSQL *mysql;
  MYSQL_RES *res;
  char sqlquery[SQLCMDSIZE];
  int c;

  mysql = mysql_init(NULL);

   // open mysql connection
   if (!mysql_real_connect(mysql,MYSQLSERVER,MYSQLUSER,MYSQLPASSWORD,MYSQLDB,0,NULL,0)) {
      fprintf(stderr, "rotate-softfail-db err: %s\n", mysql_error(mysql));
      exit(-1);
   }

   sprintf(sqlquery, "repair table softfail"); // prepare the query

   if (mysql_query(mysql, sqlquery)) {
      fprintf(stderr, "rotate-softfail-db err: %s\n", mysql_error(mysql));
      exit(-1);
   } else {
	res = mysql_store_result(mysql);
	mysql_free_result(res);
   }

   // Now we prepare for default.
   sprintf(sqlquery, "delete from softfail where ( (create_time < (NOW() - INTERVAL %d DAY)) AND (block_expires='9999-12-31 23:59:59') AND (record_expires='9999-12-31 23:59:59') AND (origin_type='AUTO') )",MAXDAYSAUTOBLACKINDB);

   while ((c = getopt (argc, argv, "bfh")) != -1)
     switch (c) {
	case 'b':
	   sprintf(sqlquery, "delete from softfail where ((block_expires='9999-12-31 23:59:59') AND (record_expires='9999-12-31 23:59:59') AND (origin_type='AUTO'))");
	break;
	case 'f':
	   sprintf(sqlquery, "delete from softfail where origin_type='AUTO'");
	break;
	case 'h':
	   usage();
	exit(0);
	case '?':
	   if (isprint (optopt)) {
	      fprintf(stderr, "Unknown option `-%c'.\n", optopt);
	      usage();
	   } else {
	      fprintf(stderr,"Unknown option character `\\x%x'.\n",optopt);
	      usage();
	   }
	   return 1;
	default:
	break;
     }

   if (mysql_query(mysql, sqlquery)) {
      fprintf(stderr, "rotate-softfail-db err: %s\n", mysql_error(mysql));
      exit(-1);
   } else {
	res = mysql_store_result(mysql);
	mysql_free_result(res);
   }

   mysql_close(mysql); // close mysql connection

   //fprintf(stderr,"sqlquery: %s\n",sqlquery);

exit(0);
}



syntax highlighted by Code2HTML, v. 0.9.1