Changeset 19 for trunk/src/sh_unix.c


Ignore:
Timestamp:
Feb 12, 2006, 10:49:56 PM (19 years ago)
Author:
rainer
Message:

Rewrite of test suite, checksum for growing logs, fix for minor bug with dead client detection.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_unix.c

    r18 r19  
    573573  if (mysignal == SIGUSR2)
    574574    {
    575       sig_suspend_switch    = 1;
     575      ++sig_suspend_switch;
    576576      ++sig_urgent;
    577577    }
     
    15821582  if (skey->mlock_failed == SL_FALSE)
    15831583    {
    1584       if ( (-1) == sh_unix_mlock( (char *) skey, sizeof (sh_key_t)) )
     1584      if ( (-1) == sh_unix_mlock( FIL__, __LINE__,
     1585                                  (char *) skey, sizeof (sh_key_t)) )
    15851586        {
    15861587          skey->mlock_failed = SL_TRUE;
     
    27542755#include "sh_ignore.h"
    27552756
     2757int sh_unix_checksum_size (char * filename, struct stat * fbuf,
     2758                           char * fileHash, int alert_timeout)
     2759{
     2760  file_type tmpFile;
     2761  int status;
     2762
     2763  SL_ENTER(_("sh_unix_checksum_size"));
     2764
     2765  /* lookup file in database */
     2766  status = sh_hash_get_it (filename, &tmpFile);
     2767  if (status != 0) {
     2768    goto out;
     2769  }
     2770
     2771  /* if last < current get checksum */
     2772  if (tmpFile.size < fbuf->st_size)
     2773    {
     2774      strcpy(fileHash,                         /* known to fit */
     2775             sh_tiger_generic_hash (filename, TIGER_FD, tmpFile.size,
     2776                                    alert_timeout));
     2777
     2778      /* return */
     2779      SL_RETURN( 0, _("sh_unix_checksum_size"));
     2780    }
     2781
     2782 out:
     2783  strcpy(fileHash,                              /* known to fit */
     2784         _("000000000000000000000000000000000000000000000000"));
     2785  SL_RETURN( -1, _("sh_unix_checksum_size"));
     2786}
     2787
    27562788int sh_unix_getinfo (int level, char * filename, file_type * theFile,
    27572789                     char * fileHash, int policy)
     
    28912923                     _("000000000000000000000000000000000000000000000000"));
    28922924            }
    2893           else if (policy == SH_LEVEL_PRELINK &&
     2925          else if ((theFile->check_mask & MODI_PREL) != 0 &&
    28942926                   S_TRUE == sh_prelink_iself(rval_open, fbuf.st_size,
    28952927                                              alert_timeout))
     
    29062938                     sh_tiger_generic_hash (theFile->fullpath, TIGER_FD, 0,
    29072939                                            alert_timeout));
     2940              if ((theFile->check_mask & MODI_SGROW) != 0)
     2941                {
     2942                  sl_rewind(rval_open);
     2943                  tiger_fd = rval_open;
     2944                  sh_unix_checksum_size (theFile->fullpath, &fbuf,
     2945                                         &fileHash[KEY_LEN + 1],
     2946                                         alert_timeout);
     2947                }
    29082948            }
    29092949        }
     
    29392979                                                alert_timeout),
    29402980                         KEY_LEN + 1);
     2981              if ((theFile->check_mask & MODI_SGROW) != 0)
     2982                {
     2983                  sl_rewind(rval_open);
     2984                  tiger_fd = rval_open;
     2985                  sh_unix_checksum_size (theFile->fullpath, &fbuf,
     2986                                         &fileHash[KEY_LEN + 1],
     2987                                         alert_timeout);
     2988                }
    29412989            }
    29422990        }
     
    36483696  unsigned long  page_start;
    36493697  int            page_refcount;
     3698  char           file[64];
     3699  int            line;
    36503700  struct sh_page_lt * next;
    36513701} sh_page_l;
     
    36913741
    36923742#if defined(HAVE_MLOCK) && !defined(HAVE_BROKEN_MLOCK)
    3693 int sh_unix_mlock (void * in_addr, size_t len)
     3743int sh_unix_mlock (char * file, int line, void * in_addr, size_t len)
    36943744{
    36953745  int         num_pages;
     
    37553805      page_list->page_start = addr;
    37563806      page_list->page_refcount = 1;
     3807      sl_strlcpy(page_list->file, file, 64);
     3808      page_list->line = line;
    37573809      status = mlock( (void *) addr, pagesize);
    37583810      if (status != 0)
     
    39293981  while (page_list != NULL)
    39303982    {
     3983#ifdef WITH_TPT
     3984      sl_snprintf(str, 128, _("file: %s line: %d page: %d"),
     3985                  page_list->file, page_list->line, i+1);
     3986      sh_error_handle(SH_ERR_INFO, FIL__, __LINE__, i, MSG_E_SUBGEN,
     3987                  str, _("sh_unix_count_mlock"));
     3988#endif
    39313989      page_list = page_list->next;
    39323990      ++i;
    39333991    }
    3934   sprintf(str, _("%d pages locked"), i);               /* known to fit  */
     3992  sl_snprintf(str, 128, _("%d pages locked"), i);
    39353993  sh_error_handle(SH_ERR_INFO, FIL__, __LINE__, i, MSG_E_SUBGEN,
    39363994                  str, _("sh_unix_count_mlock"));
Note: See TracChangeset for help on using the changeset viewer.