2 # usage: mkpty -n number [-d dir] [ -m mastermajor ]
5 # For master side, the files have a ptym/pty prefix.
6 # For slave side, the files have a pty/tty prefix.
7 # The suffix naming convention is:
8 # First 400: pty[p-za-ce-o]<hex_digit>
9 # Next 2500: pty[p-za-ce-o]<digit><digit>
10 # Last 25000: pty[p-za-ce-o]<digit><digit><digit>
12 export OS=$(/bin/uname -r | /usr/bin/cut -f2 -d.)
14 if [ "$OS" = "10" ]; then
21 [[ -c $1 ]] && return 0
23 chmod 666 $1 && chown bin:bin $1
26 typeset -i major=16 slave
27 typeset -i npty=0 minor=0 j k
30 typeset -l prefix[25] hex[16]
32 set -A prefix p q r s t u v w x y z a b c e f g h i j k l m n o
33 set -A hex 0 1 2 3 4 5 6 7 8 9 a b c d e f
37 while getopts :n:Dd:m: c; do
43 :) print -u2 $OPTARG requires a value; exit 1;;
44 *) print -u2 Invalid argument $OPTARG; exit 1;;
50 if [[ $# -ne 0 ]]; then
51 print -u2 "Usage: $0 -n number [-d dir] [-m mastermajor]"
61 while (( j < 25 && npty>0 )); do
62 name=${prefix[j]}${hex[k]}
63 makepty ptym/pty${name} ${major} ${minor}
64 makepty pty/tty${name} ${slave} ${minor}
66 rm -f pty${name} && ln ptym/pty${name} pty${name}
67 rm -f tty${name} && ln pty/tty${name} tty${name}
70 (( (k=k+1) >= 16 )) && k=0 && j=j+1
75 while (( j < 25 && npty>0 )); do
77 name=${prefix[j]}${n2}
78 makepty ptym/pty${name} ${major} ${minor}
79 makepty pty/tty${name} ${slave} ${minor}
81 (( (k=k+1) >= 100 )) && k=0 && j=j+1
86 while (( j < 25 && npty>0 )); do
88 name=${prefix[j]}${n3}
89 makepty ptym/pty${name} ${major} ${minor}
90 makepty pty/tty${name} ${slave} ${minor}
92 (( (k=k+1) >= 1000 )) && k=0 && j=j+1
99 mknod ptym/clone c ${major} 0xffffff
101 chown bin:bin ptym/clone