Changeset 4f4b4e7 in mainline
- Timestamp:
- 2011-06-15T23:38:45Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- b08ef1fd
- Parents:
- ab547063
- Location:
- uspace/lib/posix
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/posix/common.h
rab547063 r4f4b4e7 27 27 */ 28 28 29 /** @addtogroup libposix 30 * @{ 31 */ 32 /** @file 33 */ 34 29 35 #ifndef LIBPOSIX_COMMON_H_ 30 36 #define LIBPOSIX_COMMON_H_ … … 33 39 #include <stdlib.h> 34 40 35 #define not_implemented() (fprintf(stderr, "Function %s() in file %s at line %d is not implemented\n", __func__, __FILE__, __LINE__), abort()) 41 #define not_implemented() (fprintf(stderr, \ 42 "Function %s() in file %s at line %d is not implemented\n", \ 43 __func__, __FILE__, __LINE__), abort()) 36 44 37 45 #endif /* LIBPOSIX_COMMON_H_ */ 38 46 47 /** @} 48 */ -
uspace/lib/posix/ctype.c
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 27 28 */ 28 29 30 /** @addtogroup libposix 31 * @{ 32 */ 33 /** @file 34 */ 35 36 #define POSIX_INTERNAL 37 29 38 #include "ctype.h" 30 39 31 int isxdigit(int ch) 40 /** 41 * 42 * @param ch 43 * @return 44 */ 45 int posix_isxdigit(int ch) 32 46 { 33 47 return isdigit(ch) || 34 35 48 (ch >= 'a' && ch <= 'f') || 49 (ch >= 'A' && ch <= 'F'); 36 50 } 37 51 52 /** @} 53 */ -
uspace/lib/posix/ctype.h
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 27 28 */ 28 29 30 /** @addtogroup libposix 31 * @{ 32 */ 33 /** @file 34 */ 35 29 36 #ifndef POSIX_CTYPE_H_ 30 37 #define POSIX_CTYPE_H_ … … 32 39 #include "libc/ctype.h" 33 40 34 extern int isxdigit(int ch); 41 /* Classification of Characters */ 42 extern int posix_isxdigit(int ch); 43 44 #ifndef POSIX_INTERNAL 45 #define isxdigit posix_isxdigit 46 #endif 35 47 36 48 #endif /* POSIX_CTYPE_H_ */ 37 49 50 /** @} 51 */ -
uspace/lib/posix/signal.h
rab547063 r4f4b4e7 27 27 */ 28 28 29 /** @addtogroup libposix 30 * @{ 31 */ 32 /** @file 33 */ 34 29 35 #ifndef POSIX_SIGNAL_H_ 30 36 #define POSIX_SIGNAL_H_ 31 37 32 #include <errno.h>38 #include "libc/errno.h" 33 39 34 40 /* HelenOS doesn't have signals, so calls to functions of this header … … 41 47 */ 42 48 49 #undef SIG_DFL 43 50 #define SIG_DFL ((void (*)(int)) 0) 51 #undef SIG_ERR 44 52 #define SIG_ERR ((void (*)(int)) 0) 53 #undef SIG_IGN 45 54 #define SIG_IGN ((void (*)(int)) 0) 46 55 47 56 #define signal(sig,func) (errno = ENOTSUP, SIG_ERR) 48 #define raise(sig) ((int) -1)57 #define raise(sig) ((int) -1) 49 58 50 typedef int sig_atomic_t;59 typedef int posix_sig_atomic_t; 51 60 52 61 /* full POSIX set */ … … 82 91 }; 83 92 93 #ifndef POSIX_INTERNAL 94 #define sig_atomic_t posix_sig_atomic_t 95 #endif 96 84 97 #endif /* POSIX_SIGNAL_H_ */ 85 98 99 /** @} 100 */ -
uspace/lib/posix/stdio.c
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 36 37 37 38 #include <assert.h> 38 #include "errno.h" 39 #include <errno.h> 40 39 41 #include "common.h" 40 42 #include "stdio.h" 41 43 #include "string.h" 44 42 45 /* not the best of solutions, but freopen will eventually 43 need to be implemented in libc anyway */ 46 * need to be implemented in libc anyway 47 */ 44 48 #include "../c/generic/private/stdio.h" 45 49 46 FILE *posix_freopen(const char *restrict filename, 47 const char *restrict mode, 48 FILE *restrict stream) 50 /** 51 * 52 * @param filename 53 * @param mode 54 * @param stream 55 * @return 56 */ 57 FILE *posix_freopen( 58 const char *restrict filename, 59 const char *restrict mode, 60 FILE *restrict stream) 49 61 { 50 62 assert(mode != NULL); … … 55 67 56 68 /* print error to stderr as well, to avoid hard to find problems 57 with buggy apps that expect this to work */ 58 fprintf(stderr, "ERROR: Application wants to use freopen() to change mode of opened stream.\n" 59 " libposix does not support that yet, the application may function improperly.\n"); 69 * with buggy apps that expect this to work 70 */ 71 fprintf(stderr, 72 "ERROR: Application wants to use freopen() to change mode of opened stream.\n" 73 " libposix does not support that yet, the application may function improperly.\n"); 60 74 errno = ENOTSUP; 61 75 return NULL; … … 68 82 } 69 83 memcpy(copy, stream, sizeof(FILE)); 70 fclose(copy); 84 fclose(copy); /* copy is now freed */ 71 85 72 copy = fopen(filename, mode); 86 copy = fopen(filename, mode); /* open new stream */ 73 87 if (copy == NULL) { 74 88 /* fopen() sets errno */ … … 87 101 } 88 102 103 /** 104 * 105 * @param s 106 */ 89 107 void posix_perror(const char *s) 90 108 { … … 95 113 /** @} 96 114 */ 97 -
uspace/lib/posix/stdio.h
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 27 28 */ 28 29 30 /** @addtogroup libposix 31 * @{ 32 */ 33 /** @file 34 */ 35 29 36 #ifndef POSIX_STDIO_H_ 30 37 #define POSIX_STDIO_H_ … … 32 39 #include "libc/stdio.h" 33 40 41 /* Character Input/Output */ 34 42 #define putc fputc 35 43 #define getc fgetc 36 44 45 /* Opening Streams */ 46 extern FILE *posix_freopen( 47 const char *restrict filename, 48 const char *restrict mode, 49 FILE *restrict stream); 37 50 38 extern FILE *posix_freopen(const char *restrict filename, 39 const char *restrict mode, 40 FILE *restrict stream); 41 51 /* Error Messages */ 42 52 extern void posix_perror(const char *s); 43 53 44 54 #ifndef POSIX_INTERNAL 45 55 #define freopen posix_freopen 56 46 57 #define perror posix_perror 47 58 #endif … … 49 60 #endif /* POSIX_STDIO_H_ */ 50 61 62 /** @} 63 */ -
uspace/lib/posix/stdlib.c
rab547063 r4f4b4e7 46 46 * @param compare 47 47 */ 48 void posix_qsort(void *array, size_t count, size_t size, int (*compare)(const void *, const void *)) 48 void posix_qsort(void *array, size_t count, size_t size, 49 int (*compare)(const void *, const void *)) 49 50 { 50 51 // TODO -
uspace/lib/posix/stdlib.h
rab547063 r4f4b4e7 43 43 #endif 44 44 45 /* Process Termination */ 45 46 #undef EXIT_FAILURE 46 47 #define EXIT_FAILURE 1 47 48 #undef EXIT_SUCCESS 48 49 #define EXIT_SUCCESS 0 49 50 #define _exit exit51 50 #define _Exit exit 52 51 53 52 /* Array Sort Function */ 54 extern void posix_qsort(void *array, size_t count, size_t size, int (*compare)(const void *, const void *)); 53 extern void posix_qsort(void *array, size_t count, size_t size, 54 int (*compare)(const void *, const void *)); 55 55 56 56 /* Environment Access */ … … 60 60 extern char *posix_realpath(const char *restrict name, char *restrict resolved); 61 61 62 /* decimal to native floating point conversion */62 /* Floating Point Conversion */ 63 63 extern float posix_strtof(const char *restrict nptr, char **restrict endptr); 64 64 extern double posix_strtod(const char *restrict nptr, char **restrict endptr); 65 65 extern long double posix_strtold(const char *restrict nptr, char **restrict endptr); 66 66 67 /* decimal to native integer conversion */67 /* Integer Conversion */ 68 68 extern int posix_atoi(const char *str); 69 69 -
uspace/lib/posix/string.c
rab547063 r4f4b4e7 43 43 #include <errno.h> 44 44 45 /* Defined for convenience. Returns pointer to the terminating nul character. 45 /** 46 * Defined for convenience. Returns pointer to the terminating nul character. 47 * 48 * @param s 49 * @return 46 50 */ 47 51 static char *strzero(const char *s) 48 52 { 49 while (*s != '\0') 50 s ++; 51 52 return (char*) s; 53 } 54 55 /* Returns true if s2 is a prefix of s1. 53 while (*s != '\0') { 54 s++; 55 } 56 57 return (char *) s; 58 } 59 60 /** 61 * Returns true if s2 is a prefix of s1. 62 * 63 * @param s1 64 * @param s2 65 * @return 56 66 */ 57 67 static bool begins_with(const char *s1, const char *s2) 58 68 { 59 69 while (*s1 == *s2 && *s2 != '\0') { 60 s1 61 s2 70 s1++; 71 s2++; 62 72 } 63 73 … … 66 76 } 67 77 68 /* The same as strpbrk, except it returns pointer to the nul terminator 78 /** 79 * The same as strpbrk, except it returns pointer to the nul terminator 69 80 * if no occurence is found. 81 * 82 * @param s1 83 * @param s2 84 * @return 70 85 */ 71 86 static char *strpbrk_null(const char *s1, const char *s2) 72 87 { 73 88 while (!posix_strchr(s2, *s1)) { 74 ++ 89 ++s1; 75 90 } 76 91 … … 82 97 * @param dest 83 98 * @param src 84 * @return dest99 * @return 85 100 */ 86 101 char *posix_strcpy(char *dest, const char *src) … … 95 110 * @param src 96 111 * @param n 97 * @return dest112 * @return 98 113 */ 99 114 char *posix_strncpy(char *dest, const char *src, size_t n) … … 114 129 assert(src != NULL); 115 130 116 for (size_t i = 0; ; ++ 131 for (size_t i = 0; ; ++i) { 117 132 dest[i] = src[i]; 118 133 … … 139 154 assert(src != NULL); 140 155 141 for (size_t i = 0; i < n; ++ 156 for (size_t i = 0; i < n; ++i) { 142 157 dest[i] = src[i]; 143 158 … … 147 162 if (src[i] == '\0') { 148 163 char *result = &dest[i]; 149 for (++ i; i < n; ++i) {164 for (++i; i < n; ++i) { 150 165 dest[i] = '\0'; 151 166 } … … 161 176 * @param dest 162 177 * @param src 163 * @return dest178 * @return 164 179 */ 165 180 char *posix_strcat(char *dest, const char *src) … … 177 192 * @param src 178 193 * @param n 179 * @return dest194 * @return 180 195 */ 181 196 char *posix_strncat(char *dest, const char *src, size_t n) … … 198 213 * @return Pointer to the first byte after c in dest if found, NULL otherwise. 199 214 */ 200 void *posix_memccpy(void * restrict dest, const void *restrictsrc, int c, size_t n)215 void *posix_memccpy(void *dest, const void *src, int c, size_t n) 201 216 { 202 217 assert(dest != NULL); … … 206 221 const unsigned char* bsrc = src; 207 222 208 for (size_t i = 0; i < n; ++ 223 for (size_t i = 0; i < n; ++i) { 209 224 bdest[i] = bsrc[i]; 210 225 … … 257 272 * @param n 258 273 * @return Difference of the first pair of inequal bytes, 259 * 274 * or 0 if areas have the same content 260 275 */ 261 276 int posix_memcmp(const void *mem1, const void *mem2, size_t n) … … 267 282 const unsigned char *s2 = mem2; 268 283 269 for (size_t i = 0; i < n; ++ 284 for (size_t i = 0; i < n; ++i) { 270 285 if (s1[i] != s2[i]) { 271 286 return s2[i] - s1[i]; … … 302 317 assert(s2 != NULL); 303 318 304 for (size_t i = 0; i < n; ++ 319 for (size_t i = 0; i < n; ++i) { 305 320 if (s1[i] != s2[i]) { 306 321 return s2[i] - s1[i]; … … 327 342 const unsigned char *s = mem; 328 343 329 for (size_t i = 0; i < n; ++ 344 for (size_t i = 0; i < n; ++i) { 330 345 if (s[i] == (unsigned char) c) { 331 346 return (void *) &s[i]; … … 346 361 347 362 /* special handling for the case that zero is searched for */ 348 if (c == '\0') 363 if (c == '\0') { 349 364 return strzero(s); 365 } 350 366 351 367 /* otherwise just loop through the string until found */ 352 368 while (*s != (char) c) { 353 if (*s == '\0') 369 if (*s == '\0') { 354 370 return NULL; 355 356 s ++; 371 } 372 373 s++; 357 374 } 358 375 … … 374 391 /* the same as in strchr, except it loops in reverse direction */ 375 392 while (*ptr != (char) c) { 376 if (ptr == s) 393 if (ptr == s) { 377 394 return NULL; 378 379 ptr ++; 395 } 396 397 ptr++; 380 398 } 381 399 … … 425 443 426 444 const char *ptr; 427 for (ptr = s1; *ptr != '\0'; ++ 428 if (!posix_strchr(s2, *ptr)) 445 for (ptr = s1; *ptr != '\0'; ++ptr) { 446 if (!posix_strchr(s2, *ptr)) { 429 447 break; 448 } 430 449 } 431 450 return ptr - s1; … … 444 463 445 464 /* special case - needle is an empty string */ 446 if (*s2 == '\0') 465 if (*s2 == '\0') { 447 466 return (char *) s1; 467 } 448 468 449 469 // TODO: use faster algorithm 450 470 /* check for prefix from every position - quadratic complexity */ 451 471 while (*s1 != '\0') { 452 if (begins_with(s1, s2)) 472 if (begins_with(s1, s2)) { 453 473 return (char *) s1; 474 } 454 475 455 s1 476 s1++; 456 477 } 457 478 … … 489 510 size_t len = posix_strlen(s2); 490 511 491 if (n > len) 512 if (n > len) { 492 513 posix_strcpy(s1, s2); 514 } 493 515 494 516 return len; … … 503 525 { 504 526 /* uses function from libc, we just have to negate errno 505 (POSIX uses positive errorcodes, HelenOS has negative) */ 506 return (char *) str_error (-errnum); 527 * (POSIX uses positive errorcodes, HelenOS has negative) 528 */ 529 return (char *) str_error(-errnum); 507 530 } 508 531 … … 510 533 * 511 534 * @param errnum Error code 512 * @param buf 513 * @param bufsz 535 * @param buf Buffer to store a human readable string to 536 * @param bufsz Size of buffer pointed to by buf 514 537 * @return 515 538 */ … … 552 575 assert(s != NULL); 553 576 554 for (size_t sz = 0; sz < n; ++ 577 for (size_t sz = 0; sz < n; ++sz) { 555 578 556 579 if (s[sz] == '\0') { -
uspace/lib/posix/string.h
rab547063 r4f4b4e7 130 130 #define strerror posix_strerror 131 131 #define strerror_r posix_strerror_r 132 #define strsignal(i) ((char *) "SIGNonSense: There are no signals in HelenOS.")132 #define strsignal(i) ((char *) "SIGNonSense: There are no signals in HelenOS.") 133 133 134 134 #define strlen posix_strlen -
uspace/lib/posix/strings.c
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 39 40 #include "string.h" 40 41 42 /** 43 * 44 * @param i 45 * @return 46 */ 41 47 int posix_ffs(int i) 42 48 { … … 45 51 } 46 52 53 /** 54 * 55 * @param s1 56 * @param s2 57 * @return 58 */ 47 59 int posix_strcasecmp(const char *s1, const char *s2) 48 60 { … … 51 63 } 52 64 65 /** 66 * 67 * @param s1 68 * @param s2 69 * @param n 70 * @return 71 */ 53 72 int posix_strncasecmp(const char *s1, const char *s2, size_t n) 54 73 { … … 57 76 } 58 77 78 /** 79 * 80 * @param mem1 81 * @param mem2 82 * @param n 83 * @return 84 */ 59 85 int posix_bcmp(const void *mem1, const void *mem2, size_t n) 60 86 { … … 63 89 } 64 90 91 /** 92 * 93 * @param dest 94 * @param src 95 * @param n 96 */ 65 97 void posix_bcopy(const void *dest, void *src, size_t n) 66 98 { … … 69 101 } 70 102 103 /** 104 * 105 * @param mem 106 * @param n 107 */ 71 108 void posix_bzero(void *mem, size_t n) 72 109 { … … 75 112 } 76 113 114 /** 115 * 116 * @param s 117 * @param c 118 * @return 119 */ 77 120 char *posix_index(const char *s, int c) 78 121 { … … 80 123 } 81 124 125 /** 126 * 127 * @param s 128 * @param c 129 * @return 130 */ 82 131 char *posix_rindex(const char *s, int c) 83 132 { … … 87 136 /** @} 88 137 */ 89 -
uspace/lib/posix/strings.h
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 36 37 #define POSIX_STRINGS_H_ 37 38 38 extern int posix_ffs(int); 39 /* Search Functions */ 40 extern int posix_ffs(int i); 39 41 40 extern int posix_strcasecmp(const char *, const char *); 41 extern int posix_strncasecmp(const char *, const char *, size_t); 42 /* String/Array Comparison */ 43 extern int posix_strcasecmp(const char *s1, const char *s2); 44 extern int posix_strncasecmp(const char *s1, const char *s2, size_t n); 42 45 43 46 /* TODO: not implemented due to missing locale.h … … 47 50 */ 48 51 49 50 52 /* Legacy Functions */ 51 52 extern int posix_bcmp(const void *, const void *, size_t); 53 extern void posix_bcopy(const void *, void *, size_t); 54 extern void posix_bzero(void *, size_t); 55 extern char *posix_index(const char *, int); 56 extern char *posix_rindex(const char *, int); 53 extern int posix_bcmp(const void *mem1, const void *mem2, size_t n); 54 extern void posix_bcopy(const void *dest, void *src, size_t n); 55 extern void posix_bzero(void *mem, size_t n); 56 extern char *posix_index(const char *s, int c); 57 extern char *posix_rindex(const char *s, int c); 57 58 58 59 #ifndef LIBPOSIX_INTERNAL 59 60 #define ffs posix_ffs 61 60 62 #define strcasecmp posix_strcasecmp 61 63 #define strncasecmp posix_strncasecmp 62 64 63 65 #define bcmp posix_bcmp 64 66 #define bcopy posix_bcopy -
uspace/lib/posix/sys/stat.c
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 27 28 */ 28 29 30 /** @addtogroup libposix 31 * @{ 32 */ 33 /** @file 34 */ 35 29 36 #define LIBPOSIX_INTERNAL 30 37 … … 32 39 #include <mem.h> 33 40 34 /* Convert HelenOS stat struct into POSIX stat struct (if possible) 41 /** 42 * Convert HelenOS stat struct into POSIX stat struct (if possible) 43 * 44 * @param dest 45 * @param src 35 46 */ 36 static void stat_to_posix 47 static void stat_to_posix(struct posix_stat *dest, struct stat *src) 37 48 { 38 49 memset(dest, 0, sizeof(struct posix_stat)); … … 42 53 /* HelenOS doesn't support permissions, so we set them all */ 43 54 dest->st_mode = S_IRWXU | S_IRWXG | S_IRWXO; 44 if (src->is_file) 55 if (src->is_file) { 45 56 dest->st_mode |= S_IFREG; 46 if (src->is_directory) 57 } 58 if (src->is_directory) { 47 59 dest->st_mode |= S_IFDIR; 60 } 48 61 49 62 dest->st_nlink = src->lnkcnt; … … 51 64 } 52 65 66 /** 67 * 68 * @param fd 69 * @param st 70 * @return 71 */ 53 72 int posix_fstat(int fd, struct posix_stat *st) 54 73 { … … 62 81 } 63 82 83 /** 84 * 85 * @param path 86 * @param st 87 * @return 88 */ 64 89 int posix_stat(const char *path, struct posix_stat *st) 65 90 { … … 73 98 } 74 99 100 /** @} 101 */ -
uspace/lib/posix/sys/stat.h
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 27 28 */ 28 29 30 /** @addtogroup libposix 31 * @{ 32 */ 33 /** @file 34 */ 35 29 36 #ifndef POSIX_SYS_STAT_H_ 30 37 #define POSIX_SYS_STAT_H_ … … 34 41 35 42 /* values are the same as on Linux */ 43 44 #undef S_IFMT 45 #undef S_IFSOCK 46 #undef S_IFLNK 47 #undef S_IFREG 48 #undef S_IFBLK 49 #undef S_IFDIR 50 #undef S_IFCHR 51 #undef S_IFIFO 36 52 #define S_IFMT 0170000 /* all file types */ 37 53 #define S_IFSOCK 0140000 /* socket */ … … 43 59 #define S_IFIFO 0010000 /* FIFO */ 44 60 61 #undef S_ISUID 62 #undef S_ISGID 63 #undef S_ISVTX 45 64 #define S_ISUID 0004000 /* SUID */ 46 65 #define S_ISGID 0002000 /* SGID */ 47 66 #define S_ISVTX 0001000 /* sticky */ 48 67 68 #undef S_IRWXU 69 #undef S_IRUSR 70 #undef S_IWUSR 71 #undef S_IXUSR 49 72 #define S_IRWXU 00700 /* owner permissions */ 50 73 #define S_IRUSR 00400 … … 52 75 #define S_IXUSR 00100 53 76 77 #undef S_IRWXG 78 #undef S_IRGRP 79 #undef S_IWGRP 80 #undef S_IXGRP 54 81 #define S_IRWXG 00070 /* group permissions */ 55 82 #define S_IRGRP 00040 … … 57 84 #define S_IXGRP 00010 58 85 86 #undef S_IRWXO 87 #undef S_IROTH 88 #undef S_IWOTH 89 #undef S_IXOTH 59 90 #define S_IRWXO 00007 /* other permissions */ 60 91 #define S_IROTH 00004 … … 62 93 #define S_IXOTH 00001 63 94 95 #undef S_ISREG 96 #undef S_ISDIR 97 #undef S_ISCHR 98 #undef S_ISBLK 99 #undef S_ISFIFO 100 #undef S_ISLNK 101 #undef S_ISSOCK 64 102 #define S_ISREG(m) ((m & S_IFREG) != 0) 65 103 #define S_ISDIR(m) ((m & S_IFDIR) != 0) … … 67 105 #define S_ISBLK(m) ((m & S_IFBLK) != 0) 68 106 #define S_ISFIFO(m) ((m & S_IFIFO) != 0) 69 #define S_ISLNK(m) ((m & S_IFLNK) != 0) 107 #define S_ISLNK(m) ((m & S_IFLNK) != 0) /* symbolic link? (Not in POSIX.1-1996.) */ 70 108 #define S_ISSOCK(m) ((m & S_IFSOCK) != 0) /* socket? (Not in POSIX.1-1996.) */ 71 109 72 typedef devmap_handle_t dev_t;73 typedef unsigned int ino_t;74 typedef unsigned int nlink_t;75 typedef unsigned int uid_t;76 typedef unsigned int gid_t;77 typedef aoff64_t off_t;78 typedef unsigned int blksize_t;79 typedef unsigned int blkcnt_t;110 typedef devmap_handle_t posix_dev_t; 111 typedef unsigned int posix_ino_t; 112 typedef unsigned int posix_nlink_t; 113 typedef unsigned int posix_uid_t; 114 typedef unsigned int posix_gid_t; 115 typedef aoff64_t posix_off_t; 116 typedef unsigned int posix_blksize_t; 117 typedef unsigned int posix_blkcnt_t; 80 118 81 119 struct posix_stat { 82 120 struct stat sys_stat; 83 121 84 dev_t st_dev; /* ID of device containing file */85 ino_t st_ino; /* inode number */86 mode_t st_mode; /* protection */87 nlink_t st_nlink; /* number of hard links */88 uid_t st_uid; /* user ID of owner */89 gid_t st_gid; /* group ID of owner */90 dev_t st_rdev; /* device ID (if special file) */91 off_t st_size; /* total size, in bytes */92 blksize_t st_blksize; /* blocksize for file system I/O */93 blkcnt_t st_blocks; /* number of 512B blocks allocated */94 time_t st_atime; /* time of last access */95 time_t st_mtime; /* time of last modification */96 time_t st_ctime; /* time of last status change */122 posix_dev_t st_dev; /* ID of device containing file */ 123 posix_ino_t st_ino; /* inode number */ 124 mode_t st_mode; /* protection */ 125 posix_nlink_t st_nlink; /* number of hard links */ 126 posix_uid_t st_uid; /* user ID of owner */ 127 posix_gid_t st_gid; /* group ID of owner */ 128 posix_dev_t st_rdev; /* device ID (if special file) */ 129 posix_off_t st_size; /* total size, in bytes */ 130 posix_blksize_t st_blksize; /* blocksize for file system I/O */ 131 posix_blkcnt_t st_blocks; /* number of 512B blocks allocated */ 132 time_t st_atime; /* time of last access */ 133 time_t st_mtime; /* time of last modification */ 134 time_t st_ctime; /* time of last status change */ 97 135 }; 98 136 99 extern int posix_fstat(int , struct posix_stat *);100 extern int posix_stat(const char * , struct posix_stat *);137 extern int posix_fstat(int fd, struct posix_stat *st); 138 extern int posix_stat(const char *path, struct posix_stat *st); 101 139 102 140 #ifndef LIBPOSIX_INTERNAL 141 #define dev_t posix_dev_t 142 #define nlink_t posix_nlink_t 143 #define uid_t posix_uid_t 144 #define gid_t posix_gid_t 145 #define off_t posix_off_t 146 #define blksize_t posix_blksize_t 147 #define blkcnt_t posix_blkcnt_t 148 103 149 #define fstat posix_fstat 104 150 #define stat posix_stat … … 107 153 #endif /* POSIX_SYS_STAT_H */ 108 154 155 /** @} 156 */ -
uspace/lib/posix/sys/types.h
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 27 28 */ 28 29 30 /** @addtogroup libposix 31 * @{ 32 */ 33 /** @file 34 */ 35 29 36 #ifndef POSIX_SYS_TYPES_H_ 30 37 #define POSIX_SYS_TYPES_H_ … … 33 40 #include <task.h> 34 41 35 typedef task_id_t pid_t; 42 typedef task_id_t posix_pid_t; 43 44 #ifndef POSIX_INTERNAL 45 #define pid_t posix_pid_t 46 #endif 36 47 37 48 #endif /* POSIX_SYS_TYPES_H_ */ 38 49 50 /** @} 51 */ -
uspace/lib/posix/time.c
rab547063 r4f4b4e7 36 36 #define LIBPOSIX_INTERNAL 37 37 38 #include "common.h" 38 39 #include "time.h" 39 40 … … 83 84 { 84 85 // TODO 85 return 0;86 not_implemented(); 86 87 } 87 88 -
uspace/lib/posix/unistd.c
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 27 28 */ 28 29 30 /** @addtogroup libposix 31 * @{ 32 */ 33 /** @file 34 */ 35 36 #define POSIX_INTERNAL 37 38 #include "common.h" 29 39 #include "unistd.h" 30 40 31 int isatty(int fd) { 41 /** 42 * 43 * @param fd 44 * @return 45 */ 46 int posix_isatty(int fd) 47 { 32 48 // TODO 33 return 0;49 not_implemented(); 34 50 } 35 51 52 /** @} 53 */ -
uspace/lib/posix/unistd.h
rab547063 r4f4b4e7 1 1 /* 2 2 * Copyright (c) 2011 Jiri Zarevucky 3 * Copyright (c) 2011 Petr Koupy 3 4 * All rights reserved. 4 5 * … … 26 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 28 */ 28 29 30 /** @addtogroup libposix 31 * @{ 32 */ 33 /** @file 34 */ 35 29 36 #ifndef POSIX_UNISTD_H_ 30 37 #define POSIX_UNISTD_H_ … … 32 39 #include "libc/unistd.h" 33 40 34 /* #include <getopt.h> */ 41 /* Process Termination */ 42 #define _exit exit 35 43 44 /* Option Arguments */ 36 45 extern char *optarg; 37 46 extern int optind, opterr, optopt; 38 47 extern int getopt(int, char * const [], const char *); 39 48 40 extern int isatty(int fd); 49 /* Identifying Terminals */ 50 extern int posix_isatty(int fd); 41 51 52 /* Process Identification */ 42 53 #define getpid task_get_id 43 54 55 /* Standard Streams */ 56 #undef STDIN_FILENO 44 57 #define STDIN_FILENO (fileno(stdin)) 58 #undef STDOUT_FILENO 45 59 #define STDOUT_FILENO (fileno(stdout)) 60 #undef STDERR_FILENO 46 61 #define STDERR_FILENO (fileno(stderr)) 62 63 #ifndef POSIX_INTERNAL 64 #define isatty posix_isatty 65 #endif 47 66 48 67 #endif /* POSIX_UNISTD_H_ */ 49 68 69 /** @} 70 */
Note:
See TracChangeset
for help on using the changeset viewer.