c84c561a6167edcaa05ab1634a5336514b0bdf69
[akaros.git] / tools / sys-apps / bash / akaros-patches / 4.3.30 / bash-4.3.30.patch
1 Only in bash-4.3.30: build
2 diff -ur bash-4.3.30.dist/builtins/echo.def bash-4.3.30/builtins/echo.def
3 --- bash-4.3.30.dist/builtins/echo.def  2011-06-29 09:55:58.000000000 -0400
4 +++ bash-4.3.30/builtins/echo.def       2016-06-03 17:40:57.834915855 -0400
5 @@ -108,8 +108,9 @@
6  echo_builtin (list)
7       WORD_LIST *list;
8  {
9 -  int display_return, do_v9, i, len;
10 -  char *temp, *s;
11 +  int display_return, do_v9, i, j, len, malloc_len;
12 +  char *temp, *s, *m;
13 +  WORD_LIST *save_list;
14  
15    do_v9 = xpg_echo;
16    display_return = 1;
17 @@ -162,6 +163,30 @@
18    clearerr (stdout);   /* clear error before writing and testing success */
19  
20    terminate_immediately++;
21 +  malloc_len = 0;
22 +  m = NULL;
23 +  save_list = list;
24 +  while (list)
25 +    {
26 +      i = len = 0;
27 +      temp = do_v9 ? ansicstr (list->word->word, STRLEN (list->word->word), 1, &i, &len)
28 +                  : list->word->word;
29 +      if (!temp)
30 +        continue;
31 +      malloc_len += do_v9 ? len : strlen(temp);
32 +      if (do_v9)
33 +       free (temp);
34 +      list = list->next;
35 +      if (list)
36 +        malloc_len++;
37 +    }
38 +  if (display_return)
39 +    malloc_len++;
40 +  m = malloc(malloc_len);
41 +  if (m == NULL)
42 +    fatal_error ("echo: could not allocate %lu bytes", (unsigned long)malloc_len);
43 +  list = save_list;
44 +  j = 0;
45    while (list)
46      {
47        i = len = 0;
48 @@ -169,19 +194,13 @@
49                    : list->word->word;
50        if (temp)
51         {
52 -         if (do_v9)
53 -           {
54 -             for (s = temp; len > 0; len--)
55 -               putchar (*s++);
56 -           }
57 -         else      
58 -           printf ("%s", temp);
59 -#if defined (SunOS5)
60 -         fflush (stdout);      /* Fix for bug in SunOS 5.5 printf(3) */
61 -#endif
62 +         if (!do_v9)
63 +              len = strlen(temp);
64 +          memmove(m + j, temp, len);
65 +          j += len;
66 +          if (do_v9)
67 +            free (temp);
68         }
69 -      if (do_v9 && temp)
70 -       free (temp);
71        list = list->next;
72        if (i)
73         {
74 @@ -189,11 +208,15 @@
75           break;
76         }
77        if (list)
78 -       putchar(' ');
79 +       m[j++] = ' ';
80      }
81 -
82    if (display_return)
83 -    putchar ('\n');
84 +    m[j++] = '\n';
85 +  write(STDOUT_FILENO, m, j);
86 +  free(m);
87 +#if defined (SunOS5)
88 +  fflush (stdout);     /* Fix for bug in SunOS 5.5 printf(3) */
89 +#endif
90  
91    terminate_immediately--;
92    return (sh_chkwrite (EXECUTION_SUCCESS));
93 diff -ur bash-4.3.30.dist/configure bash-4.3.30/configure
94 --- bash-4.3.30.dist/configure  2014-02-11 10:38:00.000000000 -0500
95 +++ bash-4.3.30/configure       2016-05-16 23:04:59.481616025 -0400
96 @@ -2853,6 +2853,7 @@
97  sparc-linux*)  opt_bash_malloc=no ;;   # sparc running linux; requires ELF
98  #*-freebsd*-gnu)       opt_bash_malloc=no ;;   # there's some undetermined problem here
99  #*-freebsd*)   opt_bash_malloc=no ;;   # they claim it's better; I disagree
100 +*-akaros*)     opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
101  *-openbsd*)    opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
102  *-mirbsd*)     opt_bash_malloc=no ;;   # they claim it needs eight-bit alignment
103  *-aix*)                opt_bash_malloc=no ;;   # AIX machines
104 diff -ur bash-4.3.30.dist/error.c bash-4.3.30/error.c
105 --- bash-4.3.30.dist/error.c    2014-01-17 08:09:33.000000000 -0500
106 +++ bash-4.3.30/error.c 2016-05-25 13:40:26.978379551 -0400
107 @@ -487,3 +487,32 @@
108  {
109    report_error (_("%s: readonly variable"), s);
110  }
111 +
112 +#if defined (USE_AKAROS_STRERROR)
113 +#ifndef MAX_ERRSTR_LEN
114 +#define MAX_ERRSTR_LEN 128
115 +#endif
116 +char *
117 +akaros_strerror(e)
118 +      int e;
119 +{
120 +  static char emsg[2*MAX_ERRSTR_LEN];
121 +  char ebuf[MAX_ERRSTR_LEN];
122 +  size_t len;
123 +  int serrno;
124 +  char *estr, *strerror_str;
125 +
126 +  serrno = errno;
127 +  estr = errstr ();
128 +  strerror_str = strerror_r (e, ebuf, sizeof (ebuf));
129 +  len = strlen (strerror_str);
130 +  if (len > (sizeof (emsg) - 1))
131 +    len = sizeof (emsg) - 1;
132 +  memmove (emsg, strerror_str, len);
133 +  if (e == serrno && estr && *estr)
134 +    snprintf (emsg + len, sizeof (emsg) - len, ", %s", estr);
135 +  ebuf[sizeof (ebuf) - 1] = '\0';
136 +
137 +  return emsg;
138 +}
139 +#endif
140 diff -ur bash-4.3.30.dist/mksyntax.c bash-4.3.30/mksyntax.c
141 --- bash-4.3.30.dist/mksyntax.c 2012-07-29 19:48:38.000000000 -0400
142 +++ bash-4.3.30/mksyntax.c      2016-05-25 11:59:57.560352289 -0400
143 @@ -40,6 +40,10 @@
144  extern int errno;
145  #endif
146  
147 +#ifdef strerror
148 +#undef strerror
149 +#endif
150 +
151  #ifndef HAVE_STRERROR
152  extern char *strerror();
153  #endif
154 diff -ur bash-4.3.30.dist/support/config.guess bash-4.3.30/support/config.guess
155 --- bash-4.3.30.dist/support/config.guess       2013-12-16 16:02:33.000000000 -0500
156 +++ bash-4.3.30/support/config.guess    2016-05-16 23:04:12.844336864 -0400
157 @@ -219,6 +219,10 @@
158         UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
159         echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
160         exit ;;
161 +    *:Akaros:*:*)
162 +       UNAME_MACHINE_ARCH=x86_64
163 +       echo x86_64-ucb-akaros1.0
164 +       exit ;;
165      *:OpenBSD:*:*)
166         UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
167         echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
168 diff -ur bash-4.3.30.dist/support/config.sub bash-4.3.30/support/config.sub
169 --- bash-4.3.30.dist/support/config.sub 2013-12-17 10:49:47.000000000 -0500
170 +++ bash-4.3.30/support/config.sub      2016-05-16 23:05:28.906423063 -0400
171 @@ -1356,7 +1356,7 @@
172               | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
173               | -sym* | -kopensolaris* | -plan9* \
174               | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
175 -             | -aos* | -aros* \
176 +             | -akaros* | -aos* | -aros* \
177               | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
178               | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
179               | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \