import sys
import cgi
import posix
import pwd
import grp
import string
import socket
import re

####################################
#######  Funktionen    #############
####################################

hostname=socket.gethostname()
re_nocgi_start=re.compile("<!-- *NOCGI *-->")
re_nocgi_end=re.compile("<!-- */NOCGI *-->")
re_nocgi=re.compile("(<!-- */?NOCGI *-->)")


#{{{ print_file_string(name)
def print_file_string(name):
    return_string=""
    f=open(name)
    nocgi=0
    for line in f.readlines():
        newline=string.join(string.split(line,"\012")," ")
        tmpstring=""
        for token in re_nocgi.split(newline):
            if nocgi and re_nocgi_end.match(token):
                nocgi=0
                if tmpstring!="":
                    tmpstring=tmpstring+" "
            elif not nocgi and re_nocgi_start.match(token):
                nocgi=1
                if tmpstring!="":
                    tmpstring=tmpstring+" "
            elif not ( re_nocgi_start.match(token) or re_nocgi_end.match(token) or nocgi):
                tmpstring=tmpstring+token
            else:
                if tmpstring!="":
                    tmpstring=tmpstring+" "
        return_string+=tmpstring+"\n"
    return return_string
        
#{{{ print_file(name)
def print_file(name):
    print print_file_string(name)
#}}}        

#{{{ get_remote_user()
def get_remote_user():
    return posix.environ["REMOTE_USER"]
#}}}

#{{{ get_remote_host()
def get_remote_addr():
    return posix.environ["REMOTE_ADDR"]
#}}}

#{{{ get_remote_user_info()
def get_remote_user_info():
    try:
        info=pwd.getpwnam(get_remote_user())
        return {"userid":info[0], "uid":info[2], "gid":info[3], "name":info[4], "home":info[5]}
    except:
        return None
#}}}

#{{{ ismsie()
def ismsie():
    if  re.match(".*MSIE.*Windows.*",posix.environ["HTTP_USER_AGENT"])!=None:
        return 1==1
    else:
        return 1==0
#}}}

def generate_html_string(s):
    """
    generate_html_string(s)
    
            Description:      Strings werden in ein HTML verträgliches Format gebracht

            Arguments:        s - der String
    """

    return_string=re.sub("\015?\012","<br>",cgi.escape("%s"%s))
    return return_string
