Exemplo n.º 1
0
//move file from NT to our file system
int importfile(char *fname,char *ntfname)
{
    FILE *f;
    int len;
    char *buf;
    minifile_t file;
    if((f = fopen(ntfname,"rb")) == NULL) {
        printf("%s not found\n",ntfname);
        return -1;
    }
    fseek(f,0,SEEK_END);
    len = ftell(f);
    fseek(f,0,SEEK_SET);
    buf = malloc(len);
    assert(fread(buf,len,1,f) == 1);
    fclose(f);
    file = minifile_creat(fname);
    if(file == NULL) {
        printf("Couldn't create file %s in import!\n",fname);
        return -1;
    }
    if(minifile_write(file,buf,len) == -1) {
        printf("did not complete importing :(.\n");
        minifile_close(file);
        minifile_unlink(fname);
    } else minifile_close(file);
    free(buf);
    return 0;
}
Exemplo n.º 2
0
int C(int* arg) {
  minifile_t file;

  file = minifile_creat("foo.txt");
  if (!file) {
    printf("C: minifile_creat failed\n");
    return -1;
  }

  if (minifile_close(file) == -1) {
    printf("C: minifile_close failed\n");
    return -1;
  }

  if (minifile_unlink("foo.txt") == -1) {
    printf("C: minifile_unlink failed\n");
    return -1;
  }

  printf("C: exiting\n");
  return 0;
}
Exemplo n.º 3
0
int test(int* arg) {
  minifile_t file;
  char** file_list;
  char* data;
  char buff[10];

  data = "hello"; 

  file = minifile_creat("foo.txt");
  if (!file) {
    printf("minifile_creat failed\n");
    return -1;
  }

  file_list = minifile_ls("/foo.txt");
  if (!file_list) {
    printf("ls failed\n");
    return -1;
  }

  if (!strcmp(file_list[0], "foo.txt")) {
    printf("ls failed\n");
    return -1;
  }

  if (minifile_write(file, data, 6) == -1) {
    printf("write failed\n");
    return -1;
  }
 
  if (minifile_close(file) == -1) {
    printf("minifile_close failed\n");
    return -1;
  }

  file = minifile_open("foo.txt", "r");
  if (!file) {
    printf("minifile_open failed\n");
    return -1;
  }
    
  if (minifile_read(file, buff, 6) == -1) {
    printf("minifile_read failed\n");
    return -1;
  }

  if (strcmp(buff, data)) {
    printf("minifile_read failed\n");
    return -1;
  }

  if (minifile_close(file) == -1) {
    printf("minifile_close failed\n");
    return -1;
  }

  if (minifile_unlink("foo.txt") == -1) {
    printf("minifile_unlink failed\n");
    return -1;
  }

  printf("all tests pass\n");
  return 0;
}
Exemplo n.º 4
0
int shell(int *g) {
	char command[BUFFER_SIZE];
	char func[BUFFER_SIZE],arg1[BUFFER_SIZE],arg2[BUFFER_SIZE];
	int i;

	minifile_cd("/"); //cd to root (will also initialize the system if necessary)
	printf("%s\n", IDstring);

	while(1) {
		memset(command,'\0',BUFFER_SIZE);
		memset(func,'\0',BUFFER_SIZE);
		memset(arg1,'\0',BUFFER_SIZE);
		memset(arg2,'\0',BUFFER_SIZE);
		put_prompt();
		gets(command);
		//extract first three strings in command (delimited by spaces)
		sscanf(command,"%s %s %s",func,arg1,arg2);
		if(strcmp(func,"help") == 0)
			help_screen();
		else if(strcmp(func,"cd") == 0)
			minifile_cd(arg1);
		else if(strcmp(func,"ls") == 0 || strcmp(func,"dir") == 0) {
		  char **files = minifile_ls(arg1);
		  printf("File listing for %s\n", arg1);
		  for(i = 0; files != NULL && files[i] != NULL; ++i) {
		    printf("\t%s\n",files[i]);
		    free(files[i]);
		  }
		  if(files != NULL)
		    free(files);
		} else if(strcmp(func,"pwd") == 0)
		        printf("%s\n", minifile_pwd());
		else if(strcmp(func,"mkdir") == 0)
		        minifile_mkdir(arg1);
		else if(strcmp(func,"rmdir") == 0)
			minifile_rmdir(arg1);
		else if(strcmp(func,"rm") == 0 || strcmp(func,"del") == 0)
			minifile_unlink(arg1);
		else if(strcmp(func,"import") == 0)
			importfile(arg1,arg2);
		else if(strcmp(func,"export") == 0)
			exportfile(arg1,arg2);
		else if(strcmp(func,"type") == 0)
			typefile(arg1);
		else if(strcmp(func,"input") == 0)
			inputfile(arg1);
		else if(strcmp(func,"cp") == 0 || strcmp(func,"copy") == 0)
			copy(arg1,arg2);
		else if(strcmp(func,"mv") == 0 || strcmp(func,"move") == 0)
			move(arg1,arg2);
		else if(strcmp(func,"whoami") == 0)
			printf("You are minithread %d, running our shell\n",minithread_id());
		else if(strcmp(func,"exit") == 0)
			break;
		else if(strcmp(func,"doscmd") == 0)
			system(command+7);
		else if(strcmp(func,"exec") == 0) { //this is not efficient -- just for fun!!!
			char cmdline[BUFFER_SIZE];
			memset(cmdline,'\0',BUFFER_SIZE);
			strcpy(cmdline,"tmp0000~.exe ");
			strcpy(cmdline+13,command+5+strlen(arg1));
			exportfile(arg1,"tmp0000~.exe");
			system(cmdline);
			system("rm tmp0000~.exe");
		}
		else printf("%s: Command not found\n",func);
	}
	printf("Good-bye :-)\n");
	return 0;
}
Exemplo n.º 5
0
//this is terribly, extremely inefficient, please don't write real code that
//does this!
int move(char *fname,char *fname2) {
	if(copy(fname,fname2) != -1)
		minifile_unlink(fname);
	return 0;
}