Ejemplo n.º 1
0
int pat_info() {
	FILE *fp;
	fp = fopen("patient.txt", "rb+");
	if(fp == NULL) {
		perror(" file cannot be accessed:");
		return errno;
	}
	int op, n;
	char err[32];
	while(1) {
		printpatmenu();
		b:printf("\n\n\n\tEnter the option number:");
		n = scanf("%d", &op);
		if(n == 0) {
			op = 7;
			readline(err, 32);
		}
		switch(op) {
			case 1:system("clear");
				printheader();
				new_pat(fp);
				break;
			case 2:system("clear");
				printheader();
				edit_pat(fp);
				break;
			case 3:system("clear");
				printheader();
				search_pat(fp);
				break;
			case 4:system("clear");
				printheader();
				list_pat(fp);
				break;
			case 5:system("clear");
				printheader();
				close_pat(fp);
				break;
			case 6:system("clear");
				fclose(fp);
				printheader();
				printmainmenu();
				break;
			default:printf("\n\n\t***Invalid entry***");
				goto b;		
				break;		
		}
	}
	return 0;
}
Ejemplo n.º 2
0
/*
  function to handle files string operation
*/
int strops_files(void *arg){
    int rc = 0;
    struct strops_args *ptr = (struct strops_args *)arg;
    struct strops_args *kptr = NULL;

    /*check validation of input */
    rc = isInputValid(ptr);
    if(rc < 0) 
        goto out;

    /*copy_from_user into kernel */
    kptr = (struct strops_args *)kmalloc(sizeof(struct strops_args), GFP_KERNEL);
    if(IS_ERR(kptr)){
        rc = -ENOMEM;
        goto out;
    }
    if(copy_from_user(kptr, ptr, sizeof(struct strops_args))){
        rc = -EFAULT;
        goto free_kptr;
    }

    /* begin file strings operation mode*/
    rc = search_pat(kptr);
    if(rc < 0)
        goto free_kptr;

    if(kptr->flag == 1 || kptr->flag == 2){
        if(kptr->res_len == 0){
            printk("No found pattern; Operation quit.\n");
            goto free_kptr;
        }
        rc = write_pat(kptr, 0);
        if(rc < 0)
            goto free_kptr;	
    }

    if(copy_to_user(ptr, kptr, sizeof(struct strops_args))){
        rc = -EFAULT;
        goto free_kptr;
    }
 free_kptr:
    kfree(kptr);
 out:
    return rc;
}