ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:24.45 GB of 70.42 GB (34.72%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

/ usr/ src/ courier-0.66.1/ maildir/ - drwxrwxrwx

Directory:
Viewing file:     maildirnewshared.c (3.67 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/*
** Copyright 2003 Double Precision, Inc.
** See COPYING for distribution information.
*/

#include    "maildiraclt.h"
#include    "maildirmisc.h"
#include    "maildircreate.h"
#include    "maildirnewshared.h"
#include    "numlib/numlib.h"
#include    <time.h>
#if    HAVE_UNISTD_H
#include    <unistd.h>
#endif
#include    <string.h>
#include    <errno.h>
#include    <stdio.h>
#include    <stdlib.h>


int maildir_newshared_disabled=0;

int maildir_newshared_open(const char *indexfile,
               struct maildir_newshared_enum_cb *info)
{
    info->indexfile=indexfile;
    if ((info->fp=fopen(maildir_newshared_disabled ?
                "/dev/null":indexfile, "r")) == NULL)
        return -1;
    info->startingpos=0;
    info->linenum=0;
    return 0;
}

void maildir_newshared_close(struct maildir_newshared_enum_cb *info)
{
    if (info->fp)
        fclose(info->fp);
    info->fp=NULL;
}

int maildir_newshared_nextAt(struct maildir_newshared_enum_cb *info,
                 int *eof,
                 int (*cb_func)(struct maildir_newshared_enum_cb*),
                 void *cb_arg)
{
    if (fseek(info->fp, info->startingpos, SEEK_SET) < 0)
        return -1;
    info->linenum= -1;
    return maildir_newshared_next(info, eof, cb_func, cb_arg);
}

int maildir_newshared_next(struct maildir_newshared_enum_cb *info,
               int *eof,
               int (*cb_func)(struct maildir_newshared_enum_cb *),
               void *cb_arg)
{
    char linebuf[BUFSIZ];
    int rc;
    char *p;
    const char *name;
    const char *homedir;
    const char *maildir;
    uid_t uid;
    gid_t gid;
    off_t nbytes;

#define CB_INIT(name_,homedir_,maildir_,uid_,gid_) \
    info->name=name_; info->homedir=homedir_; info->maildir=maildir_; \
    info->uid=uid_; info->gid=gid_; info->cb_arg=cb_arg;

    *eof=0;

    while (fgets(linebuf, sizeof(linebuf), info->fp) != NULL)
    {
        nbytes=strlen(linebuf);

        if (nbytes && linebuf[nbytes-1] == '\n')
            linebuf[nbytes-1]=0;

        p=strchr(linebuf, '#');
        if (p) *p=0;

        p=strchr(linebuf, '\t');
        ++info->linenum;
        if (p)
        {
            name=linebuf;
            *p++=0;

            if (*p == '*')
            {
                p=strchr(p, '\t');
                if (p)
                {
                    const char *q;
                    size_t n;

                    *p++=0;
                    maildir=p;
                    p=strchr(p, '\t');
                    if (p) *p=0;

                    q=strrchr(info->indexfile, '/');
                    if (q)
                        ++q;
                    else q=info->indexfile;

                    n=strlen(info->indexfile)-strlen(q);

                    p=malloc(n+strlen(maildir)+1);
                    if (!p)
                        return -1;

                    if (n)
                        memcpy(p, info->indexfile, n);
                    strcpy(p+n, maildir);


                    CB_INIT(name, NULL, p, 0, 0);

                    info->cb_arg=cb_arg;
                    rc= (*cb_func)(info);

                    free(p);
                    info->startingpos += nbytes;
                    return rc;
                }
            }
            else
            {
                uid=libmail_atouid_t(p);
                p=strchr(p, '\t');
                if (uid && p)
                {
                    *p++=0;
                    gid=libmail_atogid_t(p);
                    p=strchr(p, '\t');
                    if (gid && p)
                    {
                        *p++=0;
                        homedir=p;
                        p=strchr(p, '\t');
                        maildir="./Maildir";

                        if (p)
                        {
                            *p++=0;
                            if (*p && *p != '\t')
                                maildir=p;
                            p=strchr(p, '\t');
                            if (p) *p=0;
                        }

                        CB_INIT(name, homedir,
                            maildir,
                            uid,
                            gid);

                        info->cb_arg=cb_arg;
                        rc=(*cb_func)(info);
                        info->startingpos += nbytes;
                        return rc;
                    }
                }
            }
        }

        if (linebuf[0])
        {
            fprintf(stderr, "ERR: %s(%d): syntax error.\n",
                info->indexfile, (int)info->linenum);
        }
        info->startingpos += nbytes;
    }
    *eof=1;
    return 0;
}

int maildir_newshared_enum(const char *indexfile,
               int (*cb_func)(struct maildir_newshared_enum_cb *),
               void *cb_arg)
{
    struct maildir_newshared_enum_cb cb;
    int eof;
    int rc;

    if (maildir_newshared_open(indexfile, &cb) < 0)
        return -1;

    while ((rc=maildir_newshared_next(&cb, &eof, cb_func, cb_arg)) == 0)
    {
        if (eof)
        {
            maildir_newshared_close(&cb);
            return 0;
        }
    }

    maildir_newshared_close(&cb);
    return rc;
}
Command:
Quick Commands:
Upload:
[OK] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [OK]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.1943 seconds