Filter:   InfoImg
download rmfiles.c
Language: C
LOC: 41
Project Info
grub.org - Distributed Internet Crawler(grub)
Server: SourceForge
Type: cvs
...ge\g\grub\grub\client\util\
   alt_ftw.c
   alt_ftw.h
   bin_test_util.dsp
   clog.cpp
   clog.h
   ConfigFileInfo.h
   crc.h
   crc_32.c
   crc_32.cpp
   crc_32.h
   crc_test.c
   crc_test.cpp
   crc32.c
   crc32.h
   dbl_list.c
   dbl_list.h
   delay.cpp
   delay.h
   diagnose.h
   fc32.c
   file_data.c
   file_data.h
   getopt.c
   getopt.h
   grubconf.c
   grubconf.h
   GrubExp.cpp
   GrubExp.h
   Gui.cpp
   Gui.h
   intl.h
   lib_util.dsp
   lockfile.cpp
   lockfile.h
   Makefile.am
   parsecfg.c
   parsecfg.h
   platform.h
   rmfiles.c
   rmfiles.h
   ServerSettings.cpp
   ServerSettings.h
   sniptype.h
   StatusInterface.cpp
   StatusInterface.h
   strip_url.c
   strip_url.h
   test_util.cpp

#include "rmfiles.h"

#ifdef HAVE_FTW_H
#include <ftw.h>
#else
#include "alt_ftw.h"
#endif
#include <stdio.h>
#include <string.h>
#include <unistd.h>

static int rmfiles_mode;
static int rmfiles_failed;
static const char *rmfiles_ext;

static int rmfiles_traverse(
	const char *filename,
	const struct stat *ptr,
	int flag)
{
	const char *str;

	if ( flag == FTW_F && ( str = strstr( filename, rmfiles_ext ) ) &&
		strlen( str ) == strlen( rmfiles_ext ) )
	{
		if ( unlink( filename ) == -1 ) {
			rmfiles_failed = 1;
			if ( rmfiles_mode == RMFILES_STOP_ON_FIRST_FAIL )
				return -1;
		}
	}

	return 0;
}

int rmfiles_byext( const char *path, const char *extension, int mode )
{
	rmfiles_failed = 0;
	rmfiles_mode = mode;
	rmfiles_ext = extension;

	/* traverse through each file in the archive path directory,
	 * and remove it if file ends on extension
	 */
#ifdef HAVE_FTW_H
	ftw( path, rmfiles_traverse, 1 );
#else
	alt_ftw( path, rmfiles_traverse, 1 );
#endif

	return rmfiles_failed ? RMFILES_FAILURE : RMFILES_SUCCESS;
}