Example #1
0
BOOL isAlarmTypeAndValueMatch(ALARM_TYPE type,const char *value)
{
	int row_num = 0,column_num = 0;
	char sql[1024] = {0};
	char **azResult;
	if(database_open()==FALSE) return FALSE;
	switch(type)
	{
		case ALARM_TYPE_EMAIL:
			sprintf(sql,"select * from alarmtable where F_TYPE='email' and F_VALUE='%s'",value);
			break;
		case ALARM_TYPE_MOBILE:
			sprintf(sql,"select * from alarmtable where F_TYPE='mobile' and F_VALUE='%s'",value);
			break;
		default:
			return FALSE;
	}
	DEBUG_MSG("match sql = %s\n",sql);
	sqlite3_get_table(db_user,sql,  &azResult, &row_num, &column_num, NULL);
	if(row_num>0){
		sqlite3_free_table(azResult);
		database_close();
		return TRUE;
	}
	database_close();
	return FALSE;
}
Example #2
0
int issue_new_dialog_load_projects()
{
  g_print("issue_new_dialog_load_projects()\n");

  char *error_message = 0;

  sqlite3 *db = database_open();

  if (db == NULL) {
    g_print("Can't open database: %s\n", sqlite3_errmsg(db));

    sqlite3_close(db);

    return -1;
  }

  const gchar sql_command[] = "SELECT project_id, name FROM project WHERE status = \"A\"";

  int rc = sqlite3_exec(db, sql_command, project_query_callback, 0, &error_message);

  if (rc != SQLITE_OK) {
    g_print("SQL error: %s\n", error_message);

    sqlite3_free(error_message);
  }

  sqlite3_close(db);

  return 0;
}
Example #3
0
void GetAlarmAllList(void)
{
	if(database_open()==FALSE) return;

	char *sql = "select F_TYPE,F_VALUE,F_STATE from alarmtable";
	int row_num = 0,column_num = 0,i = 0;
	char **azResult;
	char buffer[1024] = {0};
	sqlite3_get_table(db_user,sql,  &azResult, &row_num, &column_num, NULL);
	memset(g_alarm_alllist,0,sizeof(g_alarm_alllist));
	if(row_num >= 1){
		strcat(g_alarm_alllist,"[");
		for(i = 1;i<row_num+1;i++)
		{
			//json send
			sprintf(buffer,"{\"alarm_way\":\"%s\",\"alarm_value\":\"%s\",\"alarm_state\":\"%s\"},",azResult[ i*column_num],azResult[ i*column_num+1],azResult[ i*column_num+2]);
			strcat(g_alarm_alllist,buffer);
			memset(buffer,0,sizeof(buffer));
		}
		g_alarm_alllist[strlen(g_alarm_alllist)-1] = ']';
		strcat(g_alarm_alllist,"\0");
		DEBUG_MSG("alarmAllList = %s\n",g_alarm_alllist);
	}
	else{
		strcpy(g_alarm_alllist,"_NULL_");
	}
	sqlite3_free_table(azResult);
	database_close();
}
Example #4
0
int project_edit_dialog_delete()
{
    char *error_message = 0;

    sqlite3 *db = database_open();

    if (db == NULL) {
        g_print("Can't open database: %s\n", sqlite3_errmsg(db));

        sqlite3_close(db);

        return -1;
    }

    gchar *sql_command = g_strdup_printf("DELETE FROM project WHERE project_id = \"%d\"",
                                         project_edit_dialog_project_id);

    g_print("SQL INSERT command: %s\n", sql_command);

    int rc = sqlite3_exec(db, sql_command, NULL, 0, &error_message);

    if (rc != SQLITE_OK) {
        gchar *user_message = g_strdup_printf("Database error: %s\n", error_message);

        GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_project_edit),
                            GTK_DIALOG_DESTROY_WITH_PARENT,
                            GTK_MESSAGE_ERROR,
                            GTK_BUTTONS_CLOSE,
                            user_message);

        gtk_dialog_run(GTK_DIALOG(dialog));

        gtk_widget_destroy(dialog);

        sqlite3_free(error_message);

        g_free(user_message);

        return -1;
    }

    g_free(sql_command);

    sqlite3_close(db);

    // Reload the issue list

    main_dialog_load_issue_list();

    // Reload the project list

    project_main_dialog_load_list();

    // Close this dialog

    project_edit_dialog_close();


    return 0;
}
Example #5
0
BOOL SetAlarmState(ALARM_LOCK_ACTION lock_type,ALARM_TYPE type,const char *value)
{
	char sql[1024] = {0};
	if(database_open()==FALSE) return FALSE;
	switch(lock_type)
	{
		case ALARM_LOCK:
			if(type == ALARM_TYPE_EMAIL){
				sprintf(sql,"update alarmtable set F_STATE = 'c' where F_TYPE='email' and F_VALUE='%s'",value);
			}else if(type == ALARM_TYPE_MOBILE){
				sprintf(sql,"update alarmtable set F_STATE = 'c' where F_TYPE='mobile' and F_VALUE='%s'",value);
			}
			break;
		case ALARM_UNLOCK:
			if(type == ALARM_TYPE_EMAIL){
				sprintf(sql,"update alarmtable set F_STATE = 'o' where F_TYPE='email' and F_VALUE='%s'",value);
			}else if(type == ALARM_TYPE_MOBILE){
				sprintf(sql,"update alarmtable set F_STATE = 'o' where F_TYPE='mobile' and F_VALUE='%s'",value);
			}
			break;
		default:
			return FALSE;
	}
	DEBUG_MSG("sql = %s",sql);
	if(sqlite3_exec(db_user, sql,NULL,NULL,NULL)==SQLITE_OK){
		database_close();
		return TRUE;
	}
	database_close();
	return FALSE;
}
Example #6
0
File: main.c Project: elechak/blue
int main (int argc, char ** args){
    sqlite3 *db = database_open();
    
    database_desc_table(db);
    
    sqlite3_close(db);
        
    return 0;
}
Example #7
0
open_all()
{
  sd_open(leave);
  ss_open();
  database_open();
  pmfile_open(AUTOLOCK);
  pmfile_setkey(1);
  log_open(AUTOLOCK);
}
Example #8
0
/*-------------------------------------------------------------------------*
 *  Open All Files
 *-------------------------------------------------------------------------*/
