Changeset 227 for trunk/src/sh_files.c


Ignore:
Timestamp:
Apr 20, 2009, 5:59:31 PM (16 years ago)
Author:
katerina
Message:

Fix warnings with -fstack-check

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_files.c

    r171 r227  
    14891489  int             status;
    14901490  int             dummy = S_FALSE;
    1491   dir_type        theDir;
     1491  dir_type      * theDir;
    14921492  ShFileType      checkit;
    14931493  static unsigned int state = 1;
    14941494
    1495   file_type       theFile;
     1495  file_type     * theFile;
    14961496  char          * tmpname;
    14971497  char          * tmpcat;
     
    15711571  /* ---- stat the directory ----
    15721572   */
    1573   sl_strlcpy (theFile.fullpath, iname, PATH_MAX);
    1574   theFile.attr_string = NULL;
    1575   theFile.link_path   = NULL;
     1573  theFile = SH_ALLOC(sizeof(file_type));
     1574  sl_strlcpy (theFile->fullpath, iname, PATH_MAX);
     1575  theFile->attr_string = NULL;
     1576  theFile->link_path   = NULL;
    15761577
    15771578  (void) relativeName;
    15781579  status = sh_unix_getinfo (ShDFLevel[SH_ERR_T_DIR],
    15791580                            iname,
    1580                             &theFile, NULL, iclass);
     1581                            theFile, NULL, iclass);
    15811582
    15821583  if ((sig_termfast == 1) || (sig_terminate == 1))
    15831584    {
    1584       if (theFile.attr_string) SH_FREE(theFile.attr_string);
    1585       if (theFile.link_path)   SH_FREE(theFile.link_path);
     1585      if (theFile->attr_string) SH_FREE(theFile->attr_string);
     1586      if (theFile->link_path)   SH_FREE(theFile->link_path);
     1587      SH_FREE(theFile);
    15861588      SL_RETURN((0), _("sh_files_checkdir"));
    15871589    }
     
    15901592    {
    15911593      SH_FREE(tmpname);
    1592       if (theFile.attr_string) SH_FREE(theFile.attr_string);
    1593       if (theFile.link_path)   SH_FREE(theFile.link_path);
    1594      SL_RETURN((-1), _("sh_files_checkdir"));
    1595     }
    1596 
    1597   if (theFile.c_mode[0] != 'd')
     1594      if (theFile->attr_string) SH_FREE(theFile->attr_string);
     1595      if (theFile->link_path)   SH_FREE(theFile->link_path);
     1596      SH_FREE(theFile);
     1597      SL_RETURN((-1), _("sh_files_checkdir"));
     1598    }
     1599
     1600  if (theFile->c_mode[0] != 'd')
    15981601    {
    15991602      sh_error_handle (ShDFLevel[SH_ERR_T_DIR], FIL__, __LINE__, 0,
     
    16011604                       tmpname);
    16021605      SH_FREE(tmpname);
    1603       if (theFile.attr_string) SH_FREE(theFile.attr_string);
    1604       if (theFile.link_path)   SH_FREE(theFile.link_path);
     1606      if (theFile->attr_string) SH_FREE(theFile->attr_string);
     1607      if (theFile->link_path)   SH_FREE(theFile->link_path);
     1608      SH_FREE(theFile);
    16051609      SL_RETURN((-1), _("sh_files_checkdir"));
    16061610    }
    16071611
    1608   hardlink_num = theFile.hardlinks;
    1609 
     1612  hardlink_num = theFile->hardlinks;
     1613
     1614  if (theFile->attr_string) SH_FREE(theFile->attr_string);
     1615  if (theFile->link_path)   SH_FREE(theFile->link_path);
     1616  SH_FREE(theFile);
    16101617
    16111618  /* ---- open directory for reading ----
     
    16231630                       sh_error_message (status, errbuf, sizeof(errbuf)), tmpname);
    16241631      SH_FREE(tmpname);
    1625 
    1626       if (theFile.attr_string) SH_FREE(theFile.attr_string);
    1627       if (theFile.link_path)   SH_FREE(theFile.link_path);
    16281632      SL_RETURN((-1), _("sh_files_checkdir"));
    16291633    }
    16301634
    1631   theDir.NumRegular  = 0;
    1632   theDir.NumDirs     = 0;
    1633   theDir.NumSymlinks = 0;
    1634   theDir.NumFifos    = 0;
    1635   theDir.NumSockets  = 0;
    1636   theDir.NumCDev     = 0;
    1637   theDir.NumBDev     = 0;
    1638   theDir.NumDoor     = 0;
    1639   theDir.NumPort     = 0;
    1640   theDir.NumAll      = 0;
    1641   theDir.TotalBytes  = 0;
    1642   sl_strlcpy (theDir.DirPath, iname, PATH_MAX);
     1635  theDir = SH_ALLOC(sizeof(dir_type));
     1636
     1637  theDir->NumRegular  = 0;
     1638  theDir->NumDirs     = 0;
     1639  theDir->NumSymlinks = 0;
     1640  theDir->NumFifos    = 0;
     1641  theDir->NumSockets  = 0;
     1642  theDir->NumCDev     = 0;
     1643  theDir->NumBDev     = 0;
     1644  theDir->NumDoor     = 0;
     1645  theDir->NumPort     = 0;
     1646  theDir->NumAll      = 0;
     1647  theDir->TotalBytes  = 0;
     1648  sl_strlcpy (theDir->DirPath, iname, PATH_MAX);
    16431649
    16441650
     
    16541660      if (thisEntry != NULL)
    16551661        {
    1656           ++theDir.NumAll;
     1662          ++theDir->NumAll;
    16571663          if (sl_strcmp (thisEntry->d_name, ".") == 0)
    16581664            {
    1659               ++theDir.NumDirs;
     1665              ++theDir->NumDirs;
    16601666              continue;
    16611667            }
    16621668          if (sl_strcmp (thisEntry->d_name, "..") == 0)
    16631669            {
    1664               ++theDir.NumDirs;
     1670              ++theDir->NumDirs;
    16651671              continue;
    16661672            }
     
    16861692    if (sig_termfast == 1)
    16871693      {
    1688         if (theFile.attr_string) SH_FREE(theFile.attr_string);
    1689         if (theFile.link_path)   SH_FREE(theFile.link_path);
     1694        SH_FREE(theDir);
    16901695        SL_RETURN((0), _("sh_files_checkdir"));
    16911696      }
     
    17691774        if (checkit == SH_FILE_DIRECTORY)
    17701775          {
    1771             ++theDir.NumDirs;
     1776            ++theDir->NumDirs;
    17721777          }
    17731778        SH_FREE(tmpcat);
     
    18051810   
    18061811    if      (checkit == SH_FILE_REGULAR)   
    1807       ++theDir.NumRegular;
     1812      ++theDir->NumRegular;
    18081813   
    18091814    else if (checkit == SH_FILE_DIRECTORY)
    18101815      {
    1811         ++theDir.NumDirs;
     1816        ++theDir->NumDirs;
    18121817        if (rdepth_next >= 0 && cchecked_flag != S_TRUE)
    18131818          {
     
    18701875      }
    18711876   
    1872     else if (checkit == SH_FILE_SYMLINK)   ++theDir.NumSymlinks;
    1873     else if (checkit == SH_FILE_FIFO)      ++theDir.NumFifos;
    1874     else if (checkit == SH_FILE_SOCKET)    ++theDir.NumSockets;
    1875     else if (checkit == SH_FILE_CDEV)      ++theDir.NumCDev;
    1876     else if (checkit == SH_FILE_BDEV)      ++theDir.NumBDev;
    1877     else if (checkit == SH_FILE_DOOR)      ++theDir.NumDoor;
    1878     else if (checkit == SH_FILE_PORT)      ++theDir.NumPort;
     1877    else if (checkit == SH_FILE_SYMLINK)   ++theDir->NumSymlinks;
     1878    else if (checkit == SH_FILE_FIFO)      ++theDir->NumFifos;
     1879    else if (checkit == SH_FILE_SOCKET)    ++theDir->NumSockets;
     1880    else if (checkit == SH_FILE_CDEV)      ++theDir->NumCDev;
     1881    else if (checkit == SH_FILE_BDEV)      ++theDir->NumBDev;
     1882    else if (checkit == SH_FILE_DOOR)      ++theDir->NumDoor;
     1883    else if (checkit == SH_FILE_PORT)      ++theDir->NumPort;
    18791884   
    18801885    SH_FREE(tmpcat);
     
    18821887    if ((sig_termfast == 1) || (sig_terminate == 1))
    18831888      {
    1884         if (theFile.attr_string) SH_FREE(theFile.attr_string);
    1885         if (theFile.link_path)   SH_FREE(theFile.link_path);
     1889        SH_FREE(theDir);
    18861890        SL_RETURN((0), _("sh_files_checkdir"));
    18871891      }
     
    18971901    {
    18981902      sh_error_handle ((-1), FIL__, __LINE__, 0, MSG_FI_DSUM,
    1899                        theDir.NumDirs,
    1900                        theDir.NumRegular,
    1901                        theDir.NumSymlinks,
    1902                        theDir.NumFifos,
    1903                        theDir.NumSockets,
    1904                        theDir.NumCDev,
    1905                        theDir.NumBDev);
     1903                       theDir->NumDirs,
     1904                       theDir->NumRegular,
     1905                       theDir->NumSymlinks,
     1906                       theDir->NumFifos,
     1907                       theDir->NumSockets,
     1908                       theDir->NumCDev,
     1909                       theDir->NumBDev);
    19061910    }
    19071911
     
    19121916   * Hardlink check; not done on MacOS X because of resource forks
    19131917   */
    1914   if ((sh_check_hardlinks == S_TRUE) && (hardlink_num != theDir.NumDirs))
    1915     {
    1916       if (0 != sh_files_hle_test(hardlink_num-theDir.NumDirs, iname))
     1918  if ((sh_check_hardlinks == S_TRUE) && (hardlink_num != theDir->NumDirs))
     1919    {
     1920      if (0 != sh_files_hle_test(hardlink_num-theDir->NumDirs, iname))
    19171921        {
    19181922          len = strlen(tmpname);
     
    19221926          sl_snprintf(tmpcat, len,
    19231927                      _("%s: subdirectory count (%d) != hardlinks (%d)"),
    1924                       tmpname, theDir.NumDirs, hardlink_num);
     1928                      tmpname, theDir->NumDirs, hardlink_num);
    19251929          sh_error_handle (ShDFLevel[SH_ERR_T_DIR], FIL__, __LINE__, 0,
    19261930                           MSG_E_SUBGEN, tmpcat, _("sh_files_checkdir"));
     
    19301934#endif
    19311935
    1932   if (theFile.attr_string) SH_FREE(theFile.attr_string);
    1933   if (theFile.link_path)   SH_FREE(theFile.link_path);
    19341936  SH_FREE(tmpname);
     1937  SH_FREE(theDir);
    19351938
    19361939  SL_RETURN((0), _("sh_files_checkdir"));
     
    19471950  /* 28 Aug 2001 allow NULL fileName
    19481951   */
    1949   char            fullpath[PATH_MAX];
     1952  char          * fullpath;
    19501953  char            fileHash[2*(KEY_LEN + 1)];
    19511954  int             status;
    1952   file_type       theFile;
     1955  file_type     * theFile;
    19531956  char          * tmpdir;
    19541957  char          * tmpname;
     
    19561959  struct utimbuf  utime_buf;
    19571960  static unsigned int state = 1;
     1961  char            sc;
    19581962
    19591963  SL_ENTER(_("sh_files_filecheck"));
     1964
     1965  fullpath = SH_ALLOC(PATH_MAX);
     1966  theFile  = SH_ALLOC(sizeof(file_type));
    19601967
    19611968  BREAKEXIT(sh_derr);
     
    19821989    {
    19831990      sh_error_handle ((-1), FIL__, __LINE__, 0, MSG_FI_NULL);
     1991      SH_FREE(fullpath);
     1992      SH_FREE(theFile);
    19841993      SL_RETURN(SH_FILE_UNKNOWN, _("sh_files_filecheck"));
    19851994    }
     
    20202029      SH_FREE(tmpname);
    20212030      SH_FREE(tmpdir);
     2031      SH_FREE(fullpath);
     2032      SH_FREE(theFile);
    20222033      SL_RETURN(SH_FILE_UNKNOWN, _("sh_files_filecheck"));
    20232034    }
     
    20262037  /* stat the file and determine checksum (if a regular file)
    20272038   */
    2028   sl_strlcpy (theFile.fullpath, fullpath, PATH_MAX);
    2029   theFile.check_mask    = sh_files_maskof(class);
    2030   theFile.file_reported = (*reported);
    2031   theFile.attr_string   = NULL;
    2032   theFile.link_path     = NULL;
     2039  sl_strlcpy (theFile->fullpath, fullpath, PATH_MAX);
     2040  theFile->check_mask    = sh_files_maskof(class);
     2041  theFile->file_reported = (*reported);
     2042  theFile->attr_string   = NULL;
     2043  theFile->link_path     = NULL;
    20332044
    20342045  TPT(( 0, FIL__, __LINE__, _("msg=<checking file: %s>\n"),  fullpath));
     
    20372048                             ShDFLevel[class] : ShDFLevel[SH_ERR_T_FILE],
    20382049                             fileName,
    2039                              &theFile, fileHash, class);
     2050                             theFile, fileHash, class);
    20402051 
    20412052  if (status != 0)
     
    20452056      if (class == SH_LEVEL_ALLIGNORE && sh.flag.checkSum != SH_CHECK_INIT)
    20462057        sh_hash_set_visited_true (fullpath);
    2047       if (theFile.attr_string) SH_FREE(theFile.attr_string);
    2048       if (theFile.link_path)   SH_FREE(theFile.link_path);
     2058      if (theFile->attr_string) SH_FREE(theFile->attr_string);
     2059      if (theFile->link_path)   SH_FREE(theFile->link_path);
     2060      SH_FREE(fullpath);
     2061      SH_FREE(theFile);
    20492062      SL_RETURN(SH_FILE_UNKNOWN, _("sh_files_filecheck"));
    20502063    }
     
    20562069  /* report
    20572070   */
    2058   if ((flag_err_debug == SL_TRUE) && (theFile.c_mode[0] == '-'))
     2071  if ((flag_err_debug == SL_TRUE) && (theFile->c_mode[0] == '-'))
    20592072    {
    20602073      tmpname = sh_util_safe_name (fullpath); /* fixed in 1.5.4 */
     
    20672080  if ( sh.flag.checkSum == SH_CHECK_INIT /* && sh.flag.update == S_FALSE */)
    20682081    {
    2069       sh_hash_pushdata (&theFile, fileHash);
     2082      sh_hash_pushdata (theFile, fileHash);
    20702083    }
    20712084  else if (sh.flag.checkSum == SH_CHECK_CHECK
     
    20742087           )
    20752088    {
    2076       sh_hash_compdata (class, &theFile, fileHash, NULL, -1);
     2089      sh_hash_compdata (class, theFile, fileHash, NULL, -1);
    20772090    }
    20782091 
    2079   (*reported) = theFile.file_reported;
     2092  (*reported) = theFile->file_reported;
    20802093
    20812094  /* reset the access time
    20822095   */
    2083   if (class == SH_LEVEL_NOIGNORE && (theFile.check_mask & MODI_ATM) != 0)
    2084     {
    2085       utime_buf.actime   = (time_t) theFile.atime;
    2086       utime_buf.modtime  = (time_t) theFile.mtime;
     2096  if (class == SH_LEVEL_NOIGNORE && (theFile->check_mask & MODI_ATM) != 0)
     2097    {
     2098      utime_buf.actime   = (time_t) theFile->atime;
     2099      utime_buf.modtime  = (time_t) theFile->mtime;
    20872100#if !defined(O_NOATIME)
    20882101      retry_aud_utime (FIL__, __LINE__, fullpath, &utime_buf);
     
    20942107   * Check for resource fork
    20952108   */
    2096   if ( (theFile.c_mode[0] != 'd') && (rsrcflag == 0) )
     2109  if ( (theFile->c_mode[0] != 'd') && (rsrcflag == 0) )
    20972110    {
    20982111      int  dummy;
    20992112      static int rsrc_init = 0;
    21002113      static char rsrc[17];
    2101       char testpath[PATH_MAX];
     2114      char testpath = SH_ALLOC(PATH_MAX);
    21022115
    21032116      if (rsrc_init == 0) {
     
    21162129            }
    21172130        }
     2131      SH_FREE(testpath);
    21182132    }
    21192133#else
     
    21232137 ret_point:
    21242138
    2125   if (theFile.attr_string) SH_FREE(theFile.attr_string);
    2126   if (theFile.link_path)   SH_FREE(theFile.link_path);
    2127 
    2128   switch (theFile.c_mode[0])
     2139  sc = theFile->c_mode[0];
     2140
     2141  if (theFile->attr_string) SH_FREE(theFile->attr_string);
     2142  if (theFile->link_path)   SH_FREE(theFile->link_path);
     2143  SH_FREE(fullpath);
     2144  SH_FREE(theFile);
     2145
     2146  switch (sc)
    21292147    {
    21302148    case '-': SL_RETURN(SH_FILE_REGULAR, _("sh_files_filecheck"));   
Note: See TracChangeset for help on using the changeset viewer.