定制标题页

root 用户可以通过修改 sh 属性的定义为用户创建定制标题页。

因为假脱机程序进程可以访问向假脱机程序提交作业的用户环境,所以 root 用户可以修改 sh 属性定义中指定处理哪个标题页模板的那部分。

例如,H.ascii 指定应该处理和打印哪个标题页模板。 它可以被您选择的用户环境变量(例如 $MYHEADER)代替,显示如下。

 %Ide          INCLUDE: (Directory Containing Miscellaneous 
Modules)
 '/pioburst '
 %F[H]         If "-H] Argument" on Command Line, "-# Argument" 
-> OUTPUT
 ' '
 %Idb          INCLUDE: (Directory Containing Header and Trailer 
Text Files)
 '/$MYHEADER | '
 %Ide          INCLUDE: (Directory Containing Miscellaneous 
Modules)
 '/pioformat -@'
 %Idd          INCLUDE: (Directory Containing Digested Data Base 
Files)
 '/'
 %Imm          INCLUDE: (File Name Of (Digested) Data Base; Init.
 By
               "piodigest" (mt.md.mn.mq:mv))
 ' -!'
 %Idf          INCLUDE: (Directory Containing Loadable Formatter 
Routines)
 '/piof5202 -L! -J! '
 %IsH          INCLUDE: (FORMATTING FLAGS for header page)
 ' -u'
 %IuH          INCLUDE: (Input PAPER TRAY for header page)

要使用户 susan 能够获得此队列的定制标题页,root 用户可以使用以下过程:

  • 输入 cp /usr/lib/lpd/pio/burst/H.ascii /usr/lib/lpd/pio/burst/H.susan
  • H.susan 编辑为标题页中的 Susan 的状态。
  • 将 Susan 的环境中的环境变量 MYHEADER 设置为 H.susan。 (例如,在 Korn shell 程序中,使用 export MYHEADER=H.susan)。

当用户 susan 向此队列提交作业时,sh 属性对标题页模板的引用将解析至 /usr/lib/lpd/pio/burst/H.susan,用户 susan 将收到定制标题页。 此场景的问题是必须为使用与此虚拟打印机相关联的队列的任何人定义环境变量 MYHEADER ; 否则,虚拟打印机无法解析对 /usr/lib/lpd/pio/burst/$MYHEADER的引用。 如果未定义 $MYHEADER,将会导致错误; 作业也许可以打印,但是最好标题页可以回收。

要避免使用此队列的每个人都必须定义 MYHEADER 这个问题,您可以在 sh 属性定义中整合一些 shell 代码,用于在创建标题页管道之前先检查用户环境。 下面显示了执行此操作的一种方法。

Pipeline for Header Page
sh = { if test X"$MYHEADER" = X ; then %Ide/pioburst %F[H] 
%Idb/H.ascii | %Ide/pioformat -@%Idd/%Imm -!%Idf/piof5202 -L! -J!
%IsH -u%IuH; else %Ide/pioburst %F[H] %Idb/$MYHEADER |
%Ide/pioformat -@%Idd/%Imm -!%Idf/piof5202 -L! -J! %IsH -u%IuH;
fi; } 
 '{ if test X"$MYHEADER" = X ; then ' 
 %Ide          INCLUDE: (Directory Containing Miscellaneous
Modules)
 '/pioburst '  
 %F[H]         If "-H] Argument" on Command Line, "-# Argument"
-> OUTPUT
 ' '           
 %Idb          INCLUDE: (Directory Containing Header and Trailer
Text Files)
 '/H.ascii | ' 
 %Ide          INCLUDE: (Directory Containing Miscellaneous
Modules)
 '/pioformat -@' 
 %Idd          INCLUDE: (Directory Containing Digested Data Base
Files)
 '/'           
 %Imm          INCLUDE: (File Name Of (Digested) Data Base; Init.
By
               "piodigest" (mt.md.mn.mq:mv))
 ' -!'         
 %Idf          INCLUDE: (Directory Containing Loadable Formatter
Routines)
 '/piof5202 -L! -J! ' 
 %IsH          INCLUDE: (FORMATTING FLAGS for header page)
 ' -u'         
 %IuH          INCLUDE: (Input PAPER TRAY for header page)
 '; else '     
 %Ide          INCLUDE: (Directory Containing Miscellaneous
Modules)
 '/pioburst '  
 %F[H]         If "-H] Argument" on Command Line, "-# Argument"
-> OUTPUT
 ' '           
 %Idb          INCLUDE: (Directory Containing Header and Trailer
Text Files)
 '/$MYHEADER | ' 
 %Ide          INCLUDE: (Directory Containing Miscellaneous
Modules)
 '/pioformat -@' 
 %Idd          INCLUDE: (Directory Containing Digested Data Base
Files)
 '/'           
 %Imm          INCLUDE: (File Name Of (Digested) Data Base; Init.
By
               "piodigest" (mt.md.mn.mq:mv))
 ' -!'         
 %Idf          INCLUDE: (Directory Containing Loadable Formatter
Routines)
 '/piof5202 -L! -J! ' 
 %IsH          INCLUDE: (FORMATTING FLAGS for header page)
 ' -u'         
 %IuH          INCLUDE: (Input PAPER TRAY for header page)
 '; fi; } '    

原始的 st 定义在新的 st 定义中重复了两遍。 shell 代码查看 MYHEADER 是否已定义;如果 MYHEADER 未定义,那么使用标题页模板 H.ascii,否则使用标题页模板 $MYHEADER