[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Lost] [Patch] Posix-Funktion access()
+ libc: Implementieren des Stubs fuer access()
=== src/modules/lib/posix/access.c
==================================================================
--- src/modules/lib/posix/access.c (revision 1408)
+++ src/modules/lib/posix/access.c (local)
@@ -34,13 +34,30 @@
*/
#include <unistd.h>
+#include <stdio.h>
+#include <errno.h>
+#include <dirent.h>
/**
- * TODO
+ * Prueft ob auf eine Datei zugegriffen werden kann
*/
-int access(const char *pathname, int mode)
+int access(const char* path, int mode)
{
- // TODO ;-)
+ // Wenn die Datei existiert kann auf sie zugegriffen werden.
+ // TODO: Schreibzugriff?
+ FILE* f = fopen(path, "r");
+ if (f == NULL) {
+ // Wenn die Datei nicht geoeffnet werden kann, ist es vielleicht ein
+ // Verzeichnis
+ DIR* dir = opendir(path);
+ if (dir == NULL) {
+ errno = ENOENT;
+ return -1;
+ }
+ closedir(dir);
+ return 0;
+ }
+ fclose(f);
return 0;
}