Program to generate an xml file based on a provided text file
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

107 líneas
2.5KB

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <libxml/tree.h>
  5. #include "main.h"
  6. #include "readconfig.h"
  7. #ifdef LIBXML_TREE_ENABLED
  8. /*
  9. * This program is designed to take a text file and convert part of it into xml.
  10. */
  11. int main(int argc, char *argv[]) {
  12. atexit(cleanup);
  13. char *config_file = "";
  14. if (argc == 1) {
  15. /* No arguments were passed */
  16. printusage(0);
  17. return 1;
  18. }
  19. /* Read the command line arguments */
  20. int i;
  21. for (i = 1; i < argc; i++) {
  22. if ((strcmp(argv[i], "-c") == 0 || strcmp(argv[i], "--config") == 0) && i != argc - 1 && strlen(config_file) == 0) {
  23. config_file = (char *) malloc(strlen(argv[i + 1]) * sizeof(char));
  24. config_file = argv[i + 1];
  25. i++;
  26. }
  27. else {
  28. /* Incorrect usage or used the same option more than once */
  29. printusage(1);
  30. return 1;
  31. }
  32. }
  33. config = (CONFIG *) malloc (sizeof(CONFIG));
  34. int status = readconfig(config_file, config);
  35. if (status != 0) {
  36. return 1;
  37. }
  38. printf("Configuración:\n");
  39. printf("\tArchivo: %s\n", config->file);
  40. printf("\tBiblia: %s\n", config->bible);
  41. printf("\tLibro: %s\n", config->book);
  42. printf("\tNombre de capitulo: %s\n", config->chapter);
  43. printf("\tNumeros de capitulo: %s\n", config->chapter_numbers);
  44. return 0;
  45. }
  46. #else
  47. /*
  48. * Alternate main designed to prevent problems if the host system does not have
  49. * tree support enabled during compile.
  50. */
  51. int main(int argc, char *argv[]) {
  52. fprintf(stderr, "libxml2 no tiene tree support compilado\n");
  53. return 1;
  54. }
  55. #endif
  56. /*
  57. * This function is called on exit to clean up the memory usage.
  58. */
  59. void cleanup() {
  60. /* Cleanup on aisle 3 */
  61. if (config != NULL) {
  62. if (config->file != NULL) {
  63. xmlFree(config->file);
  64. }
  65. if (config->bible != NULL) {
  66. xmlFree(config->bible);
  67. }
  68. if (config->book != NULL) {
  69. xmlFree(config->book);
  70. }
  71. if (config->chapter != NULL) {
  72. xmlFree(config->chapter);
  73. }
  74. if (config->chapter_numbers != NULL) {
  75. xmlFree(config->chapter_numbers);
  76. }
  77. free(config);
  78. }
  79. }
  80. /*
  81. * Print information on the program's usage. If the argument is 1, the user
  82. * put something incorrect as an argument.
  83. */
  84. void printusage(int error) {
  85. if (error == 1) {
  86. printf("Opcion desconocido!\n\n");
  87. }
  88. printf("usage: generarxml [opciones] \n");
  89. printf(" -s, --config <archivo> archivo de configuración\n");
  90. }