edi: escape paths where necessary.
This commit is contained in:
parent
1daf236275
commit
e86760b802
|
@ -184,6 +184,7 @@ edi_filepanel_scm_status_update(void)
|
|||
_file_status_item_add(status->fullpath, status->change);
|
||||
eina_stringshare_del(status->path);
|
||||
eina_stringshare_del(status->fullpath);
|
||||
eina_stringshare_del(status->unescaped);
|
||||
free(status);
|
||||
}
|
||||
eina_list_free(e->statuses);
|
||||
|
@ -609,7 +610,7 @@ _content_get(void *data, Evas_Object *obj, const char *source)
|
|||
Edi_Dir_Data *sd = data;
|
||||
Evas_Object *box, *lbox, *mbox, *rbox, *label, *ic;
|
||||
Edi_Scm_Status_Code *code;
|
||||
char *text;
|
||||
char *text, *escaped;
|
||||
const char *icon_name, *icon_status;
|
||||
Eina_Bool staged = EINA_FALSE;
|
||||
|
||||
|
@ -618,10 +619,13 @@ _content_get(void *data, Evas_Object *obj, const char *source)
|
|||
|
||||
text = NULL; icon_name = icon_status = NULL;
|
||||
|
||||
code = _file_status_item_find(sd->path);
|
||||
escaped = ecore_file_escape_name(sd->path);
|
||||
code = _file_status_item_find(escaped);
|
||||
if (code)
|
||||
icon_status = _icon_status(*code, &staged);
|
||||
|
||||
free(escaped);
|
||||
|
||||
text = strdup(basename((char *)sd->path));
|
||||
|
||||
provider = _get_provider_from_hashset(sd->path);
|
||||
|
|
|
@ -49,6 +49,7 @@ _edi_file_screens_create_file_cb(void *data,
|
|||
void *event_info EINA_UNUSED)
|
||||
{
|
||||
const char *name;
|
||||
char *text;
|
||||
char *path;
|
||||
const char *directory = _directory_path;
|
||||
FILE *f;
|
||||
|
@ -63,7 +64,9 @@ _edi_file_screens_create_file_cb(void *data,
|
|||
return;
|
||||
}
|
||||
|
||||
path = edi_path_append(directory, name);
|
||||
text = elm_entry_markup_to_utf8(name);
|
||||
|
||||
path = edi_path_append(directory, text);
|
||||
if ((ecore_file_exists(path) && ecore_file_is_dir(path)) ||
|
||||
!ecore_file_exists(path))
|
||||
{
|
||||
|
@ -82,6 +85,7 @@ _edi_file_screens_create_file_cb(void *data,
|
|||
|
||||
evas_object_del(_popup);
|
||||
free(path);
|
||||
free(text);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -90,7 +94,7 @@ _edi_file_screens_create_dir_cb(void *data,
|
|||
void *event_info EINA_UNUSED)
|
||||
{
|
||||
const char *name;
|
||||
char *path;
|
||||
char *path, *text;
|
||||
const char *directory = _directory_path;
|
||||
|
||||
if (!ecore_file_is_dir(directory)) return;
|
||||
|
@ -102,7 +106,9 @@ _edi_file_screens_create_dir_cb(void *data,
|
|||
return;
|
||||
}
|
||||
|
||||
path = edi_path_append(directory, name);
|
||||
text = elm_entry_markup_to_utf8(name);
|
||||
|
||||
path = edi_path_append(directory, text);
|
||||
|
||||
mkdir(path, 0755);
|
||||
|
||||
|
@ -111,6 +117,7 @@ _edi_file_screens_create_dir_cb(void *data,
|
|||
|
||||
evas_object_del(_popup_dir);
|
||||
free(path);
|
||||
free(text);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -120,7 +127,7 @@ _edi_file_screens_rename_cb(void *data,
|
|||
{
|
||||
Evas_Object *entry;
|
||||
const char *name, *existing_path, *directory;
|
||||
char *path;
|
||||
char *path, *text;
|
||||
|
||||
directory = _directory_path;
|
||||
existing_path = (char *) data;
|
||||
|
@ -134,7 +141,9 @@ _edi_file_screens_rename_cb(void *data,
|
|||
return;
|
||||
}
|
||||
|
||||
path = edi_path_append(directory, name);
|
||||
text = elm_entry_markup_to_utf8(name);
|
||||
|
||||
path = edi_path_append(directory, text);
|
||||
|
||||
if (ecore_file_exists(path))
|
||||
{
|
||||
|
@ -161,6 +170,7 @@ _edi_file_screens_rename_cb(void *data,
|
|||
|
||||
evas_object_del(_popup);
|
||||
free(path);
|
||||
free(text);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -91,7 +91,7 @@ _edi_scm_git_file_add(const char *path)
|
|||
int code;
|
||||
Eina_Strbuf *command = eina_strbuf_new();
|
||||
|
||||
eina_strbuf_append_printf(command, "git add '%s'", path);
|
||||
eina_strbuf_append_printf(command, "git add %s", path);
|
||||
|
||||
code = _edi_scm_exec(eina_strbuf_string_get(command));
|
||||
|
||||
|
@ -106,7 +106,7 @@ _edi_scm_git_file_mod(const char *path)
|
|||
int code;
|
||||
Eina_Strbuf *command = eina_strbuf_new();
|
||||
|
||||
eina_strbuf_append_printf(command, "git mod '%s'", path);
|
||||
eina_strbuf_append_printf(command, "git mod %s", path);
|
||||
|
||||
code = _edi_scm_exec(eina_strbuf_string_get(command));
|
||||
|
||||
|
@ -136,7 +136,7 @@ _edi_scm_git_file_del(const char *path)
|
|||
int code;
|
||||
Eina_Strbuf *command = eina_strbuf_new();
|
||||
|
||||
eina_strbuf_append_printf(command, "git rm '%s'", path);
|
||||
eina_strbuf_append_printf(command, "git rm %s", path);
|
||||
|
||||
code = _edi_scm_exec(eina_strbuf_string_get(command));
|
||||
|
||||
|
@ -163,7 +163,7 @@ _edi_scm_git_status(void)
|
|||
static Edi_Scm_Status *
|
||||
_parse_line(char *line)
|
||||
{
|
||||
char *path, *fullpath, *change;
|
||||
char *esc_path, *path, *fullpath, *change;
|
||||
Edi_Scm_Status *status;
|
||||
|
||||
change = line;
|
||||
|
@ -215,10 +215,14 @@ _parse_line(char *line)
|
|||
else
|
||||
status->change = EDI_SCM_STATUS_UNKNOWN;
|
||||
|
||||
status->path = eina_stringshare_add(path);
|
||||
fullpath = edi_path_append(edi_project_get(), path);
|
||||
esc_path = ecore_file_escape_name(path);
|
||||
status->path = eina_stringshare_add(esc_path);
|
||||
fullpath = edi_path_append(edi_project_get(), esc_path);
|
||||
status->fullpath = eina_stringshare_add(fullpath);
|
||||
status->unescaped = eina_stringshare_add(path);
|
||||
|
||||
free(fullpath);
|
||||
free(esc_path);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
@ -228,11 +232,12 @@ _edi_scm_git_file_status(const char *path)
|
|||
{
|
||||
Edi_Scm_Status *status;
|
||||
char command[4096];
|
||||
char *line;
|
||||
char *line, *escaped;
|
||||
Edi_Scm_Status_Code result;
|
||||
|
||||
snprintf(command, sizeof(command), "git status --porcelain '%s'", path);
|
||||
|
||||
escaped = ecore_file_escape_name(path);
|
||||
snprintf(command, sizeof(command), "git status --porcelain %s", escaped);
|
||||
free(escaped);
|
||||
line = _edi_scm_exec_response(command);
|
||||
if (!line[0] || !line[1])
|
||||
{
|
||||
|
@ -244,6 +249,7 @@ _edi_scm_git_file_status(const char *path)
|
|||
result = status->change;
|
||||
eina_stringshare_del(status->path);
|
||||
eina_stringshare_del(status->fullpath);
|
||||
eina_stringshare_del(status->unescaped);
|
||||
free(status);
|
||||
}
|
||||
|
||||
|
@ -342,7 +348,7 @@ _edi_scm_git_commit(const char *message)
|
|||
int code;
|
||||
Eina_Strbuf *command = eina_strbuf_new();
|
||||
|
||||
eina_strbuf_append_printf(command, "git commit -m '%s'", message);
|
||||
eina_strbuf_append_printf(command, "git commit -m \"%s\"", message);
|
||||
|
||||
code = _edi_scm_exec(eina_strbuf_string_get(command));
|
||||
|
||||
|
@ -534,25 +540,51 @@ edi_scm_shutdown()
|
|||
EAPI int
|
||||
edi_scm_add(const char *path)
|
||||
{
|
||||
char *escaped;
|
||||
int result;
|
||||
Edi_Scm_Engine *e = edi_scm_engine_get();
|
||||
|
||||
return e->file_add(path);
|
||||
escaped = ecore_file_escape_name(path);
|
||||
|
||||
result = e->file_add(escaped);
|
||||
|
||||
free(escaped);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
edi_scm_del(const char *path)
|
||||
{
|
||||
char *escaped;
|
||||
int result;
|
||||
Edi_Scm_Engine *e = edi_scm_engine_get();
|
||||
|
||||
return e->file_del(path);
|
||||
escaped = ecore_file_escape_name(path);
|
||||
|
||||
result = e->file_del(escaped);
|
||||
|
||||
free(escaped);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
EAPI int
|
||||
edi_scm_move(const char *src, const char *dest)
|
||||
{
|
||||
char *esc_src, *esc_dst;
|
||||
int result;
|
||||
Edi_Scm_Engine *e = edi_scm_engine_get();
|
||||
|
||||
return e->move(src, dest);
|
||||
esc_src = ecore_file_escape_name(src);
|
||||
esc_dst = ecore_file_escape_name(dest);
|
||||
|
||||
result = e->move(esc_src, esc_dst);
|
||||
|
||||
free(esc_src);
|
||||
free(esc_dst);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
EAPI Eina_Bool
|
||||
|
@ -571,9 +603,17 @@ edi_scm_status_get(void)
|
|||
EAPI Edi_Scm_Status_Code
|
||||
edi_scm_file_status(const char *path)
|
||||
{
|
||||
char *escaped;
|
||||
int result;
|
||||
Edi_Scm_Engine *e = edi_scm_engine_get();
|
||||
|
||||
return e->file_status(path);
|
||||
escaped = ecore_file_escape_name(path);
|
||||
|
||||
result = e->file_status(escaped);
|
||||
|
||||
free(escaped);
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
EAPI void
|
||||
|
|
|
@ -28,6 +28,7 @@ typedef struct _Edi_Scm_Status
|
|||
{
|
||||
Eina_Stringshare *path;
|
||||
Eina_Stringshare *fullpath;
|
||||
Eina_Stringshare *unescaped;
|
||||
Edi_Scm_Status_Code change;
|
||||
Eina_Bool staged;
|
||||
} Edi_Scm_Status;
|
||||
|
|
Loading…
Reference in New Issue