PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/snap/core/17210/sbin/
Upload File :
Current File : //snap/core/17210/sbin/MAKEDEV
#! /bin/sh -
# $Id$

#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#
# Customisation:
#   The devices fall into various classes.  This section contains the mapping
# from a class name into a group name and permission.
#   You will almost certainly need to edit the group name to match your
# system, and you may change the permissions to suit your preference.  These
# lines _must_ be of the format "user group perm".

 public="  root root   0666"
private="  root root   0600"
 system="  root root   0660"
   kmem="  root kmem   0640"
    tty="  root tty    0666"
   cons="  root tty    0600"
dialout="  root dialout 0660"
    dip="  root dip    0660"
  mouse="  root root   0660"
printer="  root lp     0660"
 floppy="  root floppy 0660"
   disk="  root disk   0660"
   scsi="  root root   0600"
  cdrom="  root cdrom  0660"
   tape="  root tape   0660"
  audio="  root audio  0660"
  video="  root video  0660"
  ibcs2="  root root   0666"
scanner="  root root   0666"
   coda="  root root   0600"
  ipsec="  root root   0200"
readable="  root root   0444"
   lirc="  root video   0640"

MAXVT=63

# defaults for $major_*
major_ide0=3
major_ide1=22
major_sd=8
major_lp=6

# Remark: OSS/Linux becomes major_OSSLinux

#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#

# don't stomp on devfs users
if  [ -c .devfsd ]
then
    echo ".devfsd presence implies active DevFS.  Aborting MAKEDEV invocation."
    # use exit 0, not 1, so postinst scripts don't fail on this
    exit 0
fi

#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#

# don't stomp on non-Linux users
if [ "$(uname -s)" != "Linux" ]
then
    echo "Results undefined on non-Linux systems, aborting MAKEDEV invocation."
    # use exit 0, not 1, so postinst scripts don't fail on this
    exit 0
fi

#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#

procfs=/proc

opt_v=
opt_d=
opt_n=

while [ $# -ge 1 ]
do
	case $1 in
		--)	shift; break ;;
		-v)	shift; opt_v=1 ;;
		-d)	shift; opt_d=1 ;;
		-n)	shift; opt_n=1; opt_v=1 ;;
		-V)	shift; opt_V=1 ;;
		-*)	echo "$0: unknown flag \"$1\"" >&2; exit 1 ;;
		*)	break ;;
	esac
done

if [ "$opt_V" ]
then
	echo "This is Debian MAKEDEV.  For version info, try 'dpkg --list makedev'"
	echo "See /usr/share/doc/makedev/ for more information on Debian MAKEDEV."
	exit 0
fi

opts="${opt_n:+-n} ${opt_v:+-v} ${opt_d:+-d}"

#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#

devicename () {	# translate device names to something safe
	# A-Z is not full alphabet in all locales (e.g. in et_EE)
	echo "$*" | LC_ALL=C sed -e 's/[^A-Za-z0-9_]/_/g' 
}

makedev () {	# usage: makedev name [bcu] major minor owner group mode
	if [ "$opt_v" ]
	then	if [ "$opt_d" ]
		then	echo "delete $1"
		else	echo "create $1	$2 $3 $4 $5:$6 $7" 
		fi
	fi
	# missing parameters are a bug - bail - should we do an exit 1 here?
	case :$1:$2:$3:$4:$5:$6:$7: in
		*::*) echo "Warning: MAKEDEV $@ is missing parameter(s)." >&2;;
	esac
	if [ ! "$opt_n" ]
	then	
		if [ "$opt_d" ]
		then
			rm -f $1
		else
			rm -f $1-
			if mknod $1- $2 $3 $4 &&
			   chown $5:$6 $1- &&
			   chmod $7 $1- &&
			   mv $1- $1
			then
				:	# it worked
			else
					# Didn't work, clean up any mess...
				echo "makedev $@: failed"
				rm -f $1-
			fi
		fi
	fi
}
makefifo () { # usage: makefifo name owner group mode
	if [ "$opt_v" ]
	then	if [ "$opt_d" ]
		then	echo "delete $1"
		else	echo "create $1 $2:$3 $4" 
		fi
	fi
	# missing parameters are a bug - bail - should we do an exit 1 here?
	case :$1:$2:$3:$4: in
		*::*) echo "Warning: MAKEFIFO $@ is missing parameter(s)." >&2;;
	esac
	if [ ! "$opt_n" ]
	then	
		if [ "$opt_d" ]
		then
			rm -f $1
		else
			rm -f $1-
			if mknod $1- p &&
			   chown $2:$3 $1- &&
			   chmod $4 $1- &&
			   mv $1- $1
			then
				:	# it worked
			else
					# Didn't work, clean up any mess...
				echo "makefifo $@: failed"
				rm -f $1-
			fi
		fi
	fi
}
symlink () {	# usage: symlink name target
	if [ "$opt_v" ]
	then	if [ "$opt_d" ]
		then	echo "delete $1"
		else	echo "create $1	-> $2"
		fi
	fi
	[ ! "$opt_n" ] && rm -f $1 &&
	[ ! "$opt_d" ] && ln -s $2 $1
}

#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#

# Debian allows us to assume /bin/sh is a POSIX compliant shell, so go for it!

math () {
	eval echo "\$(($*))"
}
index () {	# index string c
	eval "I=\${1%$2*}"
	eval echo "\${#I}"
}
suffix () {
	eval echo "\${1#$2}"
}
strip () {
	eval echo "\${1% $2 *} \${1#* $2 }"
}
first () {
	echo "${1%%?}"
}
second () {
	echo "${1##?}"
}
substr () {
	echo $1 | dd bs=1 count=1 skip=$(( $2 - 1 )) 2> /dev/null
}

#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#---#

devices=
if [ ! -f $procfs/devices ]
then
	echo "$0: warning: can't read $procfs/devices" >&2
else
	exec 3<$procfs/devices
	while read major device extra <&3
	do
		device=`echo $device | sed 's#/.*##'`
		case "$major" in
			Character|Block|'')
				;;
			*)
				safedevname=`devicename $device`
				eval "major_$safedevname=$major"
				devices="$devices $device"
				;;
		esac
	done
	exec 3<&-
fi

