Ejemplo n.º 1
0
static void print_file(xar_t x, xar_file_t f) {
	if( List && Verbose ) {
		char *size = xar_get_size(x, f);
		char *path = xar_get_path(f);
		char *type = xar_get_type(x, f);
		char *mode = xar_get_mode(x, f);
		char *user = xar_get_owner(x, f);
		char *group = xar_get_group(x, f);
		char *mtime = xar_get_mtime(x, f);
		printf("%s %8s/%-8s %10s %s %s\n", mode, user, group, size, mtime, path);
		free(size);
		free(type);
		free(path);
		free(mode);
		free(user);
		free(group);
		free(mtime);
	} else if( List || Verbose ) {
		char *path = xar_get_path(f);
		
		if (xar_path_issane(path) == 0) 
			printf("Warning, archive contains invalid path: %s\n", path);
		else 
			printf("%s\n", path);
			
		free(path);
	}
}
Ejemplo n.º 2
0
static void print_file(xar_t x, xar_file_t f) {
	if( List && Verbose ) {
		char *size = xar_get_size(x, f);
		char *path = xar_get_path(f);
		char *type = xar_get_type(x, f);
		char *mode = xar_get_mode(x, f);
		char *user = xar_get_owner(x, f);
		char *group = xar_get_group(x, f);
		char *mtime = xar_get_mtime(x, f);
		printf("%s %8s/%-8s %10s %s %s\n", mode, user, group, size, mtime, path);
		free(size);
		free(type);
		free(path);
		free(mode);
		free(user);
		free(group);
		free(mtime);
	} else if( List || Verbose ) {
		char *path = xar_get_path(f);
		printf("%s\n", path);
		free(path);
	}
}
Ejemplo n.º 3
0
Archivo: pkg_toc.c Proyecto: nn/fs-pkg
int pkg_toc_process(const char *path, const char *toc) {
   u_int32_t   pkgid;
   xar_t       x;
   xar_iter_t  i;
   xar_file_t  f;
   struct vfs_fake_stat sb;

   if (!(x = xar_open(path, READ))) {
      Log(LOG_ERROR, "failed opening package %s", path);
      return EXIT_FAILURE;
   }

   xar_register_errhandler(x, pkg_xar_err_callback, NULL);

   if (!(i = xar_iter_new())) {
      Log(LOG_ERROR, "failed getting new xar iter in pkg %s", path);
      return EXIT_FAILURE;
   }

   db_pkg_remove(path);
   pkgid = db_pkg_add(path);
   fprintf(stderr, "id: %d\n", pkgid);

   for (f = xar_file_first(x, i); f; f = xar_file_next(i)) {
      char       *size = xar_get_size(x, f);
      char       *xpath = xar_get_path(f);
      char       *xtype = xar_get_type(x, f);
      char       *mode = xar_get_mode(x, f);
      char       *user = xar_get_owner(x, f);
      char       *group = xar_get_group(x, f);
      char       *mtime = xar_get_mtime(x, f);
      const char *offset;
      char        type = 'u';
/*    *	                  (f)ile, (d)irectory, (l)ink, (p)ipe
      *                    f(i)fo, (c)haracter, (b)lock, (s)ocket,
      *                   (u)ndefined
 */
      if (!strcasecmp(xtype, "file")) {
         xar_prop_get(f, "data/offset", &offset);
         type = 'f';
      } else {
         offset = "0";
         if (!strcasecmp(xtype, "directory"))
            type = 'd';
         else if (!strcasecmp(xtype, "hardlink"))
            type = 'l';
         else if (!strcasecmp(xtype, "symlink"))
            type = 'l';
      }

#if	0
      /*
       * what we gonna do with target? 
       */
      printf("%s: %s %8s/%-8s %10s %s %s @ %s\n", xtype, mode, user,
             group, size, mtime, xpath, offset);

      db_query(QUERY_INT,
               "INSERT INTO files (package, path, type, owner, group, size, offset, ctime, mode) VALUES (%lu, '%s', '%s', %s, %s, %s, %s, %s, %s, %s);",
               pkgid, xpath, type, user, group, size, offset, mtime);
#endif
      free(mtime);
      free(group);
      free(user);
      free(mode);
      free(xtype);
      free(xpath);
      free(size);
   }
   return EXIT_SUCCESS;
}