Branch: Tag:

1999-02-26

1999-02-26 01:08:52 by Henrik Grubbström (Grubba) <grubba@grubba.org>

Added decode_charset().

Rev: lib/master.pike.in:1.39

1: - /* $Id: master.pike.in,v 1.38 1999/02/04 23:45:12 mast Exp $ + /* $Id: master.pike.in,v 1.39 1999/02/26 01:08:52 grubba Exp $    *    * Master-file for Pike.    *
473:    int _cache_full;    void fill_cache()    { + #ifdef RESOLV_DEBUG +  werror(describe_backtrace(({ sprintf("Filling cache in dirnode %O\n", +  dirname), +  backtrace() }))); + #endif /* RESOLV_DEBUG */    if (_cache_full) {    return;    }
569:    int _cache_full;    void fill_cache()    { + #ifdef RESOLV_DEBUG +  werror(describe_backtrace(({ "Filling cache in joinnode\n", +  backtrace() }))); + #endif /* RESOLV_DEBUG */    if (_cache_full) {    return;    }
957:   }       + static mixed _charset_mod; + /* This function is called by cpp() when it wants to do +  * character code conversion. +  */ + string decode_charset(string data, string charset) + { +  werror(sprintf("decode_charset(%O, %O)\n", data, charset)); +  +  if (!_charset_mod) { +  mixed mod = resolv("Locale"); +  +  _charset_mod = mod && mod["Charset"]; +  if (!_charset_mod) { +  compile_warning("-", 0, "No Locale.Charset module!"); +  return 0; +  } +  } +  +  object decoder; +  +  catch { +  decoder = _charset_mod->decoder(charset); +  }; +  +  if (!decoder) { +  compile_warning("-", 0, sprintf("Unknown charset %O!", charset)); +  return 0; +  } +  return decoder->feed(data)->drain(); + } +  +    /* This function is called whenever an #include directive is encountered    * it receives the argument for #include and should return the file name    * of the file to include