Major () {
	device=$2
	devname=`devicename $1`
	if [ "$opt_d" ]
	then
		echo -1	# don't care
	else
		eval echo \${major_$devname:-\${device:?\"unknown major number for $1\"}}
	fi
}

cvt () {
	while [ $# -ne 0 ]
	do
		case "$1" in
			mem|tty|ttyp|cua|cub|cui)	;;
			hd)	(for d in a b c d e f g h i j k l m n o p ; do
					echo -n hd$d " "
				 done) ; echo
				;;
			ide0)	echo hda hdb ;;
			ide1)	echo hdc hdd ;;
			ide2)	echo hde hdf ;;
			ide3)	echo hdg hdh ;;
			ide4)	echo hdi hdj ;;
			ide5)	echo hdk hdl ;;
			ide6)	echo hdm hdn ;;
			ide7)	echo hdo hdp ;;
			ide8)	echo hdq hdr ;;
			ide9)	echo hds hdt ;;
			sd)	(for d in a b c d e f g h i j k l m n o p ; do
					echo -n sd$d " "
				 done) ; echo
				;;
			dasd)   (for d in a b c d e f g h i j k l m \
					n o p q r s t u v w x y z ; do
					echo -n dasd$d " "
				done) ; echo
				;;
			raw)	echo raw ;;
			sg)	echo sg ;;
			sr)	echo scd ;;
			st)	echo st0 ;;
			xd)	echo xda xdb ;;
			ad)	echo ada adb ;;
			lp)	echo lp ;;
			mt)	echo ftape ;;
			qft)	echo ftape ;;
			loop)	echo loop ;;
			md)	echo md ;;
			ibcs2)	echo ibcs2 ;;
			tpqic02)	echo qic ;;
			sound)		echo audio ;;
			logiscan)	echo logiscan ;;
			ac4096)		echo ac4096 ;;
			hw)	echo helloworld ;;
			sbpcd | sbpcd[123])	echo $1 ;;
			joystick)	echo js ;;
			input)	echo input ;;
			apm_bios)	echo apm ;;
			dcf)		echo dcf ;;
			aztcd)		echo aztcd ;;
			cm206cd)	echo cm206cd ;;
			gscd)		echo gscd ;;
			pcmcia)	;; # taken care of by its own driver
			ttyC)	echo cyclades ;;
			isdn)	echo isdnmodem isdnbri dcbri ;;
			vcs)	;;
			pty)	echo pty ;;
			misc)	echo misc ;;
			3dfx)	echo 3dfx ;;
			agpgart)	echo agpgart ;;
			microcode)	echo microcode ;;
			ipmi|ipmikcs)	echo ipmi ;;
			fb)	echo fb ;;
			nb|drbd)	echo nb0 nb1 nb2 nb3 nb4 nb5 nb6 nb7;;
			netlink)	echo netlink ;;
			tap)	echo netlink ;;
			hamradio)	echo hamradio ;;
			snd)	;;
			ptm)	;;
			pts)	;;
			ttyB)	(for l in 0 1 2 3 4 5 6 7 ; do
					echo -n ttyB$l " "
				 done) ; echo
				;;
			ttyS)	echo ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ;;
			ttyI)	echo ttyI0 ttyI1 ttyI2 ttyI3 ;;
			ircomm|irlpt)	irda ;;
			ppp)    echo ppp ;;
			usb)    echo usb ;;
			dpt_i2o)	echo dpti ;;
			bluetooth)	echo bluetooth ;;
			lvm)    ;; # taken care of by LVM userspace tools
			ramdisk)	echo ram ;;
			null)	echo std ;;
			zero)	echo std ;;
#			*)	echo "$0: don't know what \"$1\" is" >&2 ;;
			*)	echo $1
		esac
		shift
	done
}

