⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 autoclean.cpp

📁 自动递归删除文件的工具程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
            return ( -2 );
        }
        if ( mark == READFILE )
        {
            if ( ustat.st_mode & 0040000 )
                continue;
            nMatch = 0;

            for ( m = 0;m < S_DirAndModes[pos].nModeNum;m++ )
            {
                if ( Compare( sdir->d_name, S_DirAndModes[pos].FSuffixMode[m] ) )
                {
                    nMatch = 1;
                    break;
                }
            }

            if ( nMatch == 0 )
                continue;
            strcpy( FileBuf[i].fname, sdir->d_name );
            FileBuf[i].ftime = ustat.st_mtime;
        }
        else if ( mark == READDIR )
        {
            if ( !(ustat.st_mode&0040000) )
                continue;
            if ( !strcmp( sdir->d_name, "." ) )
                continue;
            if ( !strcmp( sdir->d_name, ".." ) )
                continue;
            strcpy( DirBuf[i].fname, sdir->d_name );
        }

        i++;
        if ( i >= nums )
            break;
    }
    closedir(dirfp);

    if ( mark == READFILE )
    {
        FCount = i;
        qsort( &FileBuf[0], i, sizeof(struct Dirbuf), _DirCmpProc );
    }
    else if ( mark == READDIR )
    {
        DCount = i;
        qsort( &DirBuf[0], i, sizeof(struct Dirbuf), _DirCmpProc );
    }

    return ( i );
}


int ReadSortFile( char *dirname, char *comp, int num )
{
    long i, j, l;
    DIR *dirfp;
    struct dirent *sdir;
    struct stat ustat;
    char fname[200];

    if ( (dirfp = opendir( dirname )) == NULL)
        return ( -1 );
    i = 0;
    while ( (sdir = readdir(dirfp)) != NULL )
    {
        if ( !sdir->d_ino )
            continue;
        if ( strlen( sdir->d_name ) < 5 )
            continue;

        sprintf(fname, "%s%s", dirname, sdir->d_name);
        if ( stat(fname, &ustat) )
        {
            closedir(dirfp);
            return ( -2 );
        }

        if ( ustat.st_mode & 0040000 )
            continue;
        j = strlen( sdir->d_name );
        l = strlen( comp );

        if ( strncmp( sdir->d_name + j - l, comp, l ) )
            continue;
        strcpy( DirBuf[i].fname, sdir->d_name );
        DirBuf[i].ftime = ustat.st_mtime;
        i++;
        if ( i >= num )
            break;
    }
    closedir(dirfp);

    qsort( &DirBuf[0], i, sizeof(struct Dirbuf), _DirCmpProc );
    return ( i );
}

int Get_File( char *file, char *comp )
{
    int i;
    FILE *fp8;
    char Buf[300], s[10][200];

    if ( ( fp8 = fopen( file, "r" ) ) == NULL )
    {
        sprintf( tmpss, "open %s file err!", file );
        PTrace( TIMEDEBUG, Buf );
        return ( -1);
    }

    while ( fgets( Buf, 300, fp8 ) != NULL )
    {
        if ( strlen( Buf ) < 10 )
            continue;
        sscanf( Buf, "%s %s %s %s %s %s", s[0], s[1], s[2], s[3], s[4], s[5] );
        for ( i = 0;i < 6;i++ )
            DeleteSpace( s[i] );
        if ( strcasecmp( comp, s[0] ) )
            continue;
        for ( i = 1;i < 6;i++ )
            strcpy( RtnBuf[i], s[i] );
        fclose(fp8);
        return (0);
    }

    fclose(fp8);
    return ( -2);
}

int ChkDir( char *_dir )
{
    int i;
    if ( chdir( _dir ) )
    {
        if ( mkdir( _dir, S_IRWXU | S_IRGRP | S_IXGRP ) )
        {
            sprintf( tmpss, "mkdir %s err!", _dir );
            PTrace( ERRDEBUG, tmpss );
            return ( -1);
        }
    }
    return (0);
}

