MDK::Common::System

Section: User Contributed Perl Documentation (3)
Updated: 2016-04-04
Page Index
 

NAME

MDK::Common::System - system-related useful functions  

SYNOPSIS

    use MDK::Common::System qw(:all);

 

EXPORTS

%compat_arch
architecture compatibility mapping (eg: k6 => i586, k7 => k6 ...)
%printable_chars
7 bit ascii characters
$sizeof_int
sizeof(int)
$bitof_int
$sizeof_int * 8
arch()
return the architecture (eg: i686, ppc, ia64, k7...)
typeFromMagic(FILENAME, LIST)
find the first corresponding magic in FILENAME. eg of LIST:

    [ 'empty', 0, "\0\0\0\0" ],
    [ 'grub', 0, "\xEBG", 0x17d, "stage1 \0" ],
    [ 'lilo', 0x2,  "LILO" ],
    sub { my ($F) = @_;
          #- standard grub has no good magic (Mageia's grub is patched to have "GRUB" at offset 6)
          #- so scanning a range of possible places where grub can have its string
          my ($min, $max, $magic) = (0x176, 0x181, "GRUB \0");
          my $tmp;
          sysseek($F, 0, 0) && sysread($F, $tmp, $max + length($magic)) or return;
          substr($tmp, 0, 2) eq "\xEBH" or return;
          index($tmp, $magic, $min) >= 0 && "grub";
      },

where each entry is [ magic_name, offset, string, offset, string, ... ].

list_passwd()
return the list of users as given by "getpwent" (see perlfunc)
is_real_user()
checks whether or not the user is a system user or a real user
is_real_group()
checks whether or not the group is a system group or a real group
list_home()
return the list of home (eg: /home/foo, /home/pixel, ...)
list_skels()
return the directories where we can find dot files: homes, /root and /etc/skel
list_users()
return the list of unprivilegied users (uses the is_real_user function to filter out system users from the full list)
syscall_(NAME, PARA)
calls the syscall NAME
psizeof(STRING)
useful to know the length of a "pack" format string.

    psizeof("I I I C C S") = 4 + 4 + 4 + 1 + 1 + 2 = 16

availableMemory()
size of swap + memory
availableRamMB()
size of RAM as reported by the BIOS (it is a round number that can be displayed or given as ``mem=128M'' to the kernel)
gettimeofday()
returns the epoch in microseconds
unix2dos(STRING)
takes care of CR/LF translation
whereis_binary(STRING)
return the first absolute file in $PATH (similar to which(1) and whereis(1))
getVarsFromSh(FILENAME)
returns a hash associating shell variables to their value. useful for config files such as /etc/sysconfig files
setVarsInSh(FILENAME, HASH REF)
write file in shell format association a shell variable + value for each key/value
setVarsInSh(FILENAME, HASH REF, LIST)
restrict the fields that will be printed to LIST
setVarsInShMode(FILENAME, INT, HASH REF, LIST)
like setVarsInSh with INT being the chmod value for the config file
addVarsInSh(FILENAME, HASH REF)
like setVarsInSh but keeping the entries in the file
addVarsInSh(FILENAME, HASH REF, LIST)
like setVarsInSh but keeping the entries in the file
addVarsInShMode(FILENAME, INT, HASH REF, LIST)
like addVarsInShMode but keeping the entries in the file
setExportedVarsInCsh(FILENAME, HASH REF, LIST)
same as "setExportedVarsInSh" for csh format
template2file(FILENAME_IN, FILENAME_OUT, HASH)
read in a template file, replace keys @@@key@@@ with value, save it in out file
template2userfile(PREFIX, FILENAME_IN, FILENAME_OUT, BOOL, HASH)
read in a template file, replace keys @@@key@@@ with value, save it in every homes. If BOOL is true, overwrite existing files. FILENAME_OUT must be a relative filename
read_gnomekderc(FILENAME, STRING)
reads GNOME-like and KDE-like config files (aka windows-like). You must give a category. eg:

    read_gnomekderc("/etc/skels/.kderc", 'KDE')

update_gnomekderc(FILENAME, STRING, HASH)
modifies GNOME-like and KDE-like config files (aka windows-like). If the category doesn't exist, it creates it. eg:

    update_gnomekderc("/etc/skels/.kderc", 'KDE', 
                      kfmIconStyle => "Large")

fuzzy_pidofs(REGEXP)
return the list of process ids matching the regexp
 

OTHER

better_arch(ARCH1, ARCH2)
is ARCH1 compatible with ARCH2?

better_arch('i386', 'ia64') and better_arch('ia64', 'i386') are false

better_arch('k7', 'k6') is true and better_arch('k6', 'k7') is false

compat_arch(STRING)
test the architecture compatibility. eg:

compat_arch('i386') is false on a ia64

compat_arch('k6') is true on a k6 and k7 but false on a i386 and i686

 

SEE ALSO

MDK::Common


 

Index

NAME
SYNOPSIS
EXPORTS
OTHER
SEE ALSO