Changeset 20 for trunk/src/slib.c


Ignore:
Timestamp:
Feb 13, 2006, 11:54:42 PM (19 years ago)
Author:
rainer
Message:

Enable command-line parsing for prelude, and make prelude regression test safer.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/slib.c

    r12 r20  
    66#include <stdarg.h>
    77#include <string.h>
    8 
     8#include <limits.h>
    99
    1010#include <unistd.h>
     
    9898static FILE * trace_fp     = NULL;
    9999
    100 int  sl_trace_use (char * dummy)
     100int  sl_trace_use (const char * dummy)
    101101{
    102102  if (dummy)
     
    107107}
    108108
    109 int  sl_trace_file (char * str)
     109int  sl_trace_file (const char * str)
    110110{
    111111  if (!str)
     
    16381638
    16391639static
    1640 int sl_open_file (char *filename, int mode, int priv)
     1640int sl_open_file (const char *filename, int mode, int priv)
    16411641{
    16421642  struct stat   lbuf;
     
    18481848
    18491849static
    1850 int check_fname_priv (char * fname, int priv)
     1850int check_fname_priv (const char * fname, int priv)
    18511851{
    18521852  SL_ENTER(_("check_fname_priv"));
     
    18581858}
    18591859 
    1860 SL_TICKET sl_open_write (char * fname, int priv)
     1860SL_TICKET sl_open_write (const char * fname, int priv)
    18611861{
    18621862  long status;
     
    18701870}
    18711871
    1872 SL_TICKET sl_open_read (char * fname, int priv)
     1872SL_TICKET sl_open_read (const char * fname, int priv)
    18731873{
    18741874  long status;
     
    18871887}
    18881888
    1889 SL_TICKET sl_open_fastread (char * fname, int priv)
     1889SL_TICKET sl_open_fastread (const char * fname, int priv)
    18901890{
    18911891  long status;
     
    18991899}
    19001900
    1901 SL_TICKET sl_open_rdwr (char * fname, int priv)
     1901SL_TICKET sl_open_rdwr (const char * fname, int priv)
    19021902{
    19031903  long status;
     
    19111911}
    19121912
    1913 SL_TICKET sl_open_safe_rdwr (char * fname, int priv)
     1913SL_TICKET sl_open_safe_rdwr (const char * fname, int priv)
    19141914{
    19151915  long status;
     
    19231923}
    19241924
    1925 SL_TICKET sl_open_write_trunc (char * fname, int priv)
     1925SL_TICKET sl_open_write_trunc (const char * fname, int priv)
    19261926{
    19271927  long status;
     
    19351935}
    19361936
    1937 SL_TICKET sl_open_rdwr_trunc (char * fname, int priv)
     1937SL_TICKET sl_open_rdwr_trunc (const char * fname, int priv)
    19381938{
    19391939  long status;
     
    24902490}
    24912491
    2492 
     2492/* ----------------------------------------------------------------
     2493 *
     2494 *    Overflow tests
     2495 *
     2496 * ---------------------------------------------------------------- */
     2497
     2498int sl_ok_muli (int a, int b) /* a*b */
     2499{
     2500  if (a >= (INT_MIN / b) && a <= (INT_MAX / b))
     2501    return SL_TRUE; /* no overflow */
     2502  return SL_FALSE;
     2503}
     2504
     2505int sl_ok_divi (int a, int b) /* a/b */
     2506{
     2507  (void) a;
     2508  if (b != 0)
     2509    return SL_TRUE; /* no overflow */
     2510  return SL_FALSE;
     2511}
     2512
     2513int sl_ok_addi (int a, int b) /* a+b */
     2514{
     2515  if (a >= 0 && b >= 0)
     2516    {
     2517      if (a <= (INT_MAX - b))
     2518        return SL_TRUE; /* no overflow */
     2519      else
     2520        return SL_FALSE;
     2521    }
     2522  else if (a < 0 && b < 0)
     2523    {
     2524      if (a >= (INT_MIN - b))
     2525        return SL_TRUE; /* no overflow */
     2526      else
     2527        return SL_FALSE;
     2528    }
     2529  return SL_TRUE;
     2530}
     2531
     2532int sl_ok_subi (int a, int b) /* a-b */
     2533{
     2534  if (a >= 0 && b < 0)
     2535    {
     2536      if (a <= (INT_MAX + b))
     2537        return SL_TRUE; /* no overflow */
     2538      else
     2539        return SL_FALSE;
     2540    }
     2541  else if (a < 0 && b >= 0)
     2542    {
     2543      if (a >= (INT_MIN + b))
     2544        return SL_TRUE; /* no overflow */
     2545      else
     2546        return SL_FALSE;
     2547    }
     2548  return SL_TRUE;
     2549}
Note: See TracChangeset for help on using the changeset viewer.