int CheckFileSize( char *fname )
{
    FILE *fp9;
    long fsize1, fsize2;
    char Bufs[400], ss[80];

    if ( ( fp9 = fopen( fname, "r" ) ) == NULL )
    {
        sprintf( tmpss, "open file %s err!", fname );
        PTrace( ERRDEBUG, tmpss );
        return ( -1);
    }

    if ( fgets( Bufs, 200, fp9 ) == NULL )
    {
        sprintf( tmpss, "read file %s err", Bufs );
        PTrace( ERRDEBUG, tmpss );
        return ( -2);
    }

    strncpy( ss, Bufs + 180, 12 );
    ss[12] = 0;
    fsize1 = atol( ss );
    fseek( fp9, 0L, SEEK_END );
    fsize2 = ftell( fp9 ) - 200;
    if ( fsize1 != fsize2 )
    {
        sprintf( tmpss, "CheckFileSize %s Err! fsize1=%ld,fsize2=%d=",
                 fname, fsize1, fsize2 );
        PTrace( TIMEDEBUG, tmpss );
        return ( -3);
    }
    fclose( fp9 );

    return (0);
}

int PTrace( int flag, char *ss )
{
    char tt[80];
    if ( flag == ERRDEBUG )
    {
        GetTime(0, tt);
        fprintf( ffp, "********** %s(%d) **********\n", tt, getpid() );
        fprintf( ffp, "%s,errno=%d=\n\n", ss, errno );
    }
    else if ( flag == TIMEDEBUG )
    {
        GetTime(0, tt);
        fprintf( ffp, "********** %s(%d) **********\n", tt, getpid() );
        fprintf( ffp, "%s\n\n", ss );
    }
    else if ( flag == TRDEBUG )
    {
        if ((strncmp(TRMode, "TRACE", 5)) && (strncmp(TRMode, "ALL", 3)))
            return (0);
        GetTime(0, tt);
        fprintf( ffp, "********** %s(%d) **********\n", tt, getpid() );
        fprintf( ffp, "%s,errno=%d=\n\n", ss, errno );
    }
    else if ( flag == ALLDEBUG )
    {
        if ( strncmp( TRMode, "ALL", 3 ) )
            return (0);
        GetTime(0, tt);
        fprintf( ffp, "********** %s(%d) **********\n", tt, getpid() );
        fprintf( ffp, "%s,errno=%d=\n\n", ss, errno );
    }
    else
        fprintf( ffp, "%s\n", ss );

    fflush(ffp);
    return (0);
}


int Compare(const char *lv_chCompareString, const char *lv_chCompareMod)
{
    while (1)
    {
        switch (*lv_chCompareMod)
        {

        case '\0':
            if (*lv_chCompareString == '\0')
            {
                return 1;
            }
            else
            {
                return 0;
            }

        case '!':
            if (Compare(lv_chCompareString, lv_chCompareMod + 1) == 1)
            {
                return 0;
            }
            else
            {
                return 1;
            }

        case '?' :
            if (*lv_chCompareString == '\0')
            {
                return 0;
            }
            return Compare(lv_chCompareString + 1, lv_chCompareMod + 1);

        case '*' :
            if (*(lv_chCompareMod + 1) == '\0')
            {
                return 1;
            }
            do
            {
                if (Compare(lv_chCompareString, lv_chCompareMod + 1) == 1)
                {
                    return 1;
                }
            }
            while (*(lv_chCompareString++));
            return 0;

        case '[' :
            lv_chCompareMod++;
            do
            {
                if (*lv_chCompareMod == *lv_chCompareString)
                {
                    while (*lv_chCompareMod != '\0' && *lv_chCompareMod != ']')
                    {
                        lv_chCompareMod++;
                    }
                    if (*lv_chCompareMod == ']')
                    {
                        lv_chCompareMod++;
                    }
                    return Compare(lv_chCompareString + 1, lv_chCompareMod);
                }

                lv_chCompareMod++;
                if ((*lv_chCompareMod == ':') && (*(lv_chCompareMod + 1) != ']'))
                {
                    if ((*lv_chCompareString >= *(lv_chCompareMod - 1)) && (*lv_chCompareString <= *(lv_chCompareMod + 1)))
                    {
                        while (*lv_chCompareMod != '\0' && *lv_chCompareMod != ']')
                        {
                            lv_chCompareMod++;
                        }
                        if (*lv_chCompareMod == ']')
                        {
                            lv_chCompareMod++;
                        }
                        return Compare(lv_chCompareString + 1, lv_chCompareMod);
                    }
                    lv_chCompareMod++;
                    lv_chCompareMod++;

                }
            }
            while (*lv_chCompareMod != '\0' && *lv_chCompareMod != ']');

            return 0;

        default :
            if (*lv_chCompareString == *lv_chCompareMod)
            {
                return Compare(lv_chCompareString + 1, lv_chCompareMod + 1);
            }
            else
            {
                return 0;
            }
        }
    }
}


/*-------------------------------------The End------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -