/pliant/linux/kernel/library.pli
 
 1  module "/pliant/language/unsafe.pli" 
 2  module "/pliant/language/stream.pli" 
 3  module "/pliant/admin/file.pli" 
 4  module "/pliant/admin/execute.pli" 
 5   
 6   
 7  function file_libraries prog -> libs 
 8    arg Str prog ; arg List:Str libs  
 9    libs := var List:Str empty_list 
 10    var Str temp := file_temporary 
 11    if (execute prog environment "LD_TRACE_LOADED_OBJECTS=1[0]" output temp)<>0 
 12      execute "ldd "+prog output temp 
 13    (var Stream s) open temp in+safe 
 14    while not s:atend 
 15      var Str := readline 
 16      if (parse any:(var Str library) "=>" any) 
 17        library := library (library search_last "/" -1)+library:len 
 18        # console "  " library eol 
 19        libs += library 
 20    close 
 21    file_delete temp 
 22   
 23  export file_libraries