usbfat: 829 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. #!/bin/rc
  2. # usbfat: [-fl] [disk [mtpt]] - mount a USB disk's MS FAT file system
  3. rfork e
  4. opts=()
  5. while (! ~ $#* 0 && ~ $1 -*) {
  6. switch ($1) {
  7. case -f -l -lf -fl
  8. opts=($opts $1)
  9. case -*
  10. echo usage: $0 '[-fl] [disk [mtpt]]' >[1=2]
  11. exit usage
  12. }
  13. shift
  14. }
  15. disk = /n/disk/0/data
  16. mtpt = /n/usb
  17. switch ($#*) {
  18. case 0
  19. ;
  20. case 1
  21. disk = $1
  22. case 2
  23. disk = $1
  24. mtpt = $2
  25. case *
  26. echo usage: $0 '[-fl] [disk [mtpt]]' >[1=2]
  27. exit usage
  28. }
  29. if (! test -f /srv/usbfat.$user) {
  30. if (! test -e $disk)
  31. usb/disk $opts || exit 'no disk'
  32. blk = `{disk/fdisk -p $disk | awk '/^part dos / {print $3}'}
  33. if (~ $#blk 0 || ! ~ $blk [0-9]*) {
  34. echo $0: warning: no fdisk dos partition found... >[1=2]
  35. dossrv -f $disk usbfat.$user || exit dossrv
  36. }
  37. if not
  38. dossrv -f $disk:$blk usbfat.$user || exit dossrv
  39. }
  40. mount -c /srv/usbfat.$user $mtpt