On Saturday 06 July 2002 17.39, Guido Serassio wrote:
> >Note: If you need code for dealing with such strings there is a
> >suitable strwordtok function in external_acl.c.. (not yet fully
> >complete, but good enought for the job).
> >
> >Regards
> >Henrik
>
> I have just looked it, but do You can explain how exactly works,
> I'm not sure that I have understand this correctly.
the strworktok function works sort of like strtok, except that it 
understands the \ escape syntax (partially) and quoting and unwinds 
it automatically, returning each string piece separately
Example C skeleton for a external_acl group helper using the mentioned 
strwordtok function :
#include <stdio.h>
#include <syslog.h>
#include <string.h>
int main()
{
    char buf[1024];
    char *user, *group;
    setbuf(stdout, NULL);
    openlog("helpername", 0, LOG_AUTHPRIV);
    while(fgets(buf, sizeof(buf), stdin)) {
        /* Some error management to deal with oversized lines */
        if (!strchr(buf, '\n')) {
            while(fgets(buf, sizeof(buf), stdin))
                if (strchr(buf, '\n'))
                    break;
            syslog(LOG_NOTICE, "oversized request");
            printf("ERR\n");
            continue;
        }
     
        /* Split the input line in username and group */
        user = strwordtok(buf);
        group = strworktok(NULL);
        if (user_in_group(user, group))
            printf("OK\n");
        else
            printf("ERR\n");
    }
}
Regards
Henrik
Received on Sat Jul 06 2002 - 12:52:12 MDT
This archive was generated by hypermail pre-2.1.9 : Tue Dec 09 2003 - 16:15:47 MST