open_all()
{
  database_open();
  sd_open(leave);
  ss_open();
  co_open();
  getparms(0);
  pmfile_open(READONLY);
  prodfile_open(READONLY);
}
Example #9
0
/*
 *open all files
 */
open_all()
{
  database_open();
  sd_open(leave);
  ss_open();
  co_open();
  oc_open();
  od_open();
  getparms(0);
}
Example #10
0
void database_delete(struct Connection *conn, int id) {
	struct Address addr = {.id=id, .set=0};
	conn->db->rows[id] = addr;
}

void database_list(struct Connection *conn) {
	for(int i=0; i<MAX_ROWS; ++i) {
		struct Address *addr = &conn->db->rows[i];
		if(addr->set)
			address_print(addr);
	}
}

int main(int argc, char *argv[]) {
	if(argc < 3)
		die("usage: a.out file action additional_params");

	char *filename = argv[1];

	char action = argv[2][0];
	struct Connection *conn = database_open(filename, action);
	int id=0;

	if(argc > 3) id = atoi(argv[3]);
	if(id >= MAX_ROWS) die("record id too high");

	switch (action) {
		case 'c':
			database_create(conn);
			database_write(conn);
			break;
		case 'g':
			if(argc!=4) die("need an id for database_get()");
			database_get(conn,id);
			break;
		case 's':
			if(argc!=6) die("need id, name, email for database_set()");
			database_set(conn,id,argv[4],argv[5]);
			database_write(conn);
			break;
		case 'd':
			if(argc!=4) die("need id to delete");
			database_delete(conn,id);
			database_write(conn);
			break;
		case 'l':
			database_list(conn);
			break;
		default:
			die("invalid action: c=create, g=get, s=set, d=delete, l=list");
	}

	database_close(conn);
	return 0;
}
Example #11
0
BOOL insertIntoCityIDTable(const char *name,const char *cityid)
{
	char sql[1024] = {0};
	if(database_open()==FALSE) return FALSE;
	sprintf(sql,"insert into citytable values('%s','%s')",name,cityid);
	int ret = sqlite3_exec(db, sql,NULL, NULL,NULL);
	database_close();
	if(ret == SQLITE_OK)
		return TRUE;
	return FALSE;
}
Example #12
0
int main(int argc, char const * argv[]) {
	const char * database_path;
	void * buffer;
	size_t size;
	int ret = 0;
	key_t key = ftok("database.sql", KEY_ID);

	switch(argc) {
		case 1: {
			database_path = DATABASE_PATH_DEFAULT;
		} break;

		case 2: {
			database_path = argv[1];
		} break;

		default: {
			fprintf(stderr, "Usage: 'database.app [database_path]'.\n");
			exit(EXIT_FAILURE);
		}
	}

	database = database_open(database_path);
	if(database == NULL) {
		fprintf(stderr, "Can't open database.\n");
		exit(EXIT_FAILURE);
	}

	server = smemory_make(key); // TODO: define 8080
	if(server == NULL) {
		fprintf(stderr, "Can't create the main connection.\n");
		exit(EXIT_FAILURE);
	}

	signal(SIGINT, handle_int);

	while(!ret) {
		if(smemory_read(server, &buffer, &size)) {
			ret = handle(buffer, size);
		} else {
			fprintf(stderr, "Error while reading from shared memory.\n");
			ret = -1;
		}
	}

	smemory_remove(server);
	database_close(database);

	return ret == -1 ? EXIT_FAILURE : EXIT_SUCCESS;
}
Example #13
0
BOOL isUserMobileNumberValid(const char *mobile_number)
{
	int row_num = 0,column_num = 0;
	char sql[1024] = {0};
	char **azResult;
	if(database_open()==FALSE) return FALSE;
	sprintf(sql,"select * from alarmtable where F_TYPE='mobile' and F_VALUE='%s' and F_STATE='o'",mobile_number);
	sqlite3_get_table(db_user,sql,  &azResult, &row_num, &column_num, NULL);
	if(row_num>0){
		sqlite3_free_table(azResult);
		database_close();
		return TRUE;
	}
	database_close();
	return FALSE;
}
Example #14
0
BOOL GetCityIDByName(const char *name,char *cityid)
{
	char **azResult;
	int row_num = 0,column_num = 0;
	char sql[1024] = {0};
	if(database_open() == FALSE) return FALSE;
	sprintf(sql,"select F_CityID from citytable where F_NAME='%s'",name);
	sqlite3_get_table(db,sql,  &azResult, &row_num, &column_num, NULL);
	if(row_num>=1){
		strcpy(cityid,azResult[1]);
		sqlite3_free_table(azResult);
		database_close();
		return TRUE;
	}
	database_close();
	return FALSE;
}
Example #15
0
/*
 *open all files
 */
