1 -- CREATE SCHEMA unix_sql_api;
3 SET search_path TO unix_sql_api;
6 -- fstab: --------------------------------------------------------------------
8 DROP VIEW IF EXISTS fstab;
9 DROP FUNCTION IF EXISTS fstab();
10 DROP TYPE IF EXISTS unix_sql_api_fstab;
12 CREATE TYPE unix_sql_api_fstab AS (
24 CREATE OR REPLACE FUNCTION fstab()
25 RETURNS SETOF unix_sql_api_fstab AS $$
29 open(FSTAB, "<", "/etc/fstab") or die $!;
32 if (/^([^\s#]+)\s+([^\s]+)\s+([^\s]+)\s+([^\s]+)\s+(\d+)\s+(\d+)\s*$/) {
35 my $device_spec_value;
37 if ($1 =~ /([^=]+)=(.*)/) {
38 ($device_spec_type, $device_spec_value) = ($1, $2);
44 device_type => $device_spec_type,
45 device_value => $device_spec_value,
48 types => [split(",", $3)],
49 options => [split(",", $4)],
59 CREATE OR REPLACE VIEW fstab AS
64 -- user groups: --------------------------------------------------------------
66 DROP VIEW IF EXISTS user_group;
67 DROP FUNCTION IF EXISTS user_group();
68 DROP TYPE IF EXISTS unix_sql_api_user_group;
70 CREATE TYPE unix_sql_api_user_group AS (
76 CREATE OR REPLACE FUNCTION user_group()
77 RETURNS SETOF unix_sql_api_user_group AS $$
83 while (my $group = getgrent) {
87 members => [@{$group->members}]
94 CREATE OR REPLACE VIEW user_group AS
95 SELECT * FROM user_group()