Changeset 96c5cb in git for libpolys


Ignore:
Timestamp:
Jun 21, 2013, 7:26:52 PM (11 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', 'fe61d9c35bf7c61f2b6cbf1b56e25e2f08d536cc')
Children:
00efe139bd160effd51e7ad222f0894fdb70f0ce
Parents:
95330f405fec0ba5de9b3943ba3ff73c15feda4e
git-author:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2013-06-21 19:26:52+02:00
git-committer:
Hans Schoenemann <hannes@mathematik.uni-kl.de>2013-06-21 19:28:09+02:00
Message:
chg: search p_Procs in %P and %b/MOD, report last try on failure
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpolys/polys/mod_raw.cc

    r95330f r96c5cb  
    6060{
    6161  void* handle = NULL;
    62   const char* bin_dir = feGetResource('b');
    63   if (bin_dir != NULL)
    64   {
    65     const int binary_name_so_length = 3 + strlen(DL_TAIL) + strlen(binary_name) + strlen(DIR_SEPP) + strlen(bin_dir);
    66     char* binary_name_so = (char *)omAlloc0( binary_name_so_length * sizeof(char) );
    67     snprintf(binary_name_so, binary_name_so_length, "%s%s%s%s", bin_dir, DIR_SEPP, binary_name, DL_TAIL);
     62  const char* proc_dir = feGetResource('P');
     63  char* binary_name_so=NULL;
     64  if (proc_dir != NULL)
     65  {
     66    const int binary_name_so_length = 3 + strlen(DL_TAIL) + strlen(binary_name) + strlen(DIR_SEPP) + strlen(proc_dir);
     67    binary_name_so = (char *)omAlloc0( binary_name_so_length * sizeof(char) );
     68    snprintf(binary_name_so, binary_name_so_length, "%s%s%s%s", proc_dir, DIR_SEPP, binary_name, DL_TAIL);
    6869    handle = dynl_open(binary_name_so);
    69     omFreeSize((ADDRESS)binary_name_so, binary_name_so_length * sizeof(char) );
    70   }
    71 
    72   if (handle == NULL )
    73   {
    74     const int binary_name_so_length = 3 + strlen(DL_TAIL) + strlen(binary_name);
    75     char* binary_name_so = (char *)omAlloc0( binary_name_so_length * sizeof(char) );
    76     snprintf(binary_name_so, binary_name_so_length, "%s%s", binary_name, DL_TAIL);
     70  }
     71
     72  if (handle == NULL ) // bin_dir must always be !=NULL
     73  {
     74    const char* bin_dir = feGetResource('b');
     75    if (binary_name_so!=NULL) omFree(binary_name_so);
     76    const int binary_name_so_length = 6 + strlen(DL_TAIL)
     77               + strlen(binary_name)
     78               +strlen(DIR_SEPP)*2
     79               +strlen(bin_dir);
     80    binary_name_so = (char *)omAlloc0( binary_name_so_length * sizeof(char) );
     81    snprintf(binary_name_so, binary_name_so_length, "%s%s%s%s", bin_dir, DIR_SEPP,"MOD",DIR_SEPP,binary_name, DL_TAIL);
    7782    handle = dynl_open(binary_name_so);
    7883
    79     omFree((ADDRESS)binary_name_so );
    8084  }
    8185
    8286  if (handle == NULL && ! warn_handle)
    8387  {
    84       Warn("Could not find dynamic library: %s%s", binary_name, DL_TAIL);
     88      Warn("Could not find dynamic library: %s%s (tried %s)",
     89              binary_name, DL_TAIL,binary_name_so);
    8590      Warn("Error message from system: %s", dynl_error());
    8691      if (msg != NULL) Warn("%s", msg);
     
    8893      warn_handle = TRUE;
    8994  }
     95  omfree((ADDRESS)binary_name_so );
    9096
    9197  return  handle;
Note: See TracChangeset for help on using the changeset viewer.