open_all()
{
  database_open();

  sd_open(leave);
  ss_open();
  co_open();

  picker_open(AUTOLOCK); 
  picker_setkey(0);

  picker_order_open(AUTOLOCK); 
  picker_order_setkey(0);


  return 0;
}
Example #16
0
int project_main_dialog_load_list()
{
  // Clear model

  GtkListStore *store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(project_main_treeview)));

  gtk_list_store_clear(store);

  // Query database and fill the model

  char *error_message = NULL;

  sqlite3 *db = database_open();

  if (db == NULL) {
    g_print("Can't open database: %s\n", sqlite3_errmsg(db));

    database_close();

    return -1;
  }

  const gchar sql_command[] = "SELECT p.project_id, p.name, p.status, "
                                    "(SELECT COUNT(*) FROM issue i WHERE i.project_id = p.project_id) "
                              "FROM project p "
                              "ORDER BY p.name, p.status";

  g_print("query command: %s\n", sql_command);

  int rc = sqlite3_exec(db, sql_command, project_main_dialog_issue_list_query_callback, 0, &error_message);

  if (rc != SQLITE_OK) {
    g_print("SQL error: %s\n", error_message);

    sqlite3_free(error_message);
  }

  database_close();

  return 0;
}
Example #17
0
int main(void) {
	EXCEPTION *e = exception_new();

	printf ( "NEW\n" );
	DATABASE *db = database_new();
	database_setException(db, e);
	exception_throw(e);

	printf ( "PARAM\n" );
	database_setHost(db, "localhost");
	database_setName(db, "template1");
	database_setUser(db, "postgres");
	database_setPassword(db, "postgres");

	printf ( "OPEN\n" );
	database_open(db);
	exception_throw(e);

	printf ( "VERSION" );
	char *ver = database_getVersion(db);
	exception_throw(e);
	printf ( " (%s)\n", ver );
	free(ver);

	printf ( "RANDOM" );
	int rnd = database_getRandom(db);
	exception_throw(e);
	printf ( " (%d)\n", rnd );

	printf ( "CLOSE\n" );
	database_close(db);
	exception_throw(e);

	printf ( "FREE\n" );
	database_free(db);
	exception_throw(e);

	exception_free(e);

	return 0;
}
Example #18
0
BOOL DeleteByEmailOrMobile(ALARM_TYPE type,const char *value)
{
	char sql[1024] = {0};
	if(database_open()==FALSE) return FALSE;
	switch(type)
	{
		case ALARM_TYPE_EMAIL:
			sprintf(sql,"delete from alarmtable where F_TYPE='email' and F_VALUE='%s'",value);
			break;
		case ALARM_TYPE_MOBILE:
			sprintf(sql,"delete from alarmtable where F_TYPE='mobile' and F_VALUE='%s'",value);
			break;
		default:
			return FALSE;
	}
	if(sqlite3_exec(db_user, sql,NULL,NULL,NULL)==SQLITE_OK){
		database_close();
		return TRUE;
	}
	database_close();
	return FALSE;
}
Example #19
0
int main(void) {
	EXCEPTION *e = exception_new();

	printf ( "NEW\n" );
	DATABASE *db = database_new();
	database_setException(db, e);
	exception_throw(e);

	printf ( "PARAM\n" );
	database_setName(db, "sqlite.db");

	printf ( "OPEN\n" );
	database_open(db);
	exception_throw(e);

	printf ( "VERSION" );
	char *ver = database_getVersion(db);
	exception_throw(e);
	printf ( " (%s)\n", ver );
	free(ver);

	printf ( "RANDOM" );
	int rnd = database_getRandom(db);
	exception_throw(e);
	printf ( " (%d)\n", rnd );

	printf ( "CLOSE\n" );
	database_close(db);
	exception_throw(e);

	printf ( "FREE\n" );
	database_free(db);
	exception_throw(e);

	exception_free(e);

	return 0;
}
/* -------------------------------------------------------------------------- */
int
server_init(server_t** server, const char* database)
{
  if(server == NULL || database == NULL)
    return ERROR_INVALID_ARGUMENTS;

  /* request memory for server */
  if(requestMemory((void**)server, sizeof(server_t)) != ERROR_OK)
    return ERROR_MEMORY;
  (*server)->db = NULL;

  /* open database connection */
  database_handle_t *db = NULL;
  int retval = database_open(&db, database);
  if(retval != ERROR_OK){
    //freeMemory(*server);
    //freeMemory(db);
    return retval;
  }
  (*server)->db = db;

  return ERROR_OK;
}
Example #21
0
void GetEmailList(void)
{
	if(database_open()==FALSE) return;

	char *sql = "select F_VALUE from alarmtable where F_TYPE = 'email' and F_STATE = 'o'";
	int row_num = 0,column_num = 0,i = 0;
	char **azResult;
	sqlite3_get_table(db_user,sql,  &azResult, &row_num, &column_num, NULL);
	memset(g_email_list,0,sizeof(g_email_list));
	if(row_num >= 1){
		for(i = 1;i<row_num+1;i++)
		{
			strcat(g_email_list,azResult[ i*column_num]);
			strcat(g_email_list,",");
		}
		g_email_list[strlen(g_email_list)-1] = '\0';
		DEBUG_MSG("emailist = %s\n",g_email_list);
	}
	else{
		strcpy(g_email_list,"_NULL_");
	}
	sqlite3_free_table(azResult);
	database_close();
}
Example #22
0
int project_edit_dialog_load_data()
{
    g_print("project_edit_dialog_load_data()\n");

    char *error_message = 0;

    sqlite3 *db = database_open();

    if (db == NULL) {
        g_print("Can't open database: %s\n", sqlite3_errmsg(db));

        sqlite3_close(db);

        return -1;
    }

    gchar *sql_command = g_strdup_printf("SELECT name, status "
                                         "FROM project "
                                         "WHERE project_id = \"%d\"", project_edit_dialog_project_id);

    g_print("SQL query command: %s\n", sql_command);

    int rc = sqlite3_exec(db, sql_command, project_edit_data_query_callback, 0, &error_message);

    if (rc != SQLITE_OK) {
        g_print("SQL error: %s\n", error_message);

        sqlite3_free(error_message);
    }

    sqlite3_close(db);

    g_free(sql_command);

    return 0;
}
Example #23
0
BOOL insertIntoAlarmTable(ALARM_TYPE type,const char *value)
{
	char sql[1024] = {0};
	if(database_open()==FALSE) return FALSE;
	switch(type){
		case ALARM_TYPE_EMAIL:
			DEBUG_MSG("email = %s\n",value);
			sprintf(sql,"insert into alarmtable values('email','%s','o')",value);
			break;
		case ALARM_TYPE_MOBILE:
			DEBUG_MSG("mobile = %s \n",value);
			sprintf(sql,"insert into alarmtable values('mobile','%s','o')",value);
			break;
		default:
			DEBUG_MSG("default = %s\n",value);
			sprintf(sql,"insert into alarmtable values('email','%s','o')",value);
			break;
	}
	int ret = sqlite3_exec(db_user, sql,NULL, NULL,NULL);
	database_close();
	if(ret == SQLITE_OK)
		return TRUE;
	return FALSE;
}
Example #24
0
void database_create(struct Connection *conn)
{
	int i = 0;

	for(i = 0; i < MAX_ROWS; i++) {
		// make a prototype to initialize the database
		struct Address addr = {.id = i, .set = 0};
		// then assign it to conn
		conn->db->rows[i] = addr;
	}
	printf("got to bottom of database create");
}

