**/
#ifndef VERSION
-#define VERSION "tig-0.1"
+#define VERSION "tig-0.3"
#endif
#ifndef DEBUG
*/
static inline void
-string_ncopy(char *dst, char *src, int dstlen)
+string_ncopy(char *dst, const char *src, int dstlen)
{
strncpy(dst, src, dstlen - 1);
dst[dstlen - 1] = 0;
};
struct line_info {
- char *line; /* The start of line to match. */
+ const char *line; /* The start of line to match. */
int linelen; /* Size of string to match. */
int fg, bg, attr; /* Color and text attributes for the lines. */
};
**/
#define TIG_LS_REMOTE \
- "git ls-remote ."
+ "git ls-remote . 2>/dev/null"
/**
* [[view-commands]]
/* ... silently ignore that the following are also exported. */
#define TIG_HELP_CMD \
- "man tig 2> /dev/null"
+ "man tig 2>/dev/null"
#define TIG_PAGER_CMD \
""
struct view {
const char *name; /* View name */
- char *cmd_fmt; /* Default command line format */
- char *cmd_env; /* Command line set via environment */
- char *id; /* Points to either of ref_{head,commit} */
+ const char *cmd_fmt; /* Default command line format */
+ const char *cmd_env; /* Command line set via environment */
+ const char *id; /* Points to either of ref_{head,commit} */
size_t objsize; /* Size of objects in the line index */
struct view_ops {
/* What type of content being displayed. Used in the
* title bar. */
- char *type;
+ const char *type;
/* Draw one line; @lineno must be < view->height. */
bool (*draw)(struct view *view, unsigned int lineno);
/* Read one line; updates view->line. */
static bool
begin_update(struct view *view)
{
- char *id = view->id;
+ const char *id = view->id;
if (opt_cmd[0]) {
string_copy(view->cmd, opt_cmd);
* invalid so clear it. */
view->ref[0] = 0;
} else {
- char *format = view->cmd_env ? view->cmd_env : view->cmd_fmt;
+ const char *format = view->cmd_env ? view->cmd_env : view->cmd_fmt;
if (snprintf(view->cmd, sizeof(view->cmd), format,
id, id, id, id, id) >= sizeof(view->cmd))
time_t secs = time(NULL) - view->start_time;
if (view == VIEW(REQ_VIEW_HELP)) {
- char *msg = TIG_HELP;
+ const char *msg = TIG_HELP;
if (view->lines == 0) {
/* Slightly ugly, but abusing view->ref keeps
static int
load_refs(void)
{
- char *cmd_env = getenv("TIG_LS_REMOTE");
- char *cmd = cmd_env && *cmd_env ? cmd_env : TIG_LS_REMOTE;
+ const char *cmd_env = getenv("TIG_LS_REMOTE");
+ const char *cmd = cmd_env && *cmd_env ? cmd_env : TIG_LS_REMOTE;
FILE *pipe = popen(cmd, "r");
char buffer[BUFSIZ];
char *line;
pclose(pipe);
+ if (refs_size == 0)
+ die("Not a git repository");
+
return OK;
}
* Main
*/
-static void
+#if __GNUC__ >= 3
+#define __NORETURN __attribute__((__noreturn__))
+#else
+#define __NORETURN
+#endif
+
+static void __NORETURN
quit(int sig)
{
/* XXX: Restore tty modes and let the OS cleanup the rest! */
exit(0);
}
-static void die(const char *err, ...)
+static void __NORETURN die(const char *err, ...)
{
va_list args;
* have a file named 'master' it will clash with the reference named
* 'master', and thus you will have to use:
*
- * $ tag log -- master
+ * $ tig log -- master
*
* NOTE: For the main view, avoiding ambiguity will in some cases require
* you to specify two "\--" options. The first will make tig(1) stop
* If you are only interested in changed that happened between two dates
* you can use:
*
- * $ tig -- --after=may.5th --before=2006-05-16.15:44
+ * $ tig -- --after=May.5th --before=2006-05-16.15:44
*
* NOTE: The dot (".") is used as a separator instead of a space to avoid
- * having to quote the option value.
+ * having to quote the option value. If you prefer use `--after="May 5th"`
+ * instead of `--after="May 5th"`.
*
* Limiting by commit ranges
* ~~~~~~~~~~~~~~~~~~~~~~~~~