Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
# debrepository.icn # # This is not a full program. # This file is meant to be $included by others. # Edrx 2000jun26 global lslri_fname global lslri_basename global lslri_stem global tsv_head global tsv_tail global deb_stem global ideb_basenameS global udeb_basename2fname global udeb_basename2li global udeb_basenameS procedure fname2basename(s) s ? { every p := find("/"); tab(\p+1); return tab(0) } end procedure basename2stem(s) s ? return tab(find("_")) end procedure lslri_lines(fname) F := if fname == "-" then &input else open(fname) while li := read(F) do { li ? { tab(many(' ')) &pos <- .&pos & tab(many('0123456789')) & tab(many(' ')) lslri_fname := tab(upto(' ') | 0) lslri_basename := fname2basename(lslri_fname) lslri_stem := basename2stem(lslri_basename) } suspend li } if fname ~== "-" then close(F) end procedure tsv_lines(fname) F := if fname == "-" then &input else open(fname) while li := read(F) do { li ? { tsv_head := tab(find("\t")) move(1) tsv_tail := tab(0) } suspend li } if fname ~== "-" then close(F) end procedure deb_lines(fname) F := if fname == "-" then &input else open(fname) while li := read(F) do { deb_stem := basename2stem(li) suspend li } if fname ~== "-" then close(F) end procedure keys(T) S := set() every insert(S, key(T)) return S end procedure addtotable(T, k, v) if /(T[k]) then { T[k] := v return "first" } else { return "redundant" } end procedure read_installed_debs(fname) ideb_basenameS := set() # every li := deb_lines(fname) do insert(ideb_basenameS, li) end procedure read_upstream_debs(fname) udeb_basename2fname := table() udeb_basename2li := table() udeb_basenameS := set() # every li := lslri_lines(fname) do { udeb_basename2fname [lslri_basename] := lslri_fname udeb_basename2li [lslri_basename] := li insert(udeb_basenameS, lslri_basename) } end