[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Lost] [Patch] Anpassungen und erweiterungen für den IO-Kram in der Libc



Antoine Kaufmann schrieb:
Index: src/modules/include/unistd.h
===================================================================
--- src/modules/include/unistd.h	(Revision 692)
+++ src/modules/include/unistd.h	(Arbeitskopie)
@@ -68,6 +73,10 @@
 /// Eigentuemer einer Datei aendern
 int chown(const char* path, uid_t owner, gid_t group);
+#ifndef CONFIG_LIBC_NO_STUBS
+/// Datei verschieben
+int rename(const char *oldpath, const char *newpath);
+#endif

Gehört nach stdio.h

  *
  * @return Dateideskriptor bei Erfolg, -1 im Fehlerfall
  */
-int open(const char* filename, int flags, mode_t mode)
+int open(const char* filename, int flags, ...)
 {
     char* fopen_flags = "   ";
     size_t flags_size = 0;
@@ -144,12 +153,17 @@
     // Open-Flags auf fopen-Kompatible uebersetzen
     if ((flags & O_RDONLY) == O_RDONLY) {
         fopen_flags[flags_size++] = 'r';
+    } else if (((flags & O_WRONLY) == O_WRONLY) && (((flags & O_TRUNC) ==
+        O_TRUNC)))

Nicht immer ist ausführlicher auch lesbarer, besonders wenn dadurch ein Zeilenumbruch reinkommt. (flags & O_WRONLY) && (flags & O_TRUNC) würde es auch tun. Oder meinetwegen noch (flags & (O_WRONLY | O_TRUNC)) == (O_WRONLY | O_TRUNC), aber das finde ich auch nicht so schön.

@@ -189,7 +203,6 @@
 ssize_t read(int fd, void* buffer, size_t size)
 {
     FILE* file = fd_to_file(fd);
-
     // Bei einem ungueltigen Deskriptor wird abgebrochen

Also ich mag die Leerzeile. ;-)