use got_path_dirname() in tog's input_log_view(); avoids const dirname(3) ok naddy
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
diff --git a/tog/tog.c b/tog/tog.c
index a99744c..a0db9b1 100644
--- a/tog/tog.c
+++ b/tog/tog.c
@@ -2439,30 +2439,34 @@ input_log_view(struct tog_view **new_view, struct tog_view **dead_view,
*new_view = tree_view;
break;
case KEY_BACKSPACE:
- if (strcmp(s->in_repo_path, "/") == 0)
+ if (got_path_cmp(s->in_repo_path, "/",
+ strlen(s->in_repo_path), 1) == 0)
break;
- parent_path = dirname(s->in_repo_path);
- if (parent_path && strcmp(parent_path, ".") != 0) {
- err = stop_log_thread(s);
- if (err)
- return err;
- lv = view_open(view->nlines, view->ncols,
- view->begin_y, view->begin_x, TOG_VIEW_LOG);
- if (lv == NULL)
- return got_error_from_errno(
- "view_open");
- err = open_log_view(lv, s->start_id, s->refs,
- s->repo, s->head_ref_name, parent_path,
- s->log_branches);
- if (err)
- return err;;
- if (view_is_parent_view(view))
- *new_view = lv;
- else {
- view_set_child(view->parent, lv);
- *focus_view = lv;
- }
- return NULL;
+ err = got_path_dirname(&parent_path, s->in_repo_path);
+ if (err)
+ return err;
+ err = stop_log_thread(s);
+ if (err) {
+ free(parent_path);
+ return err;
+ }
+ lv = view_open(view->nlines, view->ncols,
+ view->begin_y, view->begin_x, TOG_VIEW_LOG);
+ if (lv == NULL) {
+ free(parent_path);
+ return got_error_from_errno("view_open");
+ }
+ err = open_log_view(lv, s->start_id, s->refs,
+ s->repo, s->head_ref_name, parent_path,
+ s->log_branches);
+ free(parent_path);
+ if (err)
+ return err;;
+ if (view_is_parent_view(view))
+ *new_view = lv;
+ else {
+ view_set_child(view->parent, lv);
+ *focus_view = lv;
}
break;
case CTRL('l'):