entry.c 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. #include "entry.h"
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <dirent.h>
  5. #include <string.h>
  6. void os_entries_init(os_entries_t* os)
  7. {
  8. int i;
  9. os->n=0;
  10. for(i=0; i<16; i++)
  11. {
  12. strcpy(os->entries[i].name, "");
  13. strcpy(os->entries[i].location, "");
  14. strcpy(os->entries[i].kernel, "");
  15. strcpy(os->entries[i].initrd, "");
  16. strcpy(os->entries[i].rootfs, "");
  17. strcpy(os->entries[i].append, "");
  18. }
  19. }
  20. void os_entries_add(os_entries_t* os, json_object* obj)
  21. {
  22. printf("New\n");
  23. json_object_object_foreach(obj, key, val)
  24. {
  25. printf(" %s\n", key);
  26. if(!strcmp(key, "name")) strcpy(os->entries[os->n].name, json_object_get_string(val));
  27. if(!strcmp(key, "location")) strcpy(os->entries[os->n].location, json_object_get_string(val));
  28. if(!strcmp(key, "kernel")) strcpy(os->entries[os->n].kernel, json_object_get_string(val));
  29. if(!strcmp(key, "rootfs")) strcpy(os->entries[os->n].rootfs, json_object_get_string(val));
  30. if(!strcmp(key, "initrd")) strcpy(os->entries[os->n].initrd, json_object_get_string(val));
  31. if(!strcmp(key, "append")) strcpy(os->entries[os->n].append, json_object_get_string(val));
  32. }
  33. if(strlen(os->entries[os->n].name) && strlen(os->entries[os->n].location) &&
  34. strlen(os->entries[os->n].kernel) && strlen(os->entries[os->n].rootfs))
  35. os->n++;
  36. }
  37. int os_entries_parse(os_entries_t* os, const char* file)
  38. {
  39. int n,i=0;
  40. json_object* obj = json_object_from_file(file), *iter;
  41. if(!obj)
  42. {
  43. fprintf(stderr, "Error bad file (%s)\n", file);
  44. return -1;
  45. }
  46. json_object_object_get_ex(obj, "list", &iter);
  47. n=json_object_array_length(iter);
  48. for(i=0; i<n; i++)
  49. {
  50. os_entries_add(os, json_object_array_get_idx(iter,i));
  51. }
  52. json_object_put(obj);
  53. return 0;
  54. }