示例#1
0
文件: pwdb.c 项目: druzac/pwdb
int
cmd_interactive(struct arguments *args)
{
    int rc;
    struct db *db;
    char pass[MAX_PASS_LENGTH + 1];

    rc = -1;
    db = NULL;

    if (!args->dbfile) {
        fprintf(stderr, "missing db path\n");
        goto out;
    }

    if (get_pass(PASS_PROMPT, pass, MAX_PASS_LENGTH + 1, stdin)) {
        fprintf(stderr, "%s\n", GET_PASS_FAIL);
        goto out;
    }

    if (!(db = pwsdb_open(pass, args->dbfile))) {
        fprintf(stderr, "couldn't open db\n");
        goto out;
    }

    rc = pwcurs_start(args->dbfile, pass, db);

    print_db(db);

 out:
    destroy_db(db);
    free(db);
    return rc;
}
示例#2
0
文件: pwdb.c 项目: druzac/pwdb
int
cmd_list(struct arguments *args)
{
    int rc;
    struct db *db;
    char pass[MAX_PASS_LENGTH + 1];

    rc = -1;
    db = NULL;

    if (!args->dbfile) {
        fprintf(stderr, "%s\n", NO_DB_FILE);
        goto out;
    }

    if (get_pass(PASS_PROMPT, pass, MAX_PASS_LENGTH + 1, stdin)) {
        fprintf(stderr, "%s\n", GET_PASS_FAIL);
        goto out;
    }

    if (!(db = pwsdb_open(pass, args->dbfile))) {
        fprintf(stderr, "bad list\n");
        goto out;
    }

    print_db(db);

    rc = 0;
 out:
    destroy_db(db);
    return rc;
}
示例#3
0
文件: dbio.c 项目: McUsr/Index-2.0
/* heavily outdated */
int main(int argc, char **argv)
{
	wchar_t *database = mbstowcs_alloc("test_file");

/*	if (database == NULL)
		memerrmsg("main in dbio.c");
*/
	/* REMEMBER: set the INDEXDIR environment variable. */
	setProgramName(*argv);
	findUtf8OrDie();
	set_dbase_dir();
	/* Testing with book.idx and db, renamed, then edited sending output to
	   stdout, so I can compare! */
	fprintf(stderr, "Reading indexfile\n");
	read_idxfile(database);
	fprintf(stderr, "Reading databasefile\n");
	read_database(database);
	print_db(database, NULL);
	dbmodified = 1;
	save_db();
	release_idx();
	release_db();
	return 0;
}
示例#4
0
int main (int argc, char *argv[]) {
  if (argc < 2) {
    aiuto ();
    return (0);
  }
  int i;
  int azione[argc];
  char opzione[argc][255];
  int azioni = -1;
  int opzioni = -1;
  int opzioni_confronto = 0;
  for (i = 1; i < argc; i++) {
    if (strcmp (argv[i], "-u") == 0 || strcmp (argv[i], "--update") == 0) {
      azioni++;
      azione[azioni] = AGGIORNA;
    }
    else if (strcmp (argv[i], "-l") == 0 || strcmp (argv[i], "--list") == 0) {
      azioni++;
      azione[azioni] = LSPORTS;
    }
    else if (strcmp (argv[i], "-d") == 0 || strcmp (argv[i], "--diff") == 0) {
      azioni++;
      azione[azioni] = DIFFERENZE;
    }
    else if (strcmp (argv[i], "-p") == 0 || strcmp (argv[i], "--updated") == 0) {
      azioni++;
      azione[azioni] = AGGIORNATI;
    }
    else if (strcmp (argv[i], "-v") == 0 || strcmp (argv[i], "--version") == 0)	{
      azioni++;
      azione[azioni] = VERSIONE;
    }
    else if (strcmp (argv[i], "-h") == 0 || strcmp (argv[i], "--help") == 0) {
      azioni++;
      azione[azioni] = AIUTO;
    }
    else if (strcmp (argv[i], "--no-favorite-repo") == 0) {
      opzioni_confronto += NO_REPO;
    }
    else if (strcmp (argv[i], "--no-favorite-version") == 0) {
      opzioni_confronto += NO_VERSION;
    }
    else {
      opzioni++;
      strcpy (opzione[opzioni], argv[i]);
    }
  }
  
  for (i = 0; i <= azioni; i++)	{
    switch (azione[i]) {
    case AGGIORNA:
      if (opzioni < 0) {
	aggiorna_ports ();
      }
      else {
	int j;
	for (j = 0; j <= opzioni; j++) {
	  aggiorna_collezione (opzione[j]);
	}
      }
      break;
    case LSPORTS:
      print_db (lsports ());
      break;
    case DIFFERENZE:
      confronta (lspacchetti (), lsports (), DIFFERENZE, opzioni_confronto);
      break;
    case AGGIORNATI:
      confronta (lspacchetti (), lsports (), AGGIORNATI, opzioni_confronto);
      break;
    case VERSIONE:
      versione();
      break;
    case AIUTO:
      aiuto ();
      break;
    }
  }
  return (0);
}
示例#5
0
/**
@brief Runs the program and calls funcitons from the headerfile lagerhantering.h
@return always 0
 */
