Branch: Tag:

2001-09-02

2001-09-02 01:36:14 by Marcus Comstedt <marcus@mc.pp.se>

Relocatable dumped modules TNG. Fully optional and actually working. :)

Rev: bin/install.pike:1.79
Rev: lib/master.pike.in:1.169
Rev: lib/modules/Calendar.pmod/Events.pmod:1.10
Rev: lib/modules/Calendar.pmod/TZnames.pmod:1.10
Rev: lib/modules/Calendar.pmod/Timezone.pmod:1.22
Rev: src/Makefile.in:1.271
Rev: src/configure.in:1.545
Rev: src/dumpmodule.pike:1.22

1:   /* -*- Pike -*-    * -  * $Id: master.pike.in,v 1.168 2001/08/31 07:18:19 hubbe Exp $ +  * $Id: master.pike.in,v 1.169 2001/09/02 01:36:13 marcus Exp $    *    * Master-file for Pike.    *
33:   #define PIKE_WARNINGS 0   #endif /* PIKE_WARNINGS */    + #undef PIKE_MODULE_RELOC +    /*    * Functions begin here.    */
53:   #define fakeroot(X) X   #endif    + #ifdef PIKE_MODULE_RELOC + string relocate_module(string s) + { +  if(s[..1]=="/$" && (s+"/")[..20] == "/${PIKE_MODULE_PATH}/") { +  string tmp = s[21..]; +  foreach(pike_module_path, string path) { +  string s2 = fakeroot(sizeof(tmp)? combine_path(path, tmp) : path); +  if(master_file_stat(s2)) +  return s2; +  } +  } +  return fakeroot(s); + }    -  + string unrelocate_module(string s) + { +  if(s[..1]=="/$" && (s+"/")[..20] == "/${PIKE_MODULE_PATH}/") +  return s; +  +  foreach(pike_module_path, string path) +  if(s == path) +  return "/${PIKE_MODULE_PATH}"; +  else { +  string s2 = combine_path(path, ""); +  if(s[..sizeof(s2)-1] == s2) +  return "/${PIKE_MODULE_PATH}/"+s[sizeof(s2)..]; +  } +  return s; + } + #ifdef fakeroot + #undef fakeroot + #endif + #define fakeroot relocate_module + #endif +  +    //! @appears is_absolute_path   //! Check if a path @[p] is fully qualified (ie not relative).   //!
392:    }   #endif    + #ifdef PIKE_MODULE_RELOC +  fname = unrelocate_module(fname); + #endif +    #ifdef PIKE_AUTORELOAD    if(!autoreload_on || load_time[fname]>=time())   #endif
1683:   static private function(string:string) _trim_file_name_cb=0;   string trim_file_name(string s)   { + #ifdef PIKE_MODULE_RELOC +  s = relocate_module(s); + #endif    if(getenv("LONG_PIKE_ERRORS")) return s;    if(getenv("SHORT_PIKE_ERRORS")) return BASENAME(s);