Code cleanup

This commit is contained in:
Pierre Pronchery 2016-06-09 21:46:30 +02:00
parent 939a97ee95
commit 942db224a9

View File

@ -83,6 +83,7 @@ static GtkWidget * _git_get_widget(Git * git);
static void _git_refresh(Git * git, GList * selection); static void _git_refresh(Git * git, GList * selection);
/* accessors */ /* accessors */
static String * _git_get_base(char const * filename);
static gboolean _git_is_managed(char const * filename); static gboolean _git_is_managed(char const * filename);
/* useful */ /* useful */
@ -372,11 +373,11 @@ static void _refresh_status(Git * git, char const * status)
/* accessors */ /* accessors */
/* git_is_managed */ /* git_get_base */
static gboolean _git_is_managed(char const * filename) static String * _git_get_base(char const * filename)
{ {
char * base = strdup(filename); String * base;
char * dir = base; String * dir;
String * p; String * p;
struct stat st; struct stat st;
int res; int res;
@ -384,28 +385,43 @@ static gboolean _git_is_managed(char const * filename)
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, filename); fprintf(stderr, "DEBUG: %s(\"%s\")\n", __func__, filename);
#endif #endif
for(; strcmp(dir, ".") != 0; dir = dirname(dir)) base = string_new(filename);
dir = base;
for(; string_compare(dir, ".") != 0; dir = dirname(dir))
{ {
if((p = string_new_append(dir, "/.git", NULL)) == NULL) if((p = string_new_append(dir, "/.git", NULL)) == NULL)
{ {
free(base); string_delete(base);
return FALSE; return NULL;
} }
res = lstat(p, &st); res = lstat(p, &st);
#ifdef DEBUG #ifdef DEBUG
fprintf(stderr, "DEBUG: %s() \"%s\" %d\n", __func__, p, res); fprintf(stderr, "DEBUG: %s() \"%s\" %d\n", __func__, p, res);
#endif #endif
string_delete(p);
if(res == 0) if(res == 0)
{ {
/* FIXME really implement */ string_delete(base);
free(base); return p;
return TRUE;
} }
if(strcmp(dir, "/") == 0) if(string_compare(dir, "/") == 0)
break; break;
} }
free(base); string_delete(base);
return NULL;
}
/* git_is_managed */
static gboolean _git_is_managed(char const * filename)
{
String * base;
if((base = _git_get_base(filename)) != NULL)
{
/* FIXME really implement */
string_delete(base);
return TRUE;
}
return FALSE; return FALSE;
} }