for arg in `cvt $*`
do
	# this is to make the case patterns work as expected in all locales
	LC_ALL=C
	case $arg in
	generic)
		# pick the right generic-<arch> using dpkg's knowledge
		case `dpkg --print-architecture` in
			alpha)
				$0 $opts generic-alpha
				;;
			arm|armeb|armel)
				$0 $opts generic-arm
				;;
			hppa)
				$0 $opts generic-hppa
				;;
			i386|lpia)
				$0 $opts generic-i386
				;;
			amd64)
				$0 $opts generic-i386
				;;
			ia64)
				$0 $opts generic-ia64
				;;
			m68k)
				$0 $opts generic-m68k
				;;
			mips)
				$0 $opts generic-mips
				;;
			mipsel)
				$0 $opts generic-mipsel
				;;
			powerpc)
				$0 $opts generic-powerpc
				;;
			ppc64)
				$0 $opts generic-powerpc
				;;
			s390)
				$0 $opts generic-s390
				;;
			sh*)	
				$0 $opts generic-sh
				;;
			sparc)
				$0 $opts generic-sparc
				;;
			*)
				echo "$0: no support for generic on this arch" >&2
				exit 1
				;;
		esac
		;;
	generic-alpha)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts xda xdb
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
		$0 $opts busmice
		$0 $opts lp
		$0 $opts par
		$0 $opts audio
		$0 $opts fb
		$0 $opts dac960
		;;
	generic-arm)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts xda xdb
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
		$0 $opts busmice
		makedev sunmouse  c 10 6 $mouse
		$0 $opts lp
		$0 $opts par
		$0 $opts audio
		$0 $opts fb
		;;
	generic-hppa)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
		$0 $opts ttyB0 ttyB1 ttyB2 ttyB3 ttyB4 ttyB5 ttyB6 ttyB7
		$0 $opts busmice
		$0 $opts lp
		$0 $opts par
		$0 $opts audio
		$0 $opts fb
		$0 $opts rtc
		;;
	generic-i386)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts xda xdb
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
		$0 $opts busmice
		$0 $opts input
		$0 $opts lp
		$0 $opts par
		$0 $opts audio
		$0 $opts fb
		$0 $opts isdn-io eda edb sonycd mcd mcdx cdu535
		$0 $opts optcd sjcd cm206cd gscd 
		$0 $opts lmscd sbpcd aztcd bpcd dac960 dpti ida ataraid cciss
		$0 $opts i2o.hda i2o.hdb i2o.hdc i2o.hdd
		;;
	generic-ia64)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ttyS5
		$0 $opts busmice
		$0 $opts input
		$0 $opts lp
		$0 $opts par
		$0 $opts audio
		$0 $opts fb
		$0 $opts efirtc
		;;
	generic-m68k)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts scd0 scd1
		$0 $opts sg
		$0 $opts ada adb adc add ade adf
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4 ttyS5
		$0 $opts m68k-mice
		$0 $opts lp
		$0 $opts par
		$0 $opts nvram
		$0 $opts audio
		$0 $opts fb
		;;
	generic-mips)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
		$0 $opts lp
		$0 $opts par
		$0 $opts audio
		$0 $opts fb
		$0 $opts busmice
		;;
	generic-mipsel)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
		$0 $opts lp
		$0 $opts par
		$0 $opts audio
		$0 $opts fb
		$0 $opts rtc
		;;
	generic-powerpc)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
		$0 $opts busmice
		$0 $opts m68k-mice
		$0 $opts input
		$0 $opts lp
		$0 $opts par
		$0 $opts nvram
		$0 $opts audio
		$0 $opts adb
		$0 $opts fb
		$0 $opts rtc
		$0 $opts isdn-io
		;;
	generic-s390)
		$0 $opts std
		$0 $opts fd
		$0 $opts dasda dasdb dasdc dasdd dasde dasdf dasdg dasdh \
			dasdi dasdj dasdk dasdl dasdm dasdn dasdo dasdp \
			dasdq dasdr dasds dasdt dasdu dasdv dasdw dasdx \
			dasdy dasdz
		$0 $opts pty
		$0 $opts consoleonly
		$0 $opts rtc
		;;
	generic-sh)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4  
		$0 $opts ttySC0 ttySC1 ttySC2 ttySC3 
		$0 $opts lp
		$0 $opts par
		$0 $opts audio
		$0 $opts fb
		$0 $opts rtc
		;;
	generic-sparc)
		$0 $opts std
		$0 $opts fd
		$0 $opts fd0 fd1
		$0 $opts hd sd
		$0 $opts scd0 scd1
		$0 $opts st0 st1
		$0 $opts sg
		$0 $opts pty
		$0 $opts console
		$0 $opts ttyS0 ttyS1 ttyS2 ttyS3 ttyS4
		$0 $opts busmice
		$0 $opts fb
		$0 $opts rtc
		makedev kbd  c 11 0 $cons
		makedev sunmouse  c 10 6 $mouse
		symlink mouse sunmouse
		makedev openprom  c 10 139 root root 0664
		;;
	local)
		$0.local $opts
		;;
	std)
		makedev mem  c 1 1 $kmem
		makedev kmem c 1 2 $kmem
		makedev null c 1 3 $public
		makedev port c 1 4 $kmem
		makedev zero c 1 5 $public
		symlink core $procfs/kcore
		makedev full c 1 7 $public
		makedev random c 1 8 $public
		makedev urandom c 1 9 $public
		makedev tty  c 5 0 $tty
		$0 $opts ram
		$0 $opts loop
		;;
	hamradio)
		$0 $opts scc
		$0 $opts bc
		;;
	scc)
		for unit in 0 1 2 3 4 5 6 7 
		do
			makedev scc$unit c 34 $unit $system
		done
		;;
	mtd)	
		for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
			makedev mtd$unit c 90 `math $unit \* 2` $system
		done
		;;
	bc)	
		for unit in 0 1 2 3
		do
			makedev bc$unit c 51 $unit $system
		done
		;;
	random)
		makedev random c 1 8 $public
		;;
	urandom)
		makedev urandom c 1 9 $readable
		;;
	ram)
		for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; do
			makedev ram$i  b 1 $i $disk
		done
		symlink ram ram1
		;;
	ram[0-9]|ram1[0-6])
		unit=`suffix $arg ram`
		makedev ram$unit b 1 $unit $disk
		;;
	initrd)
		makedev initrd b 1 250 $disk
		;;
	raw)
		makedev rawctl c 162 0 $disk
		mkdir -p raw
		for i in 1 2 3 4 5 6 7 8; do
			makedev raw/raw$i c 162 $i $disk
		done
		;;
	consoleonly)
		makedev tty0 c 4 0 $cons
		#	new kernels need a device, old ones a symlink... sigh
		kern_rev1=`uname -r | sed -e 's@^\([^.]*\)\..*@\1@'`
		kern_rev2=`uname -r | sed -e 's@^[^.]*\.\([^.]*\)\..*@\1@'`
		if [ $kern_rev1 -gt 2 ]
		then
			makedev console c 5 1 $cons
		else
			if [ $kern_rev1 -eq 2 ] && [ $kern_rev2 -ge 1 ]
			then
				makedev console c 5 1 $cons
			else
				symlink console tty0
			fi
		fi
		;;
	console)
		$0 $opts consoleonly
		major=`Major vcs 7`       # not fatal
		[ "$major" ] && makedev vcs0 c $major 0 $cons
		symlink vcs vcs0
		[ "$major" ] && makedev vcsa0 c $major 128 $cons
		symlink vcsa vcsa0
		# individual vts
		line=1
		while [ $line -le $MAXVT ] && [ $line -le 63 ]
		do
			makedev tty$line c 4 $line $cons
			[ "$major" ] && makedev vcs$line c $major $line $cons
			[ "$major" ] && makedev vcsa$line c $major `math $line + 128` $cons
			line=`math $line + 1`
		done
		;;
	adb)
		# pick the right arch device using dpkg's knowledge
		case `dpkg --print-architecture` in
			powerpc)
				# ADB bus devices (char)
				makedev adb c 56 0 $mouse
				makedev adbmouse c 10 10 $mouse
				;;
			m68k)
				# ACSI disk 2, whole device (block)
				makedev adb b 28 16 $disk
				for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
				do
					minor=$(( 16 + $part ))
					makedev adb$part b 28 $minor $disk
				done
				;;
			*)
				echo "no support for adb on this arch" >&2
				exit 1
				;;
		esac
		;;
	raw1394)
		makedev raw1394 c 171 0 $disk
		;;
	video1394)
		rm -f video1394
		mkdir -p video1394
		for i in `seq 0 15`
		do
			makedev video1394/$i c 171 `math 16 + $i` $video
		done
		;;
	alsa)
		echo "You requested 'alsa' devices.  Please install the alsa-base package instead,"
		echo "which creates and maintains device information for ALSA."
		;;
	nvram)
		makedev nvram c 10 144 $mouse
		;;
	tty[1-9]|tty[1-5][0-9]|tty[6][0-3])
		line=`suffix $arg tty`
		makedev tty$line c 4 $line $cons
		;;
	ttyS[0-9]|ttyS[1-5][0-9]|ttyS[6][0-3])
		line=`suffix $arg ttyS`
		minor=`math 64 + $line`
		makedev ttyS$line c 4 $minor $dialout
		;;
	ttySC[0-3])
		line=`suffix $arg ttySC`
		minor=`math 8 + $line`
		makedev ttySC$line c 204 $minor $dialout
 		;;
	ttyB[0-7])
		minor=`suffix $arg ttyB`
		makedev ttyB$minor c 11 $minor $dialout
		;;
	pty[a-ep-z])
		bank=`suffix $arg pty`
		base=`index pqrstuvwxyzabcde $bank`
		base=`math $base \* 16`
		for i in 0 1 2 3 4 5 6 7 8 9 a b c d e f
		do
			j=`index 0123456789abcdef $i`
			makedev pty$bank$i c 2 `math $base + $j` $tty
			makedev tty$bank$i c 3 `math $base + $j` $tty
		done
		;;
	pty)
		ptysufs=""
		for i in p q r s t u v w x y z a b c d e
		do
			ptysufs="$ptysufs pty$i"
		done
		$0 $opts $ptysufs ptmx
		;;
	ptmx)
		# master pty multiplexer for 2.1 kernels
		makedev ptmx c 5 2 $tty
		;;
	cyclades|ttyC)
		major1=`Major ttyC 19` || continue
		#major2=`Major cub 20` || continue
		for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
			  16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 
		do
			makedev ttyC$i c $major1 $i $dialout
			#makedev cub$i c $major2 $i $dialout
		done
		;;
	stallion|ttyE)
		major1=`Major ttyE 24` || continue
		#major2=`Major cue 25` || continue
		majorc=28
		minor=0
		until [ $minor -gt 256 ]
		do
			makedev ttyE$minor c $major1 $minor $dialout
			#makedev cue$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		for i in 0 1 2 3
		do
			makedev staliomem$i c $majorc $i $private
		done
		;;
	chase|ttyH)
		major1=`Major ttyH 17` || continue
		#major2=`Major cuh 18` || continue
		minor=0
		until [ $minor -gt 16 ] # tell me if 16 is wrong
		do
			makedev ttyH$minor c $major1 $minor $dialout
			#makedev cuh$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	rocketport|ttyR)
		major1=`Major ttyR 46` || continue
		#major2=`Major cur 47` || continue
		minor=0
		until [ $minor -gt 64 ] # tell me if 64 is wrong
		do
			makedev ttyR$minor c $major1 $minor $dialout
			#makedev cur$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	ttyV)
		major1=`Major ttyV 105` || continue
		#major2=`Major cuv 106` || continue
		minor=0
		until [ $minor -gt 16 ] # tell me if 16 is wrong
		do
			makedev ttyV$minor c $major1 $minor $dialout
			#makedev cuv$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	digi|ttyD)
		major1=`Major ttyD 22` || continue
		#major2=`Major cud 23` || continue
		minor=0
		until [ $minor -gt 16 ] # tell me if 16 is wrong
		do
			makedev ttyD$minor c $major1 $minor $dialout
			#makedev cud$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	specialix|ttyX)
		major1=`Major ttyX 32` || continue
		#major2=`Major cux 33` || continue
		minor=0
		until [ $minor -gt 16 ] # tell me if 16 is wrong
		do
			makedev ttyX$minor c $major1 $minor $dialout
			#makedev cux$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	specialixIO8|ttyW)
		major1=`Major ttyW 75` || continue
		#major2=`Major cuw 76` || continue
		minor=0
		until [ $minor -gt 16 ] # tell me if 16 is wrong
		do
			makedev ttyW$minor c $major1 $minor $dialout
			#makedev cuw$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	PAM|ttyM)
		major1=`Major ttyM 79` || continue
		#major2=`Major cum 80` || continue
		minor=0
		until [ $minor -gt 16 ] # tell me if 16 is wrong
		do
			makedev ttyM$minor c $major1 $minor $dialout
			#makedev cum$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	riscom|ttyL)
		major=`Major ttyL 48` || continue
		minor=0
		until [ $minor -gt 16 ] # tell me if 16 is wrong
		do
			makedev ttyL$minor c $major $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	computone|ttyF)
		major=`Major ttyF 71` || continue
		#major2=`Major cuf 72` || continue
		minor=0
		until [ $minor -gt 255 ]
		do
			makedev ttyF$minor c $major $minor $dialout
			#makedev cuf$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		major=73
		for i in 0 4 8 12
		do
			makedev ip2ipl$i  c $major $i $private
			makedev ip2stat$i c $major `math $i + 1` $private
		done
		;;
	ESP|ttyP)
		major=`Major ttyP 57` || continue
		#major2=`Major cup 58` || continue
		minor=0
		until [ $minor -gt 4 ] # tell me if 4 is wrong
		do
			makedev ttyP$minor c $major $minor $dialout
			#makedev cup$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	COMX|comx)
		major=`Major comx 88` || continue
		minor=0
		until [ $minor -gt 4 ] # tell me if 4 is wrong
		do
			makedev comx$minor c $major $minor $private
			minor=`math $minor + 1`
		done
		;;
	isdnmodem|ttyI)
		major1=`Major ttyI 43` || continue
		#major2=`Major cui 44` || continue
		minor=0
		until [ $minor -gt 63 ]
		do
			makedev ttyI$minor c $major1 $minor $dialout
			#makedev cui$minor c $major2 $minor $dialout
			minor=`math $minor + 1`
		done
		;;
	isdnbri)
		major=45
		minor=0
		until [ $minor -gt 63 ]
		do
			makedev isdn$minor c $major $minor $dialout
			makedev isdnctrl$minor c $major `math $minor + 64` $dialout
			makedev ippp$minor c $major `math $minor + 128` $dialout
			minor=`math $minor + 1`
		done
		makedev isdninfo c $major 255 $private
		;;
	dcbri)
		major=52
		for i in 0 1 2 3
		do
			makedev dcbri$i c $major $i $dialout
		done
		;;
	capi)
		major=68
		makedev capi20 c $major 0 $dialout
		for i in 0 1 2 3 4 5 6 7 8 9
		do
			makedev capi20.0$i c $major `math $i + 1` $dialout
		done
		for i in 10 11 12 13 14 15 16 17 18 19
		do
			makedev capi20.$i c $major `math $i + 1` $dialout
		done
		;;
	ubd)
		major=98
		for devicenum in 0 1 2 3 4 5 6 7
		do
			device=ubd`substr abcdefgh $(($devicenum + 1))`
			baseminor=`math $devicenum \* 16`
			makedev $device b $major $baseminor $disk
			for partition in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
			do
				minor=`math $baseminor + $partition`
				makedev $device$partition b $major $minor $disk
			done
		done
		;;
	fb)
		for i in 0 1 2 3 4 5 6 7
		do
			makedev fb$i c 29 $i $video
		done
		;;
	fb[0-7])
		dev=`suffix $arg fb`
		makedev fb$dev c 29 $dev $video
		;;
	netlink|tap|tap[0-9]|tap1[0-5])
		makedev route     c 36 0 $coda
		makedev skip      c 36 1 $coda
		makedev fwmonitor c 36 3 $coda
		for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
			makedev tap$i c 36 `math $i + 16` $coda
		done
		;;
	tun)
		mkdir -p net
		makedev net/tun c 10 200 $system
		;;
	lp)
		major=`Major lp 6` || continue
		makedev ${arg}0 c $major 0 $printer
		makedev ${arg}1 c $major 1 $printer
		makedev ${arg}2 c $major 2 $printer
		;;
	par)
		major=`Major lp 6` || continue
		makedev ${arg}0 c $major 0 $printer
		makedev ${arg}1 c $major 1 $printer
		makedev ${arg}2 c $major 2 $printer
		;;
	parport)
		major=`Major parport 99` || continue
		makedev ${arg}0 c $major 0 $printer
		makedev ${arg}1 c $major 1 $printer
		makedev ${arg}2 c $major 2 $printer
		;;
	slm)
		major=`Major slm 28` || continue
		for i in 0 1 2 3
		do
			makedev slm c $major $i $printer
		done
		;;
	input)
		major=`Major pcsp 13` || continue
		mkdir -p input
		for i in 0 1 2 3
		do
			makedev input/js$i c $major $i $mouse
			makedev input/mouse$i c $major `math $i + 32` $mouse
			makedev input/event$i c $major `math $i + 64` $mouse
		done
		makedev input/mice c $major 63 $mouse
		;;
	busmice)
		major=`Major mouse 10` || continue
		makedev logibm	  c $major 0 $mouse
		makedev psaux     c $major 1 $mouse
		makedev inportbm  c $major 2 $mouse
		makedev atibm     c $major 3 $mouse
		makedev jbm       c $major 4 $mouse
		;;
	m68k-mice)
		major=`Major mouse 10` || continue
		makedev amigamouse c $major 4 $mouse
		makedev atarimouse c $major 5 $mouse
		makedev amigamouse1 c $major 7 $mouse
		makedev adbmouse  c $major 10 $mouse
		;;
	3dfx)
		major=`Major $arg 107` || continue
		makedev $arg	c $major 0 $video
		;;
	agpgart)
		major=`Major $arg 10` || continue
		makedev $arg	c $major 175 $video
		;;
	hwrng)
		major=`Major $arg 10` || continue
		makedev $arg	c $major 183 $private
		;;
	mcelog)
		major=`Major $arg 10` || continue
		makedev $arg	c $major 227 $private
		;;
	cpu|microcode)
		mkdir -p cpu
		makedev cpu/microcode c 10 184 $private
		for i in 0 1 2 3
		do
			mkdir -p cpu/$i
			makedev cpu/$i/msr   c 202 $i $private
			makedev cpu/$i/cpuid c 203 $i $private
		done
		;;
	ipmi|ipmikcs)
		major=`Major ipmikcs 10` || continue
		makedev ipmikcs	c $major 173 $private
		;;
	irda)
		for i in 0 1
		do
			makedev ircomm$i c 161 $i $dialout
			makedev irlpt$i  c 161 `math $i + 16` $printer
		done
		;;
	irnet)
		makedev irnet c 10 187 $system
		;;
	cbm)
		makedev cbm c 10 177 $floppy
		;;
	misc)
		major=`Major mouse 10` || continue
		makedev logibm	  c $major 0 $mouse
		makedev psaux     c $major 1 $mouse
		makedev inportbm  c $major 2 $mouse
		makedev atibm     c $major 3 $mouse
		makedev jbm       c $major 4 $mouse
		makedev amigamouse c $major 4 $mouse
		makedev atarimouse c $major 5 $mouse
		makedev sunmouse  c $major 6 $mouse
		makedev amigamouse1 c $major 7 $mouse
		makedev smouse    c $major 8 $mouse
		makedev pc110pad  c $major 9 $mouse
		makedev adbmouse  c $major 10 $mouse
		makedev beep      c $major 128 $mouse
		makedev modreq    c $major 129 $mouse
		makedev watchdog  c $major 130 $mouse
		makedev temperature c $major 131 $mouse
		makedev hwtrap    c $major 132 $mouse
		makedev exttrp    c $major 133 $mouse
		makedev apm_bios  c $major 134 $mouse
		makedev rtc       c $major 135 $mouse
		makedev openprom  c $major 139 root root 0664
		makedev relay8    c $major 140 $mouse
		makedev relay16   c $major 141 $mouse
		makedev msr       c $major 142 $mouse
		makedev pciconf   c $major 143 $mouse
		makedev nvram     c $major 144 $mouse
		makedev hfmodem   c $major 145 $mouse
		makedev led       c $major 151 $mouse
		makedev mergemem  c $major 153 $mouse
		makedev pmu       c $major 154 $mouse
		;;
	fuse)
		makedev fuse      c 10 229 $system
		;;
	pmu)
		major=`Major mouse 10` || continue
		makedev pmu       c $major 154 $mouse
		;;
	thinkpad)
		major=`Major mouse 10` || continue
		mkdir -p thinkpad
		makedev thinkpad/thinkpad c $major 170 $mouse
		;;
        rtc)
		major=`Major mouse 10` || continue
		makedev rtc       c $major 135 $mouse
		;;
	efirtc)
		major=`Major mouse 10` || continue
		makedev efirtc    c $major 136 $mouse
 		;;
	mwave)
		makedev mwave     c 10 219 $mouse
		;;
	systrace)
		makedev systrace  c 10 226 $private
		;;
	uinput)
		mkdir -p input
		makedev input/uinput  c 10 223 $mouse
		;;
	js)
		major=`Major Joystick 13` || continue
		for unit in 0 1 2 3
		do
			makedev js$unit c $major $unit $readable
			makedev djs$unit c $major `math $unit + 128` $readable
		done
		;;
	fd[0-7])
		major=`Major fd 2` || continue
		base=`suffix $arg fd`
		if [ $base -ge 4 ]
		then
			base=`math $base + 124`
		fi
		makedev ${arg} b $major $base $floppy
		makedev ${arg}d360  b $major `math $base +  4` $floppy
		makedev ${arg}h1200 b $major `math $base +  8` $floppy
		makedev ${arg}u360  b $major `math $base + 12` $floppy
		makedev ${arg}u720  b $major `math $base + 16` $floppy
		makedev ${arg}h360  b $major `math $base + 20` $floppy
		makedev ${arg}h720  b $major `math $base + 24` $floppy
		makedev ${arg}u1440 b $major `math $base + 28` $floppy
		makedev ${arg}u2880 b $major `math $base + 32` $floppy
		makedev ${arg}CompaQ b $major `math $base + 36` $floppy

		makedev ${arg}h1440 b $major `math $base + 40` $floppy
		makedev ${arg}u1680 b $major `math $base + 44` $floppy
		makedev ${arg}h410  b $major `math $base + 48` $floppy
		makedev ${arg}u820  b $major `math $base + 52` $floppy
		makedev ${arg}h1476 b $major `math $base + 56` $floppy
		makedev ${arg}u1722 b $major `math $base + 60` $floppy
		makedev ${arg}h420  b $major `math $base + 64` $floppy
		makedev ${arg}u830  b $major `math $base + 68` $floppy
		makedev ${arg}h1494 b $major `math $base + 72` $floppy
		makedev ${arg}u1743 b $major `math $base + 76` $floppy
		makedev ${arg}h880  b $major `math $base + 80` $floppy
		makedev ${arg}u1040 b $major `math $base + 84` $floppy
		makedev ${arg}u1120 b $major `math $base + 88` $floppy
		makedev ${arg}h1600 b $major `math $base + 92` $floppy
		makedev ${arg}u1760 b $major `math $base + 96` $floppy
		makedev ${arg}u1920 b $major `math $base + 100` $floppy
		makedev ${arg}u3200 b $major `math $base + 104` $floppy
		makedev ${arg}u3520 b $major `math $base + 108` $floppy
		makedev ${arg}u3840 b $major `math $base + 112` $floppy
		makedev ${arg}u1840 b $major `math $base + 116` $floppy
		makedev ${arg}u800  b $major `math $base + 120` $floppy
		makedev ${arg}u1600 b $major `math $base + 124` $floppy
		;;
	ed[a-b])
		major=`Major ed 36` || continue
		unit=`suffix $arg ed`
		base=`index ab $unit`
		base=`math $base \* 64`
		makedev ed$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
		do
			makedev ed$unit$part b $major `math $base + $part` $disk
		done
		;;
	hd[a-b])
		major=`Major ide0` || major=`Major hd 3` || continue
		unit=`suffix $arg hd`
		base=`index ab $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major `math $base + $part` $disk
		done
		;;
	hd[c-d])
		major=`Major ide1 22` || continue
		unit=`suffix $arg hd`
		base=`index cd $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	hd[e-f])
		major=`Major ide2 33` || continue
		unit=`suffix $arg hd`
		base=`index ef $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	hd[g-h])
		major=`Major ide3 34` || continue
		unit=`suffix $arg hd`
		base=`index gh $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	hd[i-j])
		major=`Major ide4 56` || continue
		unit=`suffix $arg hd`
		base=`index ij $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	hd[k-l])
		major=`Major ide5 57` || continue
		unit=`suffix $arg hd`
		base=`index kl $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	hd[m-n])
		major=`Major ide6 88` || continue
		unit=`suffix $arg hd`
		base=`index mn $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	hd[o-p])
		major=`Major ide7 89` || continue
		unit=`suffix $arg hd`
		base=`index op $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	hd[q-r])
		major=`Major ide8 90` || continue
		unit=`suffix $arg hd`
		base=`index qr $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	hd[s-t])
		major=`Major ide9 91` || continue
		unit=`suffix $arg hd`
		base=`index st $unit`
		base=`math $base \* 64`
		makedev hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
		do
			makedev hd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	ub|uba)	
		major=180
		makedev uba b $major 0 $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
			makedev uba$part b $major $part $disk
		done
		;;
	ht0)
		major=`Major ht0 37` || continue
		# Only one IDE tape drive is currently supported; ht0.
		makedev ht0 c $major 0 $tape
		makedev nht0 c $major 128 $tape
		;;
	pt)
		major=`Major pt 96` || continue
		for i in 0 1 2 3
		do
			makedev pt$i c $major $i $tape
			makedev npt$i c $major `math $i + 128` $tape
		done
		;;
	xd[a-d])
		major=`Major xd 13` || continue
		unit=`suffix $arg xd`
		base=`index abcd $unit`
		base=`math $base \* 64`
		makedev xd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 # 9 10 11 12 13 14 15 16 17 18 19 20
		do
			makedev xd$unit$part b $major $(( $base + $part )) $disk
		done
		;;
	sd[a-z])
		major=`Major sd 8` || continue
		unit=`suffix $arg sd`
		base=`index abcdefghijklmnopqrstuvwxyz $unit`
		base=$(( $base * 16 ))
		if [ $base -lt 256 ]; then
			major=8
		else
			major=65
			base=$(( $base - 256 ))
		fi
		makedev sd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
			minor=$(( $base + $part ))
			makedev sd$unit$part b $major $minor $disk
		done
		;;
	sd[a-d][a-z])
		unit=`suffix $arg sd`
		unitmaj=`first $unit`
		unitmin=`second $unit`
		basemaj=`index Xabcd $unitmaj`
		basemin=`index abcdefghijklmnopqrstuvwxyz $unitmin`
		basemaj=`math $basemaj \* 416`
		basemin=`math $basemin \* 16`
		base=`math $basemaj + $basemin`
		basemaj=`math $base / 256`
		base=`math $base % 256`
		major=`math basemaj \+ 64`
		if [ $major -gt 71 ]; then
			echo "$0: don't know how to make device \"$arg\"" >&2
			exit 0
		fi
		makedev sd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
			minor=$(( $base + $part ))
			makedev sd$unit$part b $major $minor $disk
		done
                ;;
	i2o.hd[a-z])
		[ -d i2o ] || {
			mkdir i2o
			chown root:root i2o
			chmod 755 i2o
      			[ -e i2o/ctl ] || makedev i2o/ctl c 10 166 $disk
		}
		unit=`suffix $arg i2o.hd`
		base=`index abcdefghijklmnopqrstuvwxyz $unit`
		base=$(( $base * 16 ))
		if [ $base -lt 256 ]; then
			major=80
		else
			major=81
			base=$(( $base - 256 ))
		fi
		makedev i2o/hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
			minor=$(( $base + $part ))
			makedev i2o/hd$unit$part b $major $minor $disk
		done
		;;
	i2o.hd[a-d][a-z])
		[ -d i2o ] || {
			mkdir i2o
			chown root:root i2o
			chmod 755 i2o
      			[ -e i2o/ctl ] || makedev i2o/ctl c 10 166 $disk
		}
		unit=`suffix $arg i2o.hd`
		unitmaj=`first $unit`
		unitmin=`second $unit`
		basemaj=`index Xabcd $unitmaj`
		basemin=`index abcdefghijklmnopqrstuvwxyz $unitmin`
		basemaj=`math $basemaj \* 416`
		basemin=`math $basemin \* 16`
		base=`math $basemaj + $basemin`
		basemaj=`math $base / 256`
		base=`math $base % 256`
		major=`math basemaj \+ 80`
		if [ $major -gt 87 ]; then
			echo "$0: don't know how to make device \"$arg\"" >&2
			exit 0
		fi
		makedev i2o/hd$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
			minor=$(( $base + $part ))
			makedev i2o/hd$unit$part b $major $minor $disk
		done
		;;
	dasd[a-z])
		major=`Major dasd 94` || continue
		unit=`suffix $arg dasd`
		base=`index abcdefghijklmnopqrstuvwxyz $unit`
		base=$(( $base * 4 ))
		if [ $base -lt 256 ]; then
			major=94
		else
			major=65
			base=$(( $base - 256 ))
		fi
		makedev dasd$unit b $major $base $disk
		for part in 1 2 3
		do
			minor=$(( $base + $part ))
			makedev dasd$unit$part b $major $minor $disk
		done
		;;
	ad[a-p])
		major=`Major ad 28` || continue
		unit=`suffix $arg ad`
		base=`index abcdefghijklmnop $unit`
		base=`math $base \* 16`
		makedev ad$unit b $major $base $disk
		for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
			minor=$(( $base + $part ))
			makedev ad$unit$part b $major $minor $disk
		done
		;;
	dac960)
		for ctr in 0 1 2 3 4 5 6 7
		do
			$0 $opts dac960.$ctr
		done
		makedev dac960_gam c 10 252 $disk
		;;
	dac960.[0-7])
		[ -d rd ] || {
			mkdir rd
			chown root:root rd
			chmod 755 rd
		}
		unit=`suffix $arg dac960.`
		    major=`math 48 + $unit`
		    minor=0
		    for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 \
			    17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
		    do
			makedev rd/c${unit}d${ld} b $major $minor $disk
			minor=`math $minor + 1`
			for part in 1 2 3 4 5 6 7
			do
			    makedev rd/c${unit}d${ld}p$part b $major $minor $disk
			    minor=`math $minor + 1`
			done
		    done
		;;
	dpti)
		major=151
		for ld in 1 2 3 4 5 6 7
		do
		   minor=`math $ld -1`
		   makedev dpti${ld} c $major $minor $disk
                done
                ;;
	ataraid)
		for ctr in 0 1 2 # 3 4 5 6 7
		do
			$0 $opts ataraid.$ctr
		done
		;;
	ataraid.[0-7])
		[ -d ataraid ] || {
			mkdir ataraid
			chown root:root ataraid
			chmod 755 ataraid
		}
                unit=`suffix $arg ataraid.`
                major=114
                minor=`math $unit \* 16`
                makedev ataraid/d${unit} b $major $minor $disk
                for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
                do
                   minor=`math $minor + 1`
                   makedev ataraid/d${unit}p$part b $major $minor $disk
                done
 		;;
	ida)
		for ctr in 0 1 2 # 3 4 5 6 7
		do
			$0 $opts ida.$ctr
		done
		;;
	ida.[0-7])
		[ -d ida ] || {
			mkdir ida
			chown root:root ida
			chmod 755 ida
		}
		unit=`suffix $arg ida.`
		major=`math 72 + $unit`
		minor=0
		for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
		    makedev ida/c${unit}d${ld} b $major $minor $disk
		    minor=`math $minor + 1`
		    for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		    do
			makedev ida/c${unit}d${ld}p$part b $major $minor $disk
			minor=`math $minor + 1`
		    done
		done
		;;
	cciss)
		for ctr in 0 1 2 # 3 4 5 6 7
		do
			$0 $opts cciss.$ctr
		done
		;;
	cciss.[0-7])
		[ -d cciss ] || {
			mkdir cciss
			chown root:root cciss
			chmod 755 cciss
		}
		unit=`suffix $arg cciss.`
		major=`math 104 + $unit`
		minor=0
		for ld in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
		    makedev cciss/c${unit}d${ld} b $major $minor $disk
		    minor=`math $minor + 1`
		    for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		    do
			makedev cciss/c${unit}d${ld}p$part b $major $minor $disk
			minor=`math $minor + 1`
		    done
		done
		;;
	rom)
		major=`Major rom 31`
		for i in 0 1 2 3 4 5 6 7
		do
			makedev rom$i    b $major $i $disk
			makedev rrom$i   b $major `math $i +8` $disk
			makedev flash$i  b $major `math $i +16` $disk
			makedev rflash$i b $major `math $i +24` $disk
		done
		;;
	nb[0-7])
		major=`Major nbd 43` || continue
		minor=`suffix $arg nb`
		makedev nb$minor b $major $minor $disk
		;;
	loop)
		for part in 0 1 2 3 4 5 6 7
		do
			makedev loop$part b 7 $part $disk
		done
		;;
	loop[0-9]|loop[1-9][0-9]|loop1[0-9][0-9]|loop2[0-4][0-9]|loop25[0-5])
		minor=`suffix $arg loop`
		makedev loop$minor b 7 $minor $disk
		;;
	md)
		major=`Major md 9` || continue
		for part in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
			16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
		do
			makedev md$part b $major $part $disk
		done
		;;
	st[0-7])
		major=`Major st 9`
		unit=`suffix $arg st`
		makedev st${unit}   c $major $unit $tape
		makedev nst${unit}  c $major `math 128 + $unit` $tape

		makedev st${unit}l  c $major `math 32 + $unit` $tape
		makedev nst${unit}l c $major `math 160 + $unit` $tape

		makedev st${unit}m  c $major `math 64 + $unit` $tape
		makedev nst${unit}m c $major `math 192 + $unit` $tape

		makedev st${unit}a  c $major `math 96 + $unit` $tape
		makedev nst${unit}a c $major `math 224 + $unit` $tape
		;;
	qic)
		major=`Major tpqic02 12`
		makedev ntpqic11   c $major   2 $tape
		makedev tpqic11    c $major   3 $tape
		makedev ntpqic24   c $major   4 $tape
		makedev tpqic24    c $major   5 $tape
		makedev ntpqic120  c $major   6 $tape
		makedev tpqic120   c $major   7 $tape
		makedev ntpqic150  c $major   8 $tape
		makedev tpqic150   c $major   9 $tape
		makedev rmt8       c $major   6 $tape
		makedev rmt16      c $major   8 $tape
		makedev tape-d     c $major 136 $tape
		makedev tape-reset c $major 255 $tape
		$0 $opts qft
		;;
	ftape)
		major=`Major qft 27` || continue
		for unit in 0 1 2 3
		do
			makedev qft$unit     c $major $unit $tape
			makedev nqft$unit    c $major `math $unit + 4` $tape
			makedev zqft$unit    c $major `math $unit + 16` $tape
			makedev nzqft$unit   c $major `math $unit + 20` $tape
			makedev rawqft$unit  c $major `math $unit + 32` $tape
			makedev nrawqft$unit c $major `math $unit + 36` $tape
		done
		symlink ftape qft0
		symlink nftape nqft0
		;;
	sr|scd|scd-all)
		major=`Major sr 11` || continue
		for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
		do
			makedev scd$unit b $major $unit $cdrom
			symlink sr$unit scd$unit
		done
		;;
	pktcdvd)
		echo "pktcdvd major number is now dynamic, taking no action"
	#	major=97
	#	for unit in 0 1 2 3
	#	do
	#		makedev pktcdvd$unit b $major $unit $cdrom
	#	done
		;;
	cfs0)
		makedev cfs0 c 67 0 $coda
		;;
	scd[0-9]|scd[0-1][0-9])
		major=`Major sr 11` || continue
		unit=`suffix $arg scd`
		makedev scd$unit b $major $unit $cdrom
		symlink sr$unit scd$unit 
		;;
	ttyI[0-9]|ttyI[1-5][0-9]|ttyI[6][0-3])
		major=43
		unit=`suffix $arg ttyI`
		makedev ttyI$unit c $major $unit $dialout
		;;
	ppp)
		major=108
		makedev ppp c $major 0 $dip
		;;
	ippp[0-9]|ippp[1-5][0-9]|ippp[6][0-3])
		major=45
		unit=`suffix $arg ippp`
		minor=`math $unit + 128`
		makedev ippp$unit c $major $minor $dialout
		;;
	isdn[0-9]|isdn[1-5][0-9]|isdn[6][0-3])
		major=45
		unit=`suffix $arg isdn`
		minor=`math $unit + 0`
		makedev isdn$unit c $major $minor $dialout
		;;
	isdnctrl[0-9]|isdnctrl[1-5][0-9]|isdnctrl[6][0-3])
		major=45
		unit=`suffix $arg isdnctrl`
		minor=`math $unit + 64`
		makedev isdnctrl$unit c $major $minor $dialout
		;;
	isdninfo)
		makedev isdninfo c 45 255 $private
		;;
	isdn-tty)
		major=43
		for unit in 0 1 2 3 4 5 6 7
		do
			makedev ttyI$unit c $major $unit $dialout
		done
		;;
	isdn-ippp)
		major=45
		for unit in 0 1 2 3 4 5 6 7
		do
			makedev ippp$unit c $major `math $unit + 128` $dialout
		done
		;;
	isdn-io)
		for unit in 0 1 2 3 4 5 6 7
		do
			makedev isdn$unit c 45 $unit $dialout
			makedev isdnctrl$unit c 45 `math $unit + 64` $dialout
			makedev ippp$unit c 45 `math $unit + 128` $dialout
		done
		makedev isdninfo c 45 255 $dialout
		;;
	sonycd)
		major=`Major sonycd 15` || continue
		makedev $arg b $major 0 $cdrom
		;;
	mcd)
		major=`Major mcd 23` || continue
		makedev $arg b $major 0 $cdrom
		;;
	mcdx|mcdx[0-4])
		major=`Major $arg 20` || continue
		for unit in 0 1 2 3 4
		do
			makedev mcdx$unit b $major $unit $cdrom
		done
		test -r mcdx || symlink mcdx mcdx0
		;;
	cdu535)
		makedev $arg b 24 0 $cdrom
		;;
	lmscd)
		makedev $arg b 24 0 $cdrom
		;;
	sbpcd|sbpcd[123])
		major=`Major $arg 25` || continue
		base=`suffix ${arg}0 sbpcd`
		for minor in 0 1 2 3
		do
			# XXX
			unit=$(substr 0123456789abcdef $(( $base * 4 + $minor + 1 )) )
			makedev sbpcd$unit b $major $minor $cdrom
		done
		[ $arg = sbpcd ] && symlink $arg ${arg}0
		;;
	aztcd)
		major=`Major $arg 29` || continue
		makedev ${arg}0 b $major 0 $cdrom
		;;
	cm206cd)
		major=`Major $arg 30` || continue
		makedev ${arg}0 b $major 0 $cdrom
		;;
	gscd)
		major=`Major $arg 16` || continue
		makedev ${arg}0 b $major 0 $cdrom
		;;
	pcd)
		for unit in 0 1 2 3 
		do
			makedev pcd$unit b 46 $unit $cdrom
		done
		;;
	bpcd)
		makedev $arg b 41 0 $cdrom
		;;
	optcd)
		makedev $arg b 17 0 $cdrom
		;;
	sjcd)
		makedev $arg b 18 0 $cdrom
		;;
	cfs|coda)
		makedev cfs0 c 67 0 $private
		;;
	xfs|nnpfs|arla)
		makedev xfs0 c 103 0 $private
		makedev nnpfs0 c 103 0 $private
		;;
	logiscan)
		major=`Major logiscan` || continue
		makedev $arg c $major 0 $scanner
		;;
	toshiba)
		major=`Major $arg 10` || continue
		makedev $arg c $major 181 root root 0666
		;;
	m105scan)
		major=`Major m105` || continue
		makedev $arg c $major 0 $scanner
		;;
	ac4096)
		major=`Major ac4096` || continue
		makedev $arg c $major 0 $scanner
		;;
	audio)
		major=`Major sound 14`
		makedev mixer      c $major  0 $audio
		makedev mixer1     c $major 16 $audio
		makedev mixer2     c $major 32 $audio
		makedev mixer3     c $major 48 $audio
		makedev sequencer  c $major  1 $audio
		makedev midi00     c $major  2 $audio
		makedev midi01     c $major 18 $audio
		makedev midi02     c $major 34 $audio
		makedev midi03     c $major 50 $audio
		makedev dsp        c $major  3 $audio
		makedev dsp1       c $major 19 $audio
		makedev dsp2       c $major 35 $audio
		makedev dsp3       c $major 51 $audio
		makedev audio      c $major  4 $audio
		makedev audio1     c $major 20 $audio
		makedev audio2     c $major 36 $audio
		makedev audio3     c $major 52 $audio
		makedev sndstat    c $major  6 $audio
		makedev audioctl   c $major  7 $audio
		major=31
		makedev mpu401data c $major 0  $audio
		makedev mpu401stat c $major 1  $audio
		major=35
		for i in 0 1 2 3
		do
			makedev midi$i  c $major $i $audio
			makedev rmidi$i c $major `math $i + 64` $audio
			makedev smpte$i c $major `math $i + 128` $audio
		done
		;;
	pcaudio)
		major=`Major pcsp 13` || continue
		makedev pcmixer c $major 0 $audio
		makedev pcsp    c $major 3 $audio
		makedev pcaudio c $major 4 $audio
		;;
	video|video4linux|v4l|radio)
		# video4linux api includes radio, teletext, etc.
		major=`Major video 81` || continue
		minor=0
		until [ $minor -gt 63 ]
		do
			makedev video$minor c $major $minor $video
			makedev radio$minor c $major `math $minor + 64` $video
			minor=`math $minor + 1`
		done
		symlink radio radio0
		minor=0
		until [ $minor -gt 31 ]
		do
			makedev vtx$minor c $major `math $minor + 192` $video
			makedev vbi$minor c $major `math $minor + 224` $video
			minor=`math $minor + 1`
		done
		symlink video video0
		symlink vbi vbi0
		major=82
		minor=0
		until [ $minor -gt 1 ]
		do
			makedev winradio$minor c $major $minor $video
			minor=`math $minor + 1`
		done
		major=83
		makedev vtx     c $major 0 $video
		makedev vttuner c $major 16 $video
		;;
	i2c)
		# making it possible to create an arbitrary number of i2c
		# devices might be good, but 8 should suffice for now
		major=`Major i2c 89` || continue
		minor=0
		until [ $minor -gt 7 ] 
		do
			makedev i2c-$minor c $major $minor $private
			minor=`math $minor + 1`
		done
		;;
	tlk)
		major=102
		minor=0
		until [ $minor -gt 3 ] # tell me if 3 is wrong...
		do
			makedev tlk$minor c $major $minor $video
			minor=`math $minor + 1`
		done
		;;
	srnd)
		makedev srnd0 c 110 0 $video
		makedev srnd1 c 110 1 $video
		;;
	fgrab)
		makedev mmetfgrab c 40 0 $video
		makedev wvisfgrab c 26 0 $video
		for i in 0 1 # more?
		do
			makedev iscc$i    c 93 $i $video
			makedev isccctl$i c 93 `math $i + 128` $video
		done
		for i in 0 1 # more?
		do
			makedev dcxx$i c 94 $i $video
		done
		;;
	sg|sg-all)
		major=`Major sg 21`
		for unit in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
		do
			makedev sg$unit c $major $unit $scsi
		done
		;;
	pg)
		major=`Major pg 97`
		for unit in 0 1 2 3
		do
			makedev pg$unit c $major $unit $scsi
		done
		;;
	fd)
		# not really devices, we use the /proc filesystem
		symlink fd     $procfs/self/fd
		symlink stdin  fd/0
		symlink stdout fd/1
		symlink stderr fd/2
		;;
	ibcs2)
		major=`Major ibcs2 30` || continue
		makedev socksys c $major 0 $ibcs2
		symlink nfsd socksys
		makedev spx     c $major 1 $ibcs2
		symlink X0R null
		;;
	netlink)
		major=36
		makedev route c $major 0 $private
		makedev skip  c $major 1 $private
		;;
	enskip)
		major=64
		makedev enskip c $major 0 $private
		;;
	ipfilt*)
		major=95
		makedev ipl     c $major 0 $private
		makedev ipnat   c $major 1 $private
		makedev ipstate c $major 2 $private
		makedev ipauth  c $major 3 $private
		;;
	qng)
		makedev qng c 77 0 $private
		;;
	apm)
		major=`Major mouse 10` || continue
		makedev apm_bios  c $major 134 $mouse
		;;
	dcf)
		major=`Major dcf` || continue
		makedev $arg c $major 0 $system
		;;
	helloworld)
		major=`Major hw` || continue
		makedev helloworld c $major 0 $public
		;;
	ipsec)
		# For the Free S/WAN (http://www.xs4all.nl/~freeswan/)
		# implementation of IPSEC
		makedev ipsec c 36 10 $ipsec
		;;
	comedi)
		major=98
		for minor in 0 1 2 3
		do
			makedev comedi$minor c $major $minor $public
		done
		;;
	tilp)
		for i in `seq 0 7`
		do
			makedev tipar$i c 115 $i $printer
			makedev tiser$i c 115 `math 8 + $i` $dialout
		done
		for i in `seq 0 31`
		do
			makedev tiusb$i c 115 `math 16 + $i` $dialout
		done
		;;
	dvb)
		# check if kernel-version is >= 2.6.8, if yes, create dvb-devices with
		# major-number 212, in the other case 250
		
		kern_rev1=`uname -r | sed -e 's@^\([^.]*\)\..*@\1@'`
		kern_rev2=`uname -r | sed -e 's@^[^.]*\.\([^.]*\)\..*@\1@'`
		kern_rev3=`uname -r | sed -e 's@^[^.]*\.[^.]*\.\([^.][0-9]*\).*@\1@'`
      
		dvb_major=250

		if [ $kern_rev1 -gt 2 ] || ([ $kern_rev1 -eq 2 ] && [ $kern_rev2 -gt 6 ]) \
			|| ([ $kern_rev1 -eq 2 ] && [ $kern_rev2 -eq 6 ] && [ $kern_rev3 -ge 8 ])
		then 
			dvb_major=212 
		fi

		mkdir -p dvb
		for i in 0 1 2 3
		do
			mkdir -p dvb/adapter$i
			makedev dvb/adapter$i/video0	c $dvb_major `math 64 \* $i + 0` $video
			makedev dvb/adapter$i/audio0    c $dvb_major `math 64 \* $i + 1` $video
			makedev dvb/adapter$i/frontend0 c $dvb_major `math 64 \* $i + 3` $video
			makedev dvb/adapter$i/demux0    c $dvb_major `math 64 \* $i + 4` $video
			makedev dvb/adapter$i/dvr0      c $dvb_major `math 64 \* $i + 5` $video
			makedev dvb/adapter$i/ca0       c $dvb_major `math 64 \* $i + 6` $video
			makedev dvb/adapter$i/net0      c $dvb_major `math 64 \* $i + 7` $video
			makedev dvb/adapter$i/osd0      c $dvb_major `math 64 \* $i + 8` $video
		done
		;;
	usb)
		mkdir -p usb
		major=180
		for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
		do
			makedev usb/lp$i c $major $i $printer
			makedev usb/mouse$i c $major `math $i + 16` $mouse
			makedev usb/ez$i c $major `math $i + 32` $system
			makedev usb/scanner$i c $major `math $i + 48` $scanner
			makedev usb/hiddev$i c $major `math $i + 96` $system
			makedev ttyACM$i c 166 $i $dialout
			makedev ttyUSB$i c 188 $i $dialout
		done
		makedev usb/rio500 c $major 64 $audio
		makedev usb/usblcd c $major 65 $audio
		makedev usb/cpad0 c $major 66 $audio
		;;
	bluetooth)
		major=216
		for i in 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 \
			16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
		do
			makedev rfcomm$i c $major $i $dialout
		done
		makedev vhci c 10 250 $dialout
		for i in 0 1 2 3; do
			makedev ttyUB$i c 216 $i $dialout
			makedev ccub$i c 217 $i $dialout
		done
		;;
	paride)
                major=45
                for unit in a b c d
		do
                    base=`index abcd $unit`
                    base=`math $base \* 16`
                    makedev pd$unit b $major $base $disk
                    for part in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
                    do
			makedev pd$unit$part b $major $(( $base + $part )) $disk
                    done
		done
		for i in 0 1 2 3
		do
		    makedev pcd$i b 46 $i $cdrom
		    makedev pf$i  b 47 $i $floppy
		done
                ;;
        lirc)
                makedev lirc c 61 0 $lirc
                for i in d m; do
                   makefifo lirc${i} $lirc
                done
                ;;
	update)
		devices=
		if [ ! -f $procfs/devices ]
		then
			echo "$0: warning: can't read $procfs/devices" >&2
		else
			exec 3<$procfs/devices
			while read major device extra <&3
			do
				device=`echo $device | sed 's#/.*##'`
				case "$major" in
					Character|Block|'')
						;;
					*)
						eval "major_$device=$major"
						devices="$devices $device"
						;;
				esac
			done
			exec 3<&-
		fi

		if [ ! "$devices" ]
		then
			echo "$0: don't appear to have any devices" >&2
			continue
		fi
		if [ "$opt_d" ]
		then
			echo "$0: can't delete an update" >&2
			continue
		fi
		create=
		delete=
		devs="$devices"
		if [ -f DEVICES ]
		then
			exec 3<DEVICES
			while read device major <&3
			do
				eval now=\$major_$device
				if [ "$now" = "" ]
				then
					delete="$delete `cvt $device`"
					continue
				elif [ "$now" != $major ]
				then
					create="$create "`cvt $device`
				fi
				devs=`strip " $devs " $device`
			done
			exec 3<&-
		fi
		create="$create "`cvt $devs`
		[ "$delete" != "" ] && $0 $opts -d $delete
		[ "$create" != " " ] && $0 $opts $create
		[ "$opt_n" ] && continue
		for device in $devices
		do
			if [ "`cvt $device`" ]
			then
			    eval echo $device \$major_$device
			fi
		done > DEVICES
		;;
	*)
		echo "$0: don't know how to make device \"$arg\"" >&2
		exit 1
		;;
	esac
done

exit 0