void database_set(struct Connection *conn, int id, const char *name,
                  const char *email)
{
	struct Address *addr = &conn->db->rows[id];
	if(addr->set) die("Already set, delete it first");

	addr->set = 1;
	// WARNING FIX THIS
	char *res = strncpy(addr->name, name, MAX_DATA);
	// demonstrate that strncpy bug
	if(!res) die("Name copy failed");

	res = strncpy(addr->email, email, MAX_DATA);
	if(!res) die("Email copy failed");
}

void database_get(struct Connection *conn, int id)
{
	struct Address *addr = &conn->db->rows[id];
	
	if(addr->set) {
		address_print(addr);
	} else {
		die("ID is not set");
	}
}

void database_delete(struct Connection *conn, int id)
{
	struct Address addr = {.id = id, .set = 0};
	conn->db->rows[id] = addr;
}

void database_list(struct Connection *conn)
{
	int i = 0;
	struct Database *db = conn->db;

	for(i = 0; i < MAX_ROWS; i++) {
		struct Address *cur = &db->rows[i];

		if(cur->set) {
			address_print(cur);
		}
	}
}

int main(int argc, char *argv[])
{
    if(argc < 3) die("USAGE: ex17 <dbfile> <action> [action params]");

    char *filename = argv[1];
    char action = argv[2][0];
    struct Connection *conn = database_open(filename, action);
    int id = 0;

    if(argc > 3) id = atoi(argv[3]);
    if(id >= MAX_ROWS) die("There's not that many records.");

    switch(action) {
        case 'c':
            database_create(conn);
            database_write(conn);
            break;

        case 'g':
            if(argc != 4) die("Need an id to get");

            database_get(conn, id);
            break;

        case 's':
            if(argc != 6) die("Need id, name, email to set");

            database_set(conn, id, argv[4], argv[5]);
            database_write(conn);
            break;

        case 'd':
            if(argc != 4) die("Need id to delete");

            database_delete(conn, id);
            database_write(conn);
            break;

        case 'l':
            database_list(conn);
            break;
        default:
            die("Invalid action, only: c=create, g=get, s=set, d=del, l=list");
    }

    database_close(conn);

    return 0;
}
Example #25
0
void pop3(FILE *client, const char *dbfile)
{
    struct database db;
    if (database_open(&db, dbfile) != 0) {
        RESPOND(client, "%s", "-ERR");
        fclose(client);
        return;
    } else {
        RESPOND(client, "+OK %s", "POP3 server ready");
    }

    char user[512] = {0};
    char pass[512] = {0};
    char email[512] = {0};
    char pass1[512] = {0};
    char pass2[512] = {0};
    char firstname[512] = {0};
    char lastname[512] = {0};

    struct message_email *messages = NULL;
    struct message_user *messages_user = NULL;
    while (!feof(client)) {
        char line[512];
        printf("Client message: %s", line);
        if(fgets(line, sizeof(line), client)){}
        char command[5] = {line[0], line[1], line[2], line[3]};
        if(strcmp(command,"CREA") == 0){
            int i;
            int count = 0;
            int errorCreate = 0;
             if (strlen(line) > 5) {
                char *a = line + 5, *b = email,*c = firstname,*d = lastname,*e = pass1,*f = pass2;
                for(i = 0;i<strlen(line);i++)
                    if(line[i] =='+')
                        count++;
                if(count==5){
                    while (*a!='+')
                        *(b++) = *(a++);
                    *b = '\0';
                    a++;
                    while (*a!='+')
                        *(c++) = *(a++);
                    *c = '\0';
                    a++;
                    while (*a!='+')
                        *(d++) = *(a++);
                    *d = '\0';
                    a++;
                    while (*a!='+')
                        *(e++) = *(a++);
                    *e = '\0';
                    a++;
                    while (*a!='+')
                        *(f++) = *(a++);
                    *f = '\0';
                    i=0;
                    messages_user = database_list_user_signin(&db,email,pass1);
                    for(struct message_user *m = messages_user; m; m = m->next){
                            i++;
                        }
                    if(i!=0){
                        errorCreate = 1;
                    } else
                        errorCreate = 0;
                    if(!errorCreate){
                        database_send_user(&db,email,firstname,lastname,pass1,pass2);
                        RESPOND(client,"%s","+OK");
                    }else RESPOND(client,"%s","-ER");
                }
            }
        }else if (strcmp(command, "USER") == 0) {
             if (strlen(line) > 5) {
                char *a = line + 5, *b = user;
                while (*a!='+')
                    *(b++) = *(a++);
                *b = '\0';
                RESPOND(client, "%s", "+OKUSER");
            } else {
                RESPOND(client, "%s", "-ERRUSER");
            }
            printf("|%s|\n",user);
            messages = database_list_email(&db, user);
        } else if (strcmp(command, "PASS") == 0) {
                if (strlen(line) > 5) {
                    char *a = line + 5, *b = pass;
                    while (*a!='+')
                        *(b++) = *(a++);
                    *b = '\0';
                    if(!user[0])
                        RESPOND(client,"%s","-ERR enter user first");
                    else{
                        messages_user = database_list_user_signin(&db,user,pass);
                        int i = 0;
                        for(struct message_user *m = messages_user; m; m = m->next){
                            i++;
                        }
                        if(i!=1){
                            RESPOND(client,"%s","-ER");
                        } else
                            RESPOND(client,"%s","+OK");
                }
            }
        }  else if (strcmp(command, "FORG") == 0) {
                if (strlen(line) > 5) {
                    char *a = line + 5, *b = pass;
                    while (*a!='+')
                        *(b++) = *(a++);
                    *b = '\0';
                    if(!user[0])
                        RESPOND(client,"%s","-ERR enter user first");
                    else{
                        messages_user = database_list_user_forgotpassword(&db,user,pass);
                        int i = 0;
                        for(struct message_user *m = messages_user; m; m = m->next){
                            i++;
                            RESPOND(client, "email: %s\npassword: %s", m->email, m->pass1);
                        }
                        if(i!=1){
                            RESPOND(client,"%s","Wrong level 2 password.");
                        }
                }
            }
        }else if (strcmp(command, "STAT") == 0) {
            int count = 0, size = 0;
            for (struct message_email *m = messages; m; m = m->next) {
                count++;
                size += m->length;
            }
            RESPOND(client, "+OK %d %d", count, size);
        } else if (strcmp(command, "LIST") == 0) {
            int temp1=0;
            for (struct message_email *m = messages; m; m = m->next){
                temp1++;
                char temp[1000];
                char tempuser[1000];
                int i=0;
                while(m->content[i]!='\n'){
                    temp[i] = m->content[i];
                    i++;
                }
                temp[i]='\0';
                i=0;
                while(m->user[i]!='\n' && m->user[i]!='\r'){
                    tempuser[i] = m->user[i];
                    i++;
                }
                tempuser[i]='\0';
               
                RESPOND(client, "%-5d | %-30s | %-30s", m->id, temp,tempuser);
            }
            if(temp1==0)
                RESPOND(client,"%s","inbox is empty!");
}else if (strcmp(command, "RETR") == 0) {
            int id = atoi(line + 4);
            int found = 0;
            for (struct message_email *m = messages; m; m = m->next)
                if (m->id == id) {
                    found = 1;
                    RESPOND(client, " - Mail from: %s", m->user);
                    RESPOND(client, " - Subject: %s",m->content);
                }
            RESPOND(client, "%s", found ? "." : "-ERR");
        } else if (strcmp(command, "DELE") == 0) {
            int id = atoi(line + 4);
            int found = 0;
            for (struct message_email *m = messages; m; m = m->next) {
                if (m->id == id) {
                    found = 1;
                    RESPOND(client, "%s", "+OK");
                    database_delete_email(&db, id);
                    break;
                }
            }
            if (!found)
                RESPOND(client, "%s", "-ERRor");
        } else if (strcmp(command, "TOP ") == 0) {
            int id, lines;
            sscanf(line, "TOP %d %d", &id, &lines);
            int found = 0;
            for (struct message_email *m = messages; m; m = m->next) {
                if (m->id == id) {
                    RESPOND(client, "%s", "+OK");
                    found = 1;
                    char *p = m->content;
                    while (*p && memcmp(p, "\r\n\r\n", 4) != 0) {
                        fputc(*p, client);
                        p++;
                    }
                    if (*p) {
                        p += 4;
                        int line = 0;
                        while (*p && line < lines) {
                            if (*p == '\n')
                                line++;
                            p++;
                        }
                    }
                    break;
                }
            }
            RESPOND(client, "%s", found ? "\r\n." : "-ERR");
        } else if (strcmp(command, "QUIT") == 0) {
            RESPOND(client, "%s", "+OK");
            break;
        } else {
            RESPOND(client, "%s", "-ERR");
        }
    }

    while (messages) {
        struct message_email *dead = messages;
        messages = messages->next;
        free(dead);
    }
    fclose(client);
    database_close(&db);
}
Example #26
0
main()
{
  register struct pw_item *i;
  register struct st_item *s;
  register long k, errors;
  long pid, status;
  char command[80];
  
  putenv("_=orphan_picks");
  chdir(getenv("HOME"));
  
  database_open();

  ss_open();
  co_open();
  oc_open();
  od_open();
  
  if (sp->sp_sku_support == 'n') leave(0);
  
  errors = 0;
  tmp_name(fd_name);
  
  fd = fopen(fd_name, "w");
  if (fd == 0) krash("main", "open temp", 1);
  
  if (sp->sp_sku_support == 'y')           /* only when sku support          */
  {
    for (k = 0, i = pw; k < coh->co_prod_cnt; k++, i++)
    {
      if (i->pw_lines_to_go <= 0) continue;  /* has no picks                 */
  
      s = mod_lookup(k + 1);               /* find in sku table              */
      if (s) continue;                     /* module has a sku               */
    
      fprintf(fd, "No SKU Assigned To Module %d Has %d Picks\n", 
        k + 1, i->pw_lines_to_go);

      errors++;
    }
  }
#ifdef DEBUG
  fprintf(stderr, "errors=%d\n", errors);
#endif

  fprintf(fd, "\n\n");
  pick_setkey(1);
  
  begin_work();
  while (!pick_next(op_rec, NOLOCK))
  {
#ifdef DEBUG
  fprintf(stderr, "pl=%d  on=%d  mod=%d  flag=%x\n",
    op_rec->pi_pl, op_rec->pi_on, op_rec->pi_mod, op_rec->pi_flags);
#endif

    commit_work();
    begin_work();
    
    if (op_rec->pi_flags & VALIDATED) continue;
  
    fprintf(fd, 
      "Pickline: %2d  Order: %7.*d  Mod: %5d  SKU: %-15.15s  Quan: %3d\n",

      op_rec->pi_pl, rf->rf_on, op_rec->pi_on, op_rec->pi_mod,
      op_rec->pi_sku, op_rec->pi_ordered);

    errors++;
  }
  commit_work();
  fclose(fd);

  if (errors)
  {
    tmp_name(ed_name);

    if (fork() == 0)
    {
      execlp("prft", "prft", fd_name, ed_name, "sys/report/orphan_picks.h", 0);
      krash("main", "load prft", 1);
    }
    pid = wait(&status);
    if (!pid || status) krash("main", "prft failed", 1);
   
    sprintf(command, "%s %s", getenv("LPR"), fd_name);
  }
  else unlink(fd_name);
  leave(0);
}
Example #27
0
int project_edit_dialog_save_data()
{
    g_print("project_edit_dialog_save_data()\n");

    GtkTreeIter iter_status;

    // Check values

    if (g_utf8_strlen(gtk_entry_get_text(GTK_ENTRY(project_edit_entry_name)), -1) <= 0) {
        GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_project_edit),
                            GTK_DIALOG_DESTROY_WITH_PARENT,
                            GTK_MESSAGE_ERROR,
                            GTK_BUTTONS_CLOSE,
                            "The project name is needed.");

        gtk_dialog_run(GTK_DIALOG(dialog));

        gtk_widget_destroy(dialog);

        return -1;
    }

    if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(project_edit_combo_status), &iter_status)) {
        GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_project_edit),
                            GTK_DIALOG_DESTROY_WITH_PARENT,
                            GTK_MESSAGE_ERROR,
                            GTK_BUTTONS_CLOSE,
                            "The status is needed.");

        gtk_dialog_run(GTK_DIALOG(dialog));

        gtk_widget_destroy(dialog);

        return -1;
    }

    // Status

    gchar *status_id;

    GtkTreeModel *status_model = gtk_combo_box_get_model(GTK_COMBO_BOX(project_edit_combo_status));

    gtk_tree_model_get(status_model, &iter_status, 1, &status_id, -1);

    g_print("Selected status: %s\n", status_id);


    // Mount SQL command

    char *error_message = 0;

    sqlite3 *db = database_open();

    if (db == NULL) {
        g_print("Can't open database: %s\n", sqlite3_errmsg(db));

        sqlite3_close(db);

        return -1;
    }

    gchar *sql_command = g_strdup_printf("UPDATE project "
                                         "SET name = \"%s\", "
                                         "status = \"%s\" "
                                         "WHERE project_id = \"%d\"",
                                         gtk_entry_get_text(GTK_ENTRY(project_edit_entry_name)),
                                         status_id,
                                         project_edit_dialog_project_id);

    g_print("SQL INSERT command: %s\n", sql_command);

    int rc = sqlite3_exec(db, sql_command, NULL, 0, &error_message);

    if (rc != SQLITE_OK) {
        gchar *user_message = g_strdup_printf("Database error: %s\n", error_message);

        GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_project_edit),
                            GTK_DIALOG_DESTROY_WITH_PARENT,
                            GTK_MESSAGE_ERROR,
                            GTK_BUTTONS_CLOSE,
                            user_message);

        gtk_dialog_run(GTK_DIALOG(dialog));

        gtk_widget_destroy(dialog);

        sqlite3_free(error_message);

        sqlite3_free(user_message);
    }

    g_free(sql_command);

    sqlite3_close(db);

    // Reload the list

    project_main_dialog_load_list();

    // Reload issue list

    main_dialog_load_issue_list();

    // Close this dialog

    project_edit_dialog_close();


    return 0;
}
Example #28
0
int issue_new_dialog_save_data()
{
  g_print("issue_new_dialog_save_data()\n");

  GtkTreeIter iter_project;
  GtkTreeIter iter_status;
  GtkTreeIter iter_os;
  GtkTreeIter iter_priority;

  //GtkWidget *text_view = NULL;

  // Check values

  if (g_utf8_strlen(gtk_entry_get_text(GTK_ENTRY(entry_summary)), -1) <= 0) {
    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_issue_new),
                                             GTK_DIALOG_DESTROY_WITH_PARENT,
                                             GTK_MESSAGE_ERROR,
                                             GTK_BUTTONS_CLOSE,
                                             "The summary is needed.");

    gtk_dialog_run(GTK_DIALOG(dialog));

    gtk_widget_destroy(dialog);

    return -1;
  }

  if (g_utf8_strlen(gtk_entry_get_text(GTK_ENTRY(entry_version)), -1) <= 0) {
    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_issue_new),
                                             GTK_DIALOG_DESTROY_WITH_PARENT,
                                             GTK_MESSAGE_ERROR,
                                             GTK_BUTTONS_CLOSE,
                                             "The version is needed.");

    gtk_dialog_run(GTK_DIALOG(dialog));

    gtk_widget_destroy(dialog);

    return -1;
  }

  if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo_project), &iter_project)) {
    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_issue_new),
                                             GTK_DIALOG_DESTROY_WITH_PARENT,
                                             GTK_MESSAGE_ERROR,
                                             GTK_BUTTONS_CLOSE,
                                             "The project is needed.");

    gtk_dialog_run(GTK_DIALOG(dialog));

    gtk_widget_destroy(dialog);

    return -1;
  }

  if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo_priority), &iter_priority)) {
    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_issue_new),
                                             GTK_DIALOG_DESTROY_WITH_PARENT,
                                             GTK_MESSAGE_ERROR,
                                             GTK_BUTTONS_CLOSE,
                                             "The priority is needed.");

    gtk_dialog_run(GTK_DIALOG(dialog));

    gtk_widget_destroy(dialog);

    return -1;
  }

  if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo_os), &iter_os)) {
    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_issue_new),
                                             GTK_DIALOG_DESTROY_WITH_PARENT,
                                             GTK_MESSAGE_ERROR,
                                             GTK_BUTTONS_CLOSE,
                                             "The operating system is needed.");

    gtk_dialog_run(GTK_DIALOG(dialog));

    gtk_widget_destroy(dialog);

    return -1;
  }

  if (!gtk_combo_box_get_active_iter(GTK_COMBO_BOX(combo_status), &iter_status)) {
    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_issue_new),
                                             GTK_DIALOG_DESTROY_WITH_PARENT,
                                             GTK_MESSAGE_ERROR,
                                             GTK_BUTTONS_CLOSE,
                                             "The status is needed.");

    gtk_dialog_run(GTK_DIALOG(dialog));

    gtk_widget_destroy(dialog);

    return -1;
  }

  // Project value

  int project_id;

  GtkTreeModel *project_model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo_project));

  gtk_tree_model_get(project_model, &iter_project, 1, &project_id, -1);

  g_print("Selected Project: %d\n", project_id);

  // Priority value

  int priority_id;

  GtkTreeModel *priority_model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo_priority));

  gtk_tree_model_get(priority_model, &iter_priority, 1, &priority_id, -1);

  g_print("Selected priority: %d\n", priority_id);

  // OS value

  int os_id;

  GtkTreeModel *os_model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo_os));

  gtk_tree_model_get(os_model, &iter_os, 1, &os_id, -1);

  g_print("Selected os: %d\n", os_id);

  // Project value

  gchar *status_id;

  GtkTreeModel *status_model = gtk_combo_box_get_model(GTK_COMBO_BOX(combo_status));

  gtk_tree_model_get(status_model, &iter_status, 1, &status_id, -1);

  g_print("Selected status: %s\n", status_id);

  // Description value

  GtkTextIter iter_start;
  GtkTextIter iter_end;

  gtk_text_buffer_get_start_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view)), &iter_start);

  gtk_text_buffer_get_end_iter(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view)), &iter_end);

  g_print("Descrição: %s\n",
          gtk_text_buffer_get_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view)),
                                   &iter_start,
                                   &iter_end,
                                   FALSE));

  // Mount SQL command

  char *error_message = 0;

  sqlite3 *db = database_open();

  if (db == NULL) {
    g_print("Can't open database: %s\n", sqlite3_errmsg(db));

    sqlite3_close(db);

    return -1;
  }

  gchar *sql_command = g_strdup_printf("INSERT INTO issue "
                                       "(summary, project_id, priority, status, platform, version, description) "
                                       "VALUES (\"%s\", \"%d\", \"%d\", \"%s\", \"%d\", \"%s\", \"%s\")",
                                       gtk_entry_get_text(GTK_ENTRY(entry_summary)),
                                       project_id,
                                       priority_id,
                                       status_id,
                                       os_id,
                                       gtk_entry_get_text(GTK_ENTRY(entry_version)),
                                       gtk_text_buffer_get_text(gtk_text_view_get_buffer(GTK_TEXT_VIEW(text_view)),
                                                                &iter_start,
                                                                &iter_end,
                                                                FALSE));

  g_print("SQL INSERT command: %s\n", sql_command);

  int rc = sqlite3_exec(db, sql_command, NULL, 0, &error_message);

  if (rc != SQLITE_OK) {
    gchar *user_message = g_strdup_printf("Database error: %s\n", error_message);

    GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window_issue_new),
                                             GTK_DIALOG_DESTROY_WITH_PARENT,
                                             GTK_MESSAGE_ERROR,
                                             GTK_BUTTONS_CLOSE,
                                             user_message);

    gtk_dialog_run(GTK_DIALOG(dialog));

    gtk_widget_destroy(dialog);

    sqlite3_free(error_message);

    sqlite3_free(user_message);
  }

  g_free(sql_command);

  sqlite3_close(db);

  // Reload the list

  main_dialog_load_issue_list();

  // Close this dialog

  issue_new_dialog_close();


  return 0;
}
Example #29
0
main()
{
  register long k;
  unsigned char t, incode[2], ans[2], yn[2], again[2];
  unsigned char timestr[30], datetime[15], intime[20];
  long systime;
  long pid, status;

  putenv("_=transac_output");
  chdir(getenv("HOME"));

  open_all();

  fix(transac_output);
  sd_screen_off();
  sd_clear_screen();
  sd_text(transac_output);
  sd_screen_on();
  
  sd_prompt(&fld[0], 0);

  while(1)
  {
    for (k = 15; k <= 20; k++)
    {
      sd_cursor(0, k, 1);
      sd_clear_line();
    }
    while(1)
    {
      memset(incode, 0, 2);

      t = sd_input(&fld[0], 0, 0, incode, 0);
      if(t == EXIT)      leave();
      if(t == UP_CURSOR) continue;

      if (!*incode) break;

      *incode = tolower(*incode);
        
      if (*incode != 'c' && *incode != 'd' &&
          *incode != 'p' && *incode != 'e')
      {
        eh_post(ERR_CODE, incode);
        continue;
      }
      break;
    }
    if (*incode == 'p')
    {
      if (sp->sp_to_flag != 'y' && sp->sp_to_flag != 'b')
      {
        eh_post(LOCAL_MSG, "No Transaction File Feature");
        continue;
      }
      sd_wait();
      
      if((pid = fork()) == 0)
      {
        ss_close();
        execlp("transac_short_rpt", "transac_short_rpt", 0);
        exit(1);
      }
      else pid = wait(&status);

      if (pid > 0 && !status) eh_post(ERR_CONFIRM, "Short Printing");
      else eh_post(CRASH_MSG, "tranac_short_rpt failed");
      continue;
    }
    if (*incode == 'e')
    {
      if (sp->sp_to_flag != 'y' && sp->sp_to_flag != 'b')
      {
        eh_post(LOCAL_MSG, "No Transaction File Feature");
        continue;
      }
      while(1)
      {
        memset(ans, 0, 2);                /* are you sure response           */
        memset(yn, 0, 2);
        
        t = sd_input(&fld[5],sd_prompt(&fld[5],0), 0, yn, 0);
        if (t == EXIT)      leave();
        if (t == UP_CURSOR) break;

        *ans = code_to_caps(*yn);

        if(*ans != 'y' && *ans != 'n')
        {
          eh_post(ERR_YN,0);
          continue;
        }
        if(*ans == 'y')
        {
          eh_post(LOCAL_MSG, "Purging Transaction File");

          database_open();
          xt_open();
          transaction_setkey(0);
          
          begin_work();
          while (!transaction_next(&xt, LOCK)) 
          {
            transaction_delete();
            commit_work();
            begin_work();
          }
          commit_work();
          xt_close();
          database_close();
          
          sp->sp_to_count = 0;
          
          eh_post(PURGE_TRANS, 0);
        }
        break;
      }                                   /* end while(1)                    */
      continue;
    }                                     /* end if                          */
    if (*incode == 'c' || *incode == 'd')
    {
      if (sp->sp_to_mode != 0x20 || sp->sp_oi_mode == *incode) /* F071395    */
      {
        eh_post(LOCAL_MSG, "Device/Port In Use");          
        continue;
      }
    }
    if (*incode == 'd')
    {
      while(1)
      {
        memset(ans, 0, 2);
        memset(yn, 0, 2);
        
        t = sd_input(&fld[1],sd_prompt(&fld[1],0), 0, yn, 0);
        if (t == EXIT)     leave();
        if (t == UP_CURSOR) break;

        *ans = code_to_caps(*yn);
        
        if(*ans != 'y' && *ans != 'n')
        {
          eh_post(ERR_YN,0);
          continue;
        }
        break;
      }
      if (t == UP_CURSOR) continue;
      if (*ans == 'n') continue;          /* abort diskette in               */
    }
    while(1)
    {
      memset(again, 0, 2);                /* retransmit response             */
      memset(yn, 0, 2);
      
      t = sd_input(&fld[2],sd_prompt(&fld[2],0), 0, yn, 0);
      if (t == EXIT)     leave();
      if (t == UP_CURSOR) break;

      *again = code_to_caps(*yn);
      if (*again != 'y' && *again != 'n')
      {
        eh_post(ERR_YN, 0);
        continue;
      }
      break;
    }
    if (t == UP_CURSOR) continue;

    while(1)
    {
      memset(ans, 0, 2);                  /* purge response                  */
      memset(yn, 0, 2);
      
      t = sd_input(&fld[3],sd_prompt(&fld[3],0), 0, yn, 0);
      if(t == EXIT)      leave();
      if(t == UP_CURSOR) break;

      *ans = code_to_caps(*yn);
      if(*ans != 'y' && *ans != 'n')
      {
        eh_post(ERR_YN,0);
        continue;
      }
      break;
    }
    if(*ans == 'y')
    {
      sd_prompt(&fld[4],0);
      systime = time(0) - sp->sp_purge_window;
      strcpy(timestr, ctime(&systime));
      timestr[24] = 0;
      sd_cursor(0,18,25);
      sd_text("Default Date/Time:");
      sd_cursor(0,18,54);
      sd_text(&timestr[4]);
      sd_cursor(0,20,25);
      sd_text("Format is:");
      sd_cursor(0,20,54);
      sd_text("mm/dd/yyyy hh:mm:ss");

      while(1)
      {
        t = sd_input(&fld[4], 0, 0, intime, 0);
        if(t == EXIT)      leave();
        if(t == UP_CURSOR) break;

        if(*intime != 0)
        {
          if(!time_convert(intime, &systime))
          {
            eh_post(ERR_TIME, intime);
            continue;
          }
        }
        eh_post(LOCAL_MSG, "Purging Orders");

        if ((pid = fork()) == 0)
        {
          sprintf(datetime, "%d", systime);
          ss_close();
          execlp("order_purge", "order_purge", datetime, 0);
          exit(1);
        }
        else pid = wait(&status);

        if (pid > 0 && !status) eh_post(ERR_CONFIRM, "Order purge");
        else eh_post(CRASH_MSG, "order_purge failed");
        break;
      }
      if (t == UP_CURSOR) continue;
    }
    if (*again == 'n')                    /* transmit current file           */
    {
      eh_post(LOCAL_MSG, "Extracting Transactions");

      if ((pid = fork()) == 0)
      {
        ss_close();
        execlp("transac_copy", "transac_copy", 0);
        exit(1);
      }
      else pid = wait(&status);

      if (pid < 0 || status)
      {
        eh_post(LOCAL_MSG, "transac_copy failed");
        continue;
      }
      eh_post(ERR_CONFIRM, "Transaction File");
    }
/*
 *  Start Transaction Output Operations
 */
    if (*incode == 'c')                   /* comm output                     */
    {
      if (sp->sp_commo_trans_out == 'n')
      {
        eh_post(LOCAL_MSG, "No Communication Feature");
        continue;
      }
      eh_post(LOCAL_MSG, "Sending Transactions");
      sd_close();

      sp->sp_to_mode = 'c';
      
      if (fork() == 0)
      {
        if (sp->sp_commo_trans_out == 'k') 
        {
          ss_close();
          execlp("com_kermit_out", "com_kermit_out", 0);
        }
        else 
        {
          ss_close();
          execlp("comsend",  "comsend",  0);
        }
        ss_open();
        sd_open();
        sp->sp_to_mode = 0x20;
        eh_post(LOCAL_MSG, "Program Not Found");
        continue;
      }
      pid = wait(&status);
      sp->sp_to_mode = 0x20;
      sd_open();
      
      if (pid < 0 || status) 
      {
        eh_post(LOCAL_MSG, "Communications Failed");
      }
      else eh_post(ERR_CONFIRM, "Transactions Output");
      continue;
    }
    if (*incode == 'd')
    {
      sd_wait();

      sp->sp_to_mode = 'd';

      sprintf(message, command);
      status = system(message);
      sp->sp_to_mode = 0x20;
      
      if (status) eh_post(LOCAL_MSG, "Diskette output failed");
      else eh_post(ERR_CONFIRM, "Tranaction Output");
    }
  }
}