Changeset 9ed245 in git


Ignore:
Timestamp:
May 12, 2005, 2:47:14 PM (19 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
accd6a78454959d4d30cfd2c78391dbc8490b47a
Parents:
6e1ea4ddc204fe0037c0f5bf7a91dde2f70a982f
Message:
*hannes: iplib:type_of_LIB -> kernel_mod_raw.cc


git-svn-id: file:///usr/local/Singular/svn/trunk@8178 2c84dea3-7e68-4137-9b89-c4e89433aadc
Location:
kernel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • kernel/mod_raw.cc

    r6e1ea4d r9ed245  
    22*  Computer Algebra System SINGULAR     *
    33****************************************/
    4 /* $Id: mod_raw.cc,v 1.6 2005-05-12 11:51:32 Singular Exp $ */
     4/* $Id: mod_raw.cc,v 1.7 2005-05-12 12:47:14 Singular Exp $ */
    55/*
    66 * ABSTRACT: machine depend code for dynamic modules
     
    1313
    1414#include <stdio.h>
     15#include <string.h>
     16#include <ctype.h>
     17#include <sys/stat.h>
     18
    1519
    1620#include "mod2.h"
     
    2024#endif
    2125
    22 #if defined(HAVE_DL)
    2326#include "mod_raw.h"
    2427#include "febase.h"
     28
     29/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
     30#define BYTES_TO_CHECK 7
     31
     32lib_types type_of_LIB(char *newlib, char *libnamebuf)
     33{
     34  char        buf[BYTES_TO_CHECK+1];        /* one extra for terminating '\0' */
     35  struct stat sb;
     36  int nbytes = 0;
     37  int ret;
     38  lib_types LT=LT_NONE;
     39
     40  FILE * fp = feFopen( newlib, "r", libnamebuf, FALSE );
     41  ret = stat(libnamebuf, &sb);
     42
     43  if (fp==NULL)
     44  {
     45    return LT_NOTFOUND;
     46  }
     47  if((sb.st_mode & S_IFMT) != S_IFREG)
     48  {
     49    goto lib_type_end;
     50  }
     51  if ((nbytes = fread((char *)buf, sizeof(char), BYTES_TO_CHECK, fp)) == -1)
     52  {
     53    goto lib_type_end;
     54    /*NOTREACHED*/
     55  }
     56  if (nbytes == 0)
     57    goto lib_type_end;
     58  else
     59  {
     60    buf[nbytes++] = '\0';        /* null-terminate it */
     61  }
     62  if( (strncmp(buf, "\177ELF", 4)==0)) /* generic ELF */
     63  {
     64    LT = LT_ELF;
     65    //omFree(newlib);
     66    //newlib = omStrDup(libnamebuf);
     67    goto lib_type_end;
     68  }
     69  if( (strncmp(buf, "\02\020\01\016\05\022@", 7)==0))
     70  {
     71    LT = LT_HPUX;
     72    //omFree(newlib);
     73    //newlib = omStrDup(libnamebuf);
     74    goto lib_type_end;
     75  }
     76  if(isprint(buf[0]) || buf[0]=='\n')
     77  { LT = LT_SINGULAR; goto lib_type_end; }
     78
     79  lib_type_end:
     80  fclose(fp);
     81  return LT;
     82}
     83/*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
     84#if defined(HAVE_DL)
    2585
    2686/*****************************************************************************
  • kernel/mod_raw.h

    r6e1ea4d r9ed245  
    44*  Computer Algebra System SINGULAR     *
    55****************************************/
    6 /* $Id: mod_raw.h,v 1.1.1.1 2003-10-06 12:15:57 Singular Exp $ */
     6/* $Id: mod_raw.h,v 1.2 2005-05-12 12:47:14 Singular Exp $ */
    77/*
    88 * ABSTRACT: machine depend code for dynamic modules
     
    1313 *           dunl_close()
    1414*/
     15
     16typedef enum { LT_NONE, LT_NOTFOUND, LT_SINGULAR, LT_ELF, LT_HPUX} lib_types;
     17
     18lib_types type_of_LIB(char *newlib, char *fullname);
    1519
    1620#if defined(HAVE_DL)
Note: See TracChangeset for help on using the changeset viewer.