#!/bin/bash

# TTY's
chgrp p_terminal tty
number=0
for i in tty{0,1,2,3,4,5,6,7,8,9,10,11,12} ; do
  chgrp p_terminal $i
  let number=$number+1
done

# Serial TTY's
chgrp p_serial ttyS{0,1,2,3}

# PTMX is required for pty's to work!
chgrp p_terminal ptmx

# System console
chgrp p_console console

# vcs is virtual console?
chgrp p_terminal vcs

# tgt is ?? fix group once this is identified
chgrp p_public tgt

# rtc is real-time-clock
chgrp p_rtc rtc

# Frame Buffers
number=0
for i in fb{0,1,2,3,4,5,6} ; do
  chgrp p_framebuffer $i
  let number=$number+1
done

# First RAM disk
chgrp p_initrd initrd
number=0
for i in ram{0,1,2,3} ; do
  chgrp p_ram $i
  let number=$number+1
done

# Loopback
number=0
for i in loop{0,1,2,3,4,5,6,7,8,9} ; do
  chgrp p_loopback $i
  let number=$number+1
done

# Standard Disks
number=0
for j in a b c d e f g h i j k l ; do
  for i in sd${j}{0,1,2,3,4,5,6,7,8,9,1{0,1,2,3,4,5}} ; do
    #if [[ $number != "16" && $number != "32" && $number != "48" && $number != "64" && $number != "80" && $number != "96" && $number != "112" && $number != "128" && $number != "144" && $number != "160" && $number != "176" ]] ; then
    if [[ $i != "sd${j}0" ]] ; then
      chgrp p_disk $i
    else
      chgrp p_disk sd${j}
    fi
    let number=$number+1
  done
done

# Parallel-Port IDE disk
chgrp p_disk pd{a,b}

number=1
for i in pda{1,2,3,4,5,6,7,8,9,1{0,1,2,3,4,5}} ; do
  chgrp p_disk $i
  let number=$number+1
done
number=17
for i in pdb{1,2,3,4,5,6,7,8,9,1{0,1,2,3,4,5}} ; do
  chgrp p_disk $i
  let number=$number+1
done

number=0
for i in pf{0,1,2,3} ; do
  chgrp p_disk $i
  let number=$number+1
done

# Raid Disks
number=0
for i in md{0,1,2,3,4,5,6,7,8,9,1{0,1,2,3,4,5}} ; do
  chgrp p_raid $i
  let number=$number+1
done

# ROM Cards (rw)
number=0
for i in rom{0,1,2,3,4,5,6,7} ; do
  chgrp p_rom $i
  let number=$number+1
done
number=8
for i in rrom{0,1,2,3,4,5,6,7} ; do
  chgrp p_rom $i
  let number=$number+1
done
number=16
for i in flash{0,1,2,3,4,5,6,7} ; do
  chgrp p_flash $i
  let number=$number+1
done
number=24
for i in rflash{0,1,2,3,4,5,6,7} ; do
  chgrp p_flash $i
  let number=$number+1
done

# SCSCI/SATA/PATA cdrom devices
number=0
for i in sr{0,1,2,3,4,5,6,7,8,9} ; do
  chgrp p_cdrom $i
  let number=$number+1
done
number=0
for i in sg{0,1,2,3,4,5,6,7,8,9} ; do
  chgrp p_cdrom $i
  let number=$number+1
done

# MMC devices
for i in mmc{0,1,2,3,4,5,6,7,8,9} ; do
  chgrp p_disk ${i}*
done

# Raw block device
#number=0
#for i in raw{0,1,2,3,4,5,6,7} ; do
#  chgrp raw $i
#  let number=$number+1
#done

# mtd0, mtd0ro, and mtdblock0 devices
chgrp p_disk mtd0
chgrp p_disk mtd0ro
chgrp p_disk mtdblock0

# Floppy Device
chgrp p_floppy fd0
chgrp p_floppy fd1 

# Physical memory access
chgrp p_kmem mem

# Kernel virtual memory access
chgrp p_kmem kmem

# I/O port access
chgrp p_kmem port

# Null device
chgrp p_null null

# Full device
chgrp p_full full

# NVRam device
chgrp p_nvram nvram

# Null byte source
chgrp p_zero zero

# Random Devices
chgrp p_random random
chgrp p_random urandom
chgrp p_random hw_random

# Fuse Devuce
chgrp p_fuse fuse

# Grsecurity Device
#chgrp p_grsecurity grsec

# Agpgart (graphics related) device
chgrp p_video agpgart

# uinput
chgrp p_input uinput

# Synbolic links
ln -sfn ../proc/self/fd fd
ln -sfn fd/0 stdin
ln -sfn fd/1 stdout
ln -sfn fd/2 stderr

# make input devices available
mkdir -p input/
chgrp p_input input/mice
chgrp p_input input/event0
chgrp p_input input/event1
chgrp p_input input/event2
chgrp p_input input/event3
chgrp p_input input/event4
chgrp p_input input/event5
chgrp p_input input/ts0
chgrp p_input input/ts1
