mescc: Support binutils-2.10.1: opentype `r+'.
authorJan Nieuwenhuizen <janneke@gnu.org>
Sun, 10 Jun 2018 05:51:10 +0000 (07:51 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Sun, 10 Jun 2018 05:51:10 +0000 (07:51 +0200)
* lib/libc+tcc.c (fopen): Support opentype `r+'.

lib/libc+tcc.c

index b7bdd0f259c936df1e49beabf4e11ff9120e5709..bd4bbfb951e0363420d1e5a53c0d470b69c3f191 100644 (file)
@@ -189,12 +189,14 @@ fopen (char const *file_name, char const *opentype)
 {
   int fd;
   int mode = 0600;
-  if (opentype[0] == 'a' && !access (file_name, O_RDONLY))
+  if ((opentype[0] == 'a' || !strcmp (opentype, "r+"))
+      && !access (file_name, O_RDONLY))
     {
       fd = open (file_name, O_RDWR, mode);
-      lseek (fd, 0, SEEK_END);
+      if (opentype[0] == 'a')
+        lseek (fd, 0, SEEK_END);
     }
-  else if (opentype[0] == 'w' || opentype[0] == 'a')
+  else if (opentype[0] == 'w' || opentype[0] == 'a' || !strcmp (opentype, "r+"))
     {
       char *plus_p = strchr (opentype, '+');
       int flags = plus_p ? O_RDWR | O_CREAT : O_WRONLY | O_CREAT | O_TRUNC;