Esempio n. 1
0
int16_t
parse_cmd_fs_list (char *cmd, char *output, uint16_t len)
{
  char name[FS_FILENAME + 1];

  if (cmd[0] != 0x05) 
    {
      /* first function entry */
      cmd[0] = 0x05;		/* set magic byte ... */
      cmd[1] = 0x00;

      return ECMD_AGAIN(snprintf_P(output, len, PSTR("name  :inode :size\n"
						     "----------------------")));
    }
  else
    {
      if (fs_list (&fs, NULL, name, cmd[1] ++) != FS_OK)
	return ECMD_FINAL_OK;		/* no repare, out. */
      
      name[FS_FILENAME] = 0;

      fs_inode_t inode = fs_get_inode (&fs, name);
      fs_size_t size = fs_size (&fs, inode);

      return ECMD_AGAIN(snprintf_P(output, len, PSTR("%-6s:0x%04x:0x%04x"),
			            name, inode, size));
    }
}
Esempio n. 2
0
File: main.c Progetto: UIKit0/flux
int main(int argc, char **argv) {
	char *name, *path, list[1000];
	size_t i, l = 0;
	uint64_t dir;

	if (argc == 1) {
		path = (char*) getenv("PWD");
	}
	else {
		path = argv[1];
	}
	
	dir = fs_find(0, path);
	
	if (!dir) {
		fprintf(stderr, "%s: ", path_simplify(path));
		perror(NULL);
		abort();
	}

	list[0] = '\0';

	for (i = 0;; i++) {
		name = fs_list(dir, i);

		if (name) {
			strlcat(list, name, 1000);
			l += 8 * ((strlen(name) / 8) + 1);
			if (l > 48) {
				strlcat(list, "\n", 1000);
				l = 0;
			}
			else {
				strlcat(list, "\t", 1000);
			}
			free(name);
		}
		else {
			if (errno == ENOTDIR) {
				fprintf(stderr, "%s: ", path);
				perror(NULL);
				abort();
			}

			printf("%s", list);
			if (l) printf("\n");
			return EXIT_SUCCESS;
		}
	}

	return 0;
}
Esempio n. 3
0
void ls_command(int n, char *argv[]){

	fio_printf(1, "\r\n");
	fs_list("/romfs/");

}