/* tilde.c -- Tilde expansion code (~/foo := $HOME/foo). */
-/* Copyright (C) 1988-2009 Free Software Foundation, Inc.
+/* Copyright (C) 1988-2017 Free Software Foundation, Inc.
This file is part of the GNU Readline Library (Readline), a library
for reading lines of text with interactive input and history editing.
the tilde which starts the expansion. Place the length of the text
which identified this tilde starter in LEN, excluding the tilde itself. */
static int
-tilde_find_prefix (string, len)
- const char *string;
- int *len;
+tilde_find_prefix (const char *string, int *len)
{
register int i, j, string_len;
register char **prefixes;
/* Find the end of a tilde expansion in STRING, and return the index of
the character which ends the tilde definition. */
static int
-tilde_find_suffix (string)
- const char *string;
+tilde_find_suffix (const char *string)
{
register int i, j, string_len;
register char **suffixes;
/* Return a new string which is the result of tilde expanding STRING. */
char *
-tilde_expand (string)
- const char *string;
+tilde_expand (const char *string)
{
char *result;
int result_size, result_index;
string += end;
expansion = tilde_expand_word (tilde_word);
- xfree (tilde_word);
+
+ if (expansion == 0)
+ expansion = tilde_word;
+ else
+ xfree (tilde_word);
len = strlen (expansion);
#ifdef __CYGWIN__
non-null, the index of the end of the prefix into FNAME is returned in
the location it points to. */
static char *
-isolate_tilde_prefix (fname, lenp)
- const char *fname;
- int *lenp;
+isolate_tilde_prefix (const char *fname, int *lenp)
{
char *ret;
int i;
function. Right now, it just calls tilde_find_suffix and allocates new
memory, but it can be expanded to do different things later. */
char *
-tilde_find_word (fname, flags, lenp)
- const char *fname;
- int flags, *lenp;
+tilde_find_word (const char *fname, int flags, int *lenp)
{
int x;
char *r;
/* Return a string that is PREFIX concatenated with SUFFIX starting at
SUFFIND. */
static char *
-glue_prefix_and_suffix (prefix, suffix, suffind)
- char *prefix;
- const char *suffix;
- int suffind;
+glue_prefix_and_suffix (char *prefix, const char *suffix, int suffind)
{
char *ret;
int plen, slen;
tilde. If there is no expansion, call tilde_expansion_failure_hook.
This always returns a newly-allocated string, never static storage. */
char *
-tilde_expand_word (filename)
- const char *filename;
+tilde_expand_word (const char *filename)
{
char *dirname, *expansion, *username;
int user_len;
{
/* Prefix $HOME to the rest of the string. */
expansion = sh_get_env_value ("HOME");
-#ifdef _WIN32
- if (!expansion)
+#if defined (_WIN32)
+ if (expansion == 0)
expansion = sh_get_env_value ("APPDATA");
#endif
#undef NULL
#include <stdio.h>
-main (argc, argv)
- int argc;
- char **argv;
+main (int argc, char **argv)
{
char *result, line[512];
int done = 0;
exit (0);
}
-static void memory_error_and_abort ();
+static void memory_error_and_abort (void);
static void *
-xmalloc (bytes)
- size_t bytes;
+xmalloc (size_t bytes)
{
void *temp = (char *)malloc (bytes);
}
static void *
-xrealloc (pointer, bytes)
- void *pointer;
- int bytes;
+xrealloc (void *pointer, int bytes)
{
void *temp;
}
static void
-memory_error_and_abort ()
+memory_error_and_abort (void)
{
fprintf (stderr, "readline: out of virtual memory\n");
abort ();