Diff for /embedtools/src/direr.c between versions 1.3 and 1.4

version 1.3, 2012/07/22 22:46:47 version 1.4, 2014/02/05 15:44:05
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012Copyright 2004 - 2014
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 54  Usage() Line 54  Usage()
         printf( "-= Direr =- Tool for compare directories by checksum\n"          printf( "-= Direr =- Tool for compare directories by checksum\n"
                 "=== %s === %s@%s ===\n\n"                  "=== %s === %s@%s ===\n\n"
                 "  Syntax: direr [options] <dir> [cmp_dir]\n\n"                  "  Syntax: direr [options] <dir> [cmp_dir]\n\n"
                   "\t-q\t\t\tQuiet mode\n"
                 "\t-s <cksum>\t\tCompare dir with this checksum ...\n"                  "\t-s <cksum>\t\tCompare dir with this checksum ...\n"
                 "\n", compiled, compiledby, compilehost);                  "\n", compiled, compiledby, compilehost);
 }  }
Line 61  Usage() Line 62  Usage()
 int  int
 main(int argc, char **argv)  main(int argc, char **argv)
 {  {
        u_char *md[2], mode = 0;        u_char *md[2], mode = 0, quiet = 0;
         char szCmp[MAXPATHLEN], *str[2], ch;          char szCmp[MAXPATHLEN], *str[2], ch;
         int ret = 0;          int ret = 0;
           ait_val_t v = AIT_VAL_INITIALIZER(v);
   
         memset(md, 0, sizeof md);          memset(md, 0, sizeof md);
         memset(str, 0, sizeof str);          memset(str, 0, sizeof str);
         memset(szCmp, 0, MAXPATHLEN);          memset(szCmp, 0, MAXPATHLEN);
        while ((ch = getopt(argc, argv, "hs:")) != -1)        while ((ch = getopt(argc, argv, "hqs:")) != -1)
                 switch (ch) {                  switch (ch) {
                         case 's':                          case 's':
                                str[1] = strdup(optarg);                                str[1] = e_strdup(optarg);
                                 mode = 1;                                  mode = 1;
                                 break;                                  break;
                           case 'q':
                                   quiet = 1;
                                   break;
                         case 'h':                          case 'h':
                         default:                          default:
                                 Usage();                                  Usage();
Line 91  main(int argc, char **argv) Line 96  main(int argc, char **argv)
                 mode |= 2;                  mode |= 2;
         }          }
   
        if (sync_dirCSum(argv[0], &md[0]) == -1) {        if (sync_dirChkSum(argv[0], &md[0]) == -1) {
                printf("Error:: %s(%d) #%d - %s\n", __func__, __LINE__, errno, strerror(errno));                ELIBERR(sync);
                 return 1;                  return 1;
         }          }
        str[0] = io_Hex2Ch(md[0], MD5_DIGEST_LENGTH);        AIT_SET_BUF(&v, md[0], MD5_DIGEST_LENGTH);
         str[0] = str_Dig2Hex(&v);
         AIT_FREE_VAL(&v);
         if (!str[0]) {          if (!str[0]) {
                free(md[0]);                e_free(md[0]);
                 return 1;                  return 1;
         }          }
        printf("1.Directory '%s': %s\n", argv[0], str[0]);        if (!quiet)
                 printf("1.Directory '%s': %s\n", argv[0], str[0]);
   
         if (mode & 1 && *str[1]) {          if (mode & 1 && *str[1]) {
                 ret |= !strcmp((char*) str[0], (char*) str[1]) << 1;                  ret |= !strcmp((char*) str[0], (char*) str[1]) << 1;
                printf("Result checksum:: %s %s %s\n\n", str[0], ret & 2 ? "==" : "!=", str[1]);                if (!quiet)
                free(str[1]);                        printf("Result checksum:: %s %s %s\n\n", str[0], 
                                         ret & 2 ? "==" : "!=", str[1]);
                 e_free(str[1]);
         }          }
   
         if (mode & 2 && *szCmp) {          if (mode & 2 && *szCmp) {
                if (sync_dirCSum(szCmp, &md[1]) == -1) {                if (sync_dirChkSum(szCmp, &md[1]) == -1) {
                        printf("Error:: %s(%d) #%d - %s\n", __func__, __LINE__, errno, strerror(errno));                        ELIBERR(sync);
                         return 1;                          return 1;
                 }                  }
                str[1] = io_Hex2Ch(md[1], MD5_DIGEST_LENGTH);                AIT_SET_BUF(&v, md[1], MD5_DIGEST_LENGTH);
                 str[1] = str_Dig2Hex(&v);
                 AIT_FREE_VAL(&v);
                 if (!str[1]) {                  if (!str[1]) {
                        free(md[0]);                        e_free(md[0]);
                        free(str[0]);                        e_free(str[0]);
                        free(md[1]);                        e_free(md[1]);
                         return 1;                          return 1;
                 }                  }
                printf("2.Directory '%s': %s\n", szCmp, str[1]);                if (!quiet)
                         printf("2.Directory '%s': %s\n", szCmp, str[1]);
   
                 ret |= (!strcmp((char*) str[0], (char*) str[1]) << 2);                  ret |= (!strcmp((char*) str[0], (char*) str[1]) << 2);
                printf("Result directory:: %s %s %s\n\n", argv[0], ret & 4 ? "==" : "!=", szCmp);                if (!quiet)
                        printf("Result directory:: %s %s %s\n\n", argv[0], 
                if (str[1])                                        ret & 4 ? "==" : "!=", szCmp);
                        free(str[1]);                e_free(str[1]);
                if (md[1])                e_free(md[1]);
                        free(md[1]); 
         }          }
   
        if (str[0])        e_free(str[0]);
                free(str[0]);        e_free(md[0]);
        if (md[0]) 
                free(md[0]); 
         return ret;          return ret;
 }  }

Removed from v.1.3  
changed lines
  Added in v.1.4


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>