2 # Common functions for managing inetd.conf and services files
4 BEGIN { push(@INC, ".."); };
14 # Returns a list of inetd configuration files
17 local @files = ( $config{'inetd_conf_file'} );
18 if ($config{'inetd_dir'}) {
19 opendir(DIR, $config{'inetd_dir'});
21 foreach $f (readdir(DIR)) {
22 next if ($f =~ /^\./);
23 push(@files, "$config{'inetd_dir'}/$f");
31 # Returns a list of rpc services, in the format
32 # line name number aliases index
37 open(RPC, $config{rpc_file});
40 if (/^(\S+)\s+(\d+)\s*(.*)$/) {
41 push(@rv, [ $l, $1, $2, $3, scalar(@rv) ]);
49 # create_rpc(name, number, aliases)
50 # Create a new rpc file entry
53 &open_tempfile(RPC, ">> $config{rpc_file}");
54 &print_tempfile(RPC, "$_[0]\t$_[1]",($_[2] ? "\t$_[2]\n" : "\n"));
59 # modify_rpc(line, name, number, aliases)
60 # Change an existing rpc program
64 open(RPC, $config{rpc_file});
67 $rpcs[$_[0]] = "$_[1]\t$_[2]".($_[3] ? "\t$_[3]\n" : "\n");
68 &open_tempfile(RPC, "> $config{rpc_file}");
69 &print_tempfile(RPC, @rpcs);
75 # Delete an entry from the rpc file
79 open(RPC, $config{rpc_file});
82 splice(@rpcs, $_[0], 1);
83 &open_tempfile(RPC, "> $config{rpc_file}");
84 &print_tempfile(RPC, @rpcs);
91 &lock_file($config{'inetd_conf_file'}, 0, 1);
92 &lock_file($config{'services_file'}, 0, 1);
93 &lock_file($config{'protocols_file'}, 0, 1);
94 &lock_file($config{'rpc_file'}, 0, 1);
97 sub unlock_inetd_files
99 &unlock_file($config{'inetd_conf_file'});
100 &unlock_file($config{'services_file'});
101 &unlock_file($config{'protocols_file'});
102 &unlock_file($config{'rpc_file'});