int main() {
  bool should_continue = true;
  db_t db1 = malloc(sizeof(struct db_t));
  db1->amount = 0;
  db_t backup;
  int i = 0;
  while (should_continue) { 
    print_menu();
    switch (ask_char_question("What do you want to do?", "AaRrEeUuPpQq")){
      // Add
    case 'a':
      puts("You chose 'Add'");
      if (i > 0){
      free_db(backup);
      }
      backup = db_copy(db1);
      i++;
      add_item(db1);
      break;

      // Remove
    case 'r':
      puts("You chose 'Remove'");
      if(i>0){
      free_db(backup);
      }     
      backup = db_copy(db1);
      i++;
      remove_item(db1);
      break;
      
      // Edit
    case 'e':
      puts("You chose 'Edit'");
      if (i>0){
      free_db(backup);
      }
      backup = db_copy(db1);
      i++;
      edit_item(db1);
      break;
      
      // Undo
    case 'u':
      puts("You chose 'Undo'");
      if(i>0){
      free_db(db1);
      } 
     db1 = db_copy(backup);
      i++;
      // backup = db_copy(db1);
      break;
      
      // Print
    case 'p':
      puts("You chose 'Print'");
      print_db(db1);
      break;
      
      // Quit
    case 'q':
      if (ask_char_question("Do you wish to exit the programme?", "YyNn") == 'y') {
	puts("Goodbye!");
	should_continue  = false;
	free_db(db1);
	if(i > 0){
	  free_db(backup);
	}
	/*	if(db1 != NULL){
	free_db(db1);
	}
	else
	  free(db1);
	if (backup != NULL) {
	  free_db(backup);
	  }
	else if(backup == NULL){
	  free(backup);
	  }*/ 
	}
      break;
    default:
      puts("Did not enter any valid command, please try again.\n");
    }
  }
  return 0;
}
示例#6
0
int
main (int argc, char *argv[])
{
  if (argc < 2)
    {
      aiuto ();
      return (0);
    }
  int i;
  int azione[argc];
  char opzione[argc][255];
  char opzione_p[argc][255];
  char opzione_d[argc][255];
  char opzione_l[argc][255];
  char opzione_r[argc][255];
  char opzione_t[argc][255];
  int azioni = -1;
  int opzioni = -1;
  int opzioni_p = -1;
  int opzioni_d = -1;
  int opzioni_l = -1;
  int opzioni_r = -1;
  int opzioni_t = -1;
  int opzioni_confronto = 0;
  int controlla_dipendenze = 0;
  int all = 0;
  int rebuild_cache = 0;
  for (i = 1; i < argc; i++)
    {
      if (strcmp (argv[i], "-u") == 0 || strcmp (argv[i], "--update") == 0)
	{
	  azioni++;
	  azione[azioni] = AGGIORNA;
	}
      else if (strcmp (argv[i], "-l") == 0 || strcmp (argv[i], "--list") == 0)
	{
	  azioni++;
	  azione[azioni] = LSPORTS;
	}
      else if (strcmp (argv[i], "-d") == 0 || strcmp (argv[i], "--diff") == 0)
	{
	  azioni++;
	  azione[azioni] = DIFFERENZE;
	}
      else if (strcmp (argv[i], "-p") == 0
	       || strcmp (argv[i], "--updated") == 0)
	{
	  azioni++;
	  azione[azioni] = AGGIORNATI;
	}
      else if (strcmp (argv[i], "-v") == 0
	       || strcmp (argv[i], "--version") == 0)
	{
	  azioni++;
	  azione[azioni] = VERSIONE;
	}
      else if (strcmp (argv[i], "-h") == 0 || strcmp (argv[i], "--help") == 0)
	{
	  azioni++;
	  azione[azioni] = AIUTO;
	}
      else if (strcmp (argv[i], "--no-favorite-repo") == 0)
	{
	  opzioni_confronto += NO_REPO;
	}
      else if (strcmp (argv[i], "--no-favorite-version") == 0)
	{
	  opzioni_confronto += NO_VERSION;
	}
      else if (strcmp (argv[i], "--no-deps") == 0)
	{
	  controlla_dipendenze = NODEPS;
	}
      else if (strcmp (argv[i], "--all") == 0)
	{
	  all = 1;
	}
      else if (strcmp (argv[i], "-U") == 0)
	{
	  azioni++;
	  azione[azioni] = AGGIORNA_P;
	}
      else if (strcmp (argv[i], "-D") == 0)
	{
	  azioni++;
	  azione[azioni] = DIPENDENZE;
	}
      else if (strcmp (argv[i], "-R") == 0)
	{
	  azioni++;
	  azione[azioni] = RIMUOVI;
	}
      else if (strcmp (argv[i], "-T") == 0)
	{
	  azioni++;
	  azione[azioni] = DEPENDENT;
	}
      else if (strcmp (argv[i], "--cache") == 0)
	{
	  azioni++;
	  rebuild_cache = 1;
	}
      else
	{
	  if (azione[azioni] == AGGIORNA)
	    {
	      opzioni++;
	      strcpy (opzione[opzioni], argv[i]);
	    }
	  else if (azione[azioni] == AGGIORNA_P)
	    {
	      opzioni_p++;
	      strcpy (opzione_p[opzioni_p], argv[i]);
	    }
	  else if (azione[azioni] == DIPENDENZE)
	    {
	      opzioni_d++;
	      strcpy (opzione_d[opzioni_d], argv[i]);
	    }
	  else if (azione[azioni] == LSPORTS)
	    {
	      opzioni_l++;
	      strcpy (opzione_l[opzioni_l], argv[i]);
	    }
	  else if (azione[azioni] == RIMUOVI)
	    {
	      opzioni_r++;
	      strcpy (opzione_r[opzioni_r], argv[i]);
	    }
	  else if (azione[azioni] == DEPENDENT)
	    {
	      opzioni_t++;
	      strcpy (opzione_t[opzioni_t], argv[i]);
	    }
	}
    }

  if (azioni < 0)
    {
      aiuto ();
      return (0);
    }
  if (parse_ileniarc () != 0)
    return (1);

  repository = build_repolist ();
  if (rebuild_cache)
    {
      FILE *file;
      if ((file = fopen (CACHE, "w")))
	fclose (file);
    }
  ports = lsports ();
  pacchetti = lspacchetti ();

  for (i = 0; i <= (azioni + rebuild_cache); i++)
    {
      switch (azione[i])
	{
	case DIPENDENZE:
	  if (opzioni_d != -1)
	    {
	      int j;
	      for (j = 0; j <= opzioni_d; j++)
		{
		  stampa_dipendenze (opzione_d[j]);
		}
	    }
	  else
	    {
	      printf ("pacchetto\n");
	    }
	  break;
	case AGGIORNA_P:
	  if (opzioni_confronto)
	    opzioni = opzioni_confronto * controlla_dipendenze;
	  else
	    opzioni = controlla_dipendenze;
	  if (opzioni_p != -1)
	    {
	      int j;
	      for (j = 0; j <= opzioni_p; j++)
		{
		  aggiorna_pacchetto (opzioni, opzione_p[j]);
		}
	    }
	  else
	    {
	      aggiorna_pacchetti (opzioni);
	    }
	  break;
	case AGGIORNA:
	  if (opzioni < 0)
	    {
	      aggiorna_ports ();
	    }
	  else
	    {
	      int j;
	      for (j = 0; j <= opzioni; j++)
		{
		  aggiorna_collezione (opzione[j]);
		}
	    }
	  break;
	case LSPORTS:
	  if (opzioni_l == -1)
	    print_db (ports);
	  else
	    {
	      struct db *p = NULL;
	      int j;
	      for (j = 0; j <= opzioni_l; j++)
		{
		  p = cerca (opzione_l[j], ports);
		  print_db (p);
		}
	    }
	  break;
	case DIFFERENZE:
	  confronta (pacchetti, ports, DIFFERENZE, opzioni_confronto, 1);
	  break;
	case RIMUOVI:
	  if (opzioni_r != -1)
	    {
	      int j;
	      for (j = 0; j <= opzioni_r; j++)
		{
		  pkgrm (opzione_r[j], controlla_dipendenze, all);
		}
	    }
	  else
	    {
	      printf ("package(s)\n");
	    }
	  break;
	case DEPENDENT:
	  if (opzioni_t != -1)
	    {
	      int j;
	      for (j = 0; j <= opzioni_t; j++)
		{
		  stampa_dipendenti (opzione_t[j], all);
		}
	    }
	  else
	    {
	      printf ("package(s)\n");
	    }
	  break;
	case AGGIORNATI:
	  confronta (pacchetti, ports, AGGIORNATI, opzioni_confronto, 1);
	  break;
	case VERSIONE:
	  versione ();
	  break;
	case AIUTO:
	  aiuto ();
	  break;
	}
    }
  return (0);
}