pike.git / lib / master.pike.in

version» Context lines:

pike.git/lib/master.pike.in:1945:   void unregister(program p)   {    // werror("Unregistering %O...\n", p);    if(string fname=rev_programs[p] || search(programs,p)) {    resolv_debug("unregister %s\n", fname);    if (m_delete (rev_programs, p))    m_delete (programs, fname);    else    programs[fname] = no_value;    +  string name = program_path_to_name (fname); +  mixed n = has_value (name, ".") ? +  resolv ((name / ".")[..<1] * ".") : +  get_root_module(); +  if (objectp (n) && (n->is_resolv_dirnode || n->is_resolv_joinnode)) +  n->delete_value (p); +     fname = dirname (fname); -  object n; +     if ( fname!="" && objectp (n = fc[fname]) ) -  if (n->is_resolv_dirnode || n->is_resolv_joinnode) +  if (n->is_resolv_dirnode) // Won't find joinnodes in fc.    n->delete_value (p);    }       object o = m_delete(objects, p);    if (objectp (o)) {    m_delete(rev_objects, o);    }       foreach (fc; string name; mixed mod)    if (objectp(mod) && object_program(mod) == p)    if (m_delete (rev_fc, mod))    m_delete (fc, name);    else    fc[name] = no_value;    -  // FIXME: Delete from caches in dirnodes and joinnodes. +  // FIXME: What about compat handlers?   }      protected program findprog(string pname,    string ext,    object|void handler,    void|int mkobj)   {    switch(ext)    {    case ".pike":