Refactor 73b02a4
.
Moves basename to a separate function, and documents some of the pointer arithmetic it's doing. Change-Id: I6f65ad99f163c2b223929f2ce7805b8935df71c0
This commit is contained in:
parent
73b02a4a2c
commit
2eb7ce475a
1 changed files with 36 additions and 13 deletions
|
@ -181,14 +181,46 @@ static void hash_check( int out, const char *path )
|
||||||
rb->close( list );
|
rb->close( list );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Return the last name from a pathname (ignoring a trailing slash if
|
||||||
|
* it exists). The returned pointer points to a statically allocated
|
||||||
|
* buffer.
|
||||||
|
*/
|
||||||
|
static char *get_basename(const char *path) {
|
||||||
|
static char temp[MAX_PATH];
|
||||||
|
char *p;
|
||||||
|
int len, isdir = 0;
|
||||||
|
|
||||||
|
rb->strcpy(temp, path);
|
||||||
|
|
||||||
|
len = rb->strlen(temp);
|
||||||
|
|
||||||
|
if (temp[len - 1] == '/')
|
||||||
|
{
|
||||||
|
/* strip trailing slash, and update length accordingly */
|
||||||
|
temp[--len] = '\0';
|
||||||
|
isdir = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* find the last slash, if there is one */
|
||||||
|
p = rb->strrchr(temp, '/');
|
||||||
|
|
||||||
|
/*
|
||||||
|
* re-append trailing slash if we previously removed it (the
|
||||||
|
* original NUL is still present)
|
||||||
|
*/
|
||||||
|
if(isdir)
|
||||||
|
temp[len++] = '/';
|
||||||
|
|
||||||
|
return p ? (p + 1) : temp;
|
||||||
|
}
|
||||||
|
|
||||||
enum plugin_status plugin_start(const void* parameter)
|
enum plugin_status plugin_start(const void* parameter)
|
||||||
{
|
{
|
||||||
const char *arg = (const char *)parameter; /* input file path, if any */
|
const char *arg = (const char *)parameter; /* input file path, if any */
|
||||||
char temp[MAX_PATH]; /* input file name */
|
char *basename;
|
||||||
char *basename=temp;
|
|
||||||
int out = -1; /* output file descriptor */
|
int out = -1; /* output file descriptor */
|
||||||
char filename[MAX_PATH]; /* output file name */
|
char filename[MAX_PATH]; /* output file name */
|
||||||
int isdir=0; /*flag if input file is a directory */
|
|
||||||
|
|
||||||
void (*action)( int, const char * ) = NULL;
|
void (*action)( int, const char * ) = NULL;
|
||||||
|
|
||||||
|
@ -243,17 +275,8 @@ enum plugin_status plugin_start(const void* parameter)
|
||||||
action = hash_dir;
|
action = hash_dir;
|
||||||
arg = "/";
|
arg = "/";
|
||||||
}
|
}
|
||||||
rb->strcpy(temp, arg);
|
|
||||||
if (temp[(rb->strlen(temp) - 1)] == '/')
|
|
||||||
{
|
|
||||||
temp[(rb->strlen(temp) - 1)] = '\0';
|
|
||||||
isdir=1;
|
|
||||||
}
|
|
||||||
if(rb->strrchr(temp, '/'))
|
|
||||||
basename =(rb->strrchr(temp, '/')+1);
|
|
||||||
|
|
||||||
if(isdir)
|
basename = get_basename(arg);
|
||||||
temp[(rb->strlen(temp))] = '/';
|
|
||||||
|
|
||||||
rb->lcd_putsf( 0, 1, "Hashing %s", basename );
|
rb->lcd_putsf( 0, 1, "Hashing %s", basename );
|
||||||
rb->lcd_puts( 0, 2, rb->str(LANG_ACTION_STD_CANCEL) );
|
rb->lcd_puts( 0, 2, rb->str(LANG_ACTION_STD_CANCEL) );
|
||||||
|
|
Loading…
Reference in a new issue