-struct _mis_param_ {
- int xml_fact; /* Pos en argv del archivo XML a usar para facturas */
- int xml_art; /* Pos en argv del archivo XML a usar para articulos */
- char tipo_arch_fact; /* Tipo de archivo para Facturas */
- char tipo_arch_art; /* Tipo de archivo para Articulos */
- char tipo_arch_nota;
- EMUFS_BLOCK_SIZE tam_bloque_fact;
- EMUFS_BLOCK_SIZE tam_bloque_art;
- EMUFS_BLOCK_SIZE tam_bloque_nota;
-} parametros;
-
-/* Verifica Argumentos */
-t_Param param_ok(int argc, char *argv[])
-{
- int n,i;
- int file;
- for(i=1; i<argc; i++) {
- if ((strcmp(argv[i], "-h")==0) || (strcmp(argv[i], "--help")==0)) return SHOW_HELP;
-
- if (strcmp(argv[i], "-a") == 0) { /* Articulos! */
- i++;
- if (i >= argc) return SHOW_HELP;
- if (strcmp(argv[i]+strlen(argv[i])-3, "xml") == 0) {
- /* Luego del archivo XML debe seguir el tipo */
- if ((i+1)<argc) {
- n = atoi(argv[i+1]);
- if ((n < 1) || (n > 3)) return TIPO_INVALIDO;
- if (((n == 1) || (n == 3)) && ((i+2)>=argc))
- return BLOQUE_NO_DEFINIDO;
- parametros.tipo_arch_art = n;
- if (n != 2) {
- if ((i+2) >= argc) return NULL_BLOCK_FOUND;
- parametros.tam_bloque_art = atoi(argv[i+2]);
- if (parametros.tam_bloque_art <= 0) return NULL_BLOCK_FOUND;
- }
- parametros.xml_art = i;
- } else {
- /* Ops, no hay mas parametros */
- return TIPO_NO_DEFINIDO;
- }
- } else {
- return NO_ART_FILE;
- }
- } /* Articulos */
-
- if (strcmp(argv[i], "-f") == 0) { /* Facturas! */
- i++;
- if (i >= argc) return SHOW_HELP;
- if (strcmp(argv[i]+strlen(argv[i])-3, "xml") == 0) {
- /* Luego del archivo XML debe seguir el tipo */
- file = i;
- i++;
- if (i<argc) {
- n = atoi(argv[i]);
- if ((n < 1) || (n > 3)) return TIPO_INVALIDO;
- if (((n == 1) || (n == 3)) && ((i+1)>=argc))
- return BLOQUE_NO_DEFINIDO;
- parametros.tipo_arch_fact = n;
- i++;
- switch (n) {
- case 1:
- case 3:
- parametros.tam_bloque_fact = atoi(argv[i]);
- if (parametros.tam_bloque_fact <= 0) return NULL_BLOCK_FOUND;
- i++;
- if (i >= argc) return SHOW_HELP;
- n = atoi(argv[i]);
- if ((n<1) || (n>3)) return SHOW_HELP;
- parametros.tipo_arch_nota = n;
- if (((n == 1) || (n == 3)) && ((i+1)>=argc))
- return SHOW_HELP;
- i++;
- if (n != 2) {
- parametros.tam_bloque_nota = atoi(argv[i]);
- if (parametros.tam_bloque_nota <= 0) return SHOW_HELP;
- }
- break;
- case 2:
- if (i >= argc) return SHOW_HELP;
- n = atoi(argv[i]);
- if ((n<1) || (n>3)) return SHOW_HELP;
- parametros.tipo_arch_nota = n;
- if (((n == 1) || (n == 3)) && ((i+1)>=argc))
- return SHOW_HELP;
- i++;
- if (n != 2) {
- parametros.tam_bloque_nota = atoi(argv[i]);
- if (parametros.tam_bloque_nota <= 0) return SHOW_HELP;
- }
- }
- PERR("ACA");
- parametros.xml_fact = file;
- } else {
- /* Ops, no hay mas parametros */
- return TIPO_NO_DEFINIDO;
- }
- } else {
- return NO_FACT_FILE;
- }
- } /* Facturas */
-
- }
- return PARAM_OK;
-}
-