\begin{patch}{FileNameXmpPagePatch1} \begin{paste}{FileNameXmpPageFull1}{FileNameXmpPageEmpty1} \pastebutton{FileNameXmpPageFull1}{\hidepaste} \tab{5}\spadcommand{fn: FileName\bound{fndecl }} \indentrel{3}\begin{verbatim} Type: Void \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty1} \begin{paste}{FileNameXmpPageEmpty1}{FileNameXmpPagePatch1} \pastebutton{FileNameXmpPageEmpty1}{\showpaste} \tab{5}\spadcommand{fn: FileName\bound{fndecl }} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch2} \begin{paste}{FileNameXmpPageFull2}{FileNameXmpPageEmpty2} \pastebutton{FileNameXmpPageFull2}{\hidepaste} \tab{5}\spadcommand{fn := "/spad/src/input/fname.input"\free{fndecl }\bound{fn }} \indentrel{3}\begin{verbatim} (2) "/spad/src/input/fname.input" Type: FileName \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty2} \begin{paste}{FileNameXmpPageEmpty2}{FileNameXmpPagePatch2} \pastebutton{FileNameXmpPageEmpty2}{\showpaste} \tab{5}\spadcommand{fn := "/spad/src/input/fname.input"\free{fndecl }\bound{fn }} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch3} \begin{paste}{FileNameXmpPageFull3}{FileNameXmpPageEmpty3} \pastebutton{FileNameXmpPageFull3}{\hidepaste} \tab{5}\spadcommand{directory fn\free{fn }} \indentrel{3}\begin{verbatim} (3) "/spad/src/input" Type: String \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty3} \begin{paste}{FileNameXmpPageEmpty3}{FileNameXmpPagePatch3} \pastebutton{FileNameXmpPageEmpty3}{\showpaste} \tab{5}\spadcommand{directory fn\free{fn }} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch4} \begin{paste}{FileNameXmpPageFull4}{FileNameXmpPageEmpty4} \pastebutton{FileNameXmpPageFull4}{\hidepaste} \tab{5}\spadcommand{name fn\free{fn }} \indentrel{3}\begin{verbatim} (4) "fname" Type: String \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty4} \begin{paste}{FileNameXmpPageEmpty4}{FileNameXmpPagePatch4} \pastebutton{FileNameXmpPageEmpty4}{\showpaste} \tab{5}\spadcommand{name fn\free{fn }} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch5} \begin{paste}{FileNameXmpPageFull5}{FileNameXmpPageEmpty5} \pastebutton{FileNameXmpPageFull5}{\hidepaste} \tab{5}\spadcommand{extension fn\free{fn }} \indentrel{3}\begin{verbatim} (5) "input" Type: String \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty5} \begin{paste}{FileNameXmpPageEmpty5}{FileNameXmpPagePatch5} \pastebutton{FileNameXmpPageEmpty5}{\showpaste} \tab{5}\spadcommand{extension fn\free{fn }} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch6} \begin{paste}{FileNameXmpPageFull6}{FileNameXmpPageEmpty6} \pastebutton{FileNameXmpPageFull6}{\hidepaste} \tab{5}\spadcommand{fn := filename("/u/smwatt/work", "fname", "input")\free{fndecl }\bound{fn1 }} \indentrel{3}\begin{verbatim} (6) "/u/smwatt/work/fname.input" Type: FileName \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty6} \begin{paste}{FileNameXmpPageEmpty6}{FileNameXmpPagePatch6} \pastebutton{FileNameXmpPageEmpty6}{\showpaste} \tab{5}\spadcommand{fn := filename("/u/smwatt/work", "fname", "input")\free{fndecl }\bound{fn1 }} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch7} \begin{paste}{FileNameXmpPageFull7}{FileNameXmpPageEmpty7} \pastebutton{FileNameXmpPageFull7}{\hidepaste} \tab{5}\spadcommand{objdir := "/tmp"\bound{objdir }} \indentrel{3}\begin{verbatim} (7) "/tmp" Type: String \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty7} \begin{paste}{FileNameXmpPageEmpty7}{FileNameXmpPagePatch7} \pastebutton{FileNameXmpPageEmpty7}{\showpaste} \tab{5}\spadcommand{objdir := "/tmp"\bound{objdir }} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch8} \begin{paste}{FileNameXmpPageFull8}{FileNameXmpPageEmpty8} \pastebutton{FileNameXmpPageFull8}{\hidepaste} \tab{5}\spadcommand{fn := filename(objdir, "table", "spad")\free{fndecl objdir }\bound{fn2 }} \indentrel{3}\begin{verbatim} (8) "/tmp/table.spad" Type: FileName \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty8} \begin{paste}{FileNameXmpPageEmpty8}{FileNameXmpPagePatch8} \pastebutton{FileNameXmpPageEmpty8}{\showpaste} \tab{5}\spadcommand{fn := filename(objdir, "table", "spad")\free{fndecl objdir }\bound{fn2 }} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch9} \begin{paste}{FileNameXmpPageFull9}{FileNameXmpPageEmpty9} \pastebutton{FileNameXmpPageFull9}{\hidepaste} \tab{5}\spadcommand{fn := filename("", "letter", "")\free{fndecl }\bound{fn3 }} \indentrel{3}\begin{verbatim} (9) "letter" Type: FileName \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty9} \begin{paste}{FileNameXmpPageEmpty9}{FileNameXmpPagePatch9} \pastebutton{FileNameXmpPageEmpty9}{\showpaste} \tab{5}\spadcommand{fn := filename("", "letter", "")\free{fndecl }\bound{fn3 }} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch10} \begin{paste}{FileNameXmpPageFull10}{FileNameXmpPageEmpty10} \pastebutton{FileNameXmpPageFull10}{\hidepaste} \tab{5}\spadcommand{exists? "/etc/passwd"} \indentrel{3}\begin{verbatim} (10) true Type: Boolean \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty10} \begin{paste}{FileNameXmpPageEmpty10}{FileNameXmpPagePatch10} \pastebutton{FileNameXmpPageEmpty10}{\showpaste} \tab{5}\spadcommand{exists? "/etc/passwd"} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch11} \begin{paste}{FileNameXmpPageFull11}{FileNameXmpPageEmpty11} \pastebutton{FileNameXmpPageFull11}{\hidepaste} \tab{5}\spadcommand{readable? "/etc/passwd"} \indentrel{3}\begin{verbatim} (11) true Type: Boolean \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty11} \begin{paste}{FileNameXmpPageEmpty11}{FileNameXmpPagePatch11} \pastebutton{FileNameXmpPageEmpty11}{\showpaste} \tab{5}\spadcommand{readable? "/etc/passwd"} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch12} \begin{paste}{FileNameXmpPageFull12}{FileNameXmpPageEmpty12} \pastebutton{FileNameXmpPageFull12}{\hidepaste} \tab{5}\spadcommand{readable? "/etc/security/passwd"} \indentrel{3}\begin{verbatim} (12) false Type: Boolean \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty12} \begin{paste}{FileNameXmpPageEmpty12}{FileNameXmpPagePatch12} \pastebutton{FileNameXmpPageEmpty12}{\showpaste} \tab{5}\spadcommand{readable? "/etc/security/passwd"} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch13} \begin{paste}{FileNameXmpPageFull13}{FileNameXmpPageEmpty13} \pastebutton{FileNameXmpPageFull13}{\hidepaste} \tab{5}\spadcommand{readable? "/ect/passwd"} \indentrel{3}\begin{verbatim} (13) false Type: Boolean \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty13} \begin{paste}{FileNameXmpPageEmpty13}{FileNameXmpPagePatch13} \pastebutton{FileNameXmpPageEmpty13}{\showpaste} \tab{5}\spadcommand{readable? "/ect/passwd"} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch14} \begin{paste}{FileNameXmpPageFull14}{FileNameXmpPageEmpty14} \pastebutton{FileNameXmpPageFull14}{\hidepaste} \tab{5}\spadcommand{writable? "/etc/passwd"} \indentrel{3}\begin{verbatim} (14) false Type: Boolean \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty14} \begin{paste}{FileNameXmpPageEmpty14}{FileNameXmpPagePatch14} \pastebutton{FileNameXmpPageEmpty14}{\showpaste} \tab{5}\spadcommand{writable? "/etc/passwd"} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch15} \begin{paste}{FileNameXmpPageFull15}{FileNameXmpPageEmpty15} \pastebutton{FileNameXmpPageFull15}{\hidepaste} \tab{5}\spadcommand{writable? "/dev/null"} \indentrel{3}\begin{verbatim} (15) true Type: Boolean \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty15} \begin{paste}{FileNameXmpPageEmpty15}{FileNameXmpPagePatch15} \pastebutton{FileNameXmpPageEmpty15}{\showpaste} \tab{5}\spadcommand{writable? "/dev/null"} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch16} \begin{paste}{FileNameXmpPageFull16}{FileNameXmpPageEmpty16} \pastebutton{FileNameXmpPageFull16}{\hidepaste} \tab{5}\spadcommand{writable? "/etc/DoesNotExist"} \indentrel{3}\begin{verbatim} (16) false Type: Boolean \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty16} \begin{paste}{FileNameXmpPageEmpty16}{FileNameXmpPagePatch16} \pastebutton{FileNameXmpPageEmpty16}{\showpaste} \tab{5}\spadcommand{writable? "/etc/DoesNotExist"} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch17} \begin{paste}{FileNameXmpPageFull17}{FileNameXmpPageEmpty17} \pastebutton{FileNameXmpPageFull17}{\hidepaste} \tab{5}\spadcommand{writable? "/tmp/DoesNotExist"} \indentrel{3}\begin{verbatim} (17) true Type: Boolean \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty17} \begin{paste}{FileNameXmpPageEmpty17}{FileNameXmpPagePatch17} \pastebutton{FileNameXmpPageEmpty17}{\showpaste} \tab{5}\spadcommand{writable? "/tmp/DoesNotExist"} \end{paste}\end{patch} \begin{patch}{FileNameXmpPagePatch18} \begin{paste}{FileNameXmpPageFull18}{FileNameXmpPageEmpty18} \pastebutton{FileNameXmpPageFull18}{\hidepaste} \tab{5}\spadcommand{fn := new(objdir, "xxx", "yy")\free{objdir fndecl }\bound{fn4 }} \indentrel{3}\begin{verbatim} (18) "/tmp/xxx82222.yy" Type: FileName \end{verbatim} \indentrel{-3}\end{paste}\end{patch} \begin{patch}{FileNameXmpPageEmpty18} \begin{paste}{FileNameXmpPageEmpty18}{FileNameXmpPagePatch18} \pastebutton{FileNameXmpPageEmpty18}{\showpaste} \tab{5}\spadcommand{fn := new(objdir, "xxx", "yy")\free{objdir fndecl }\bound{fn4 }} \end{paste}\end{patch}