--- trunk/mkinitrd-magellan/busybox/libbb/wfopen.c 2010/04/29 20:38:48 983 +++ trunk/mkinitrd-magellan/busybox/libbb/wfopen.c 2010/05/30 11:32:42 984 @@ -14,7 +14,7 @@ FILE *fp = fopen(path, mode); if (!fp) { bb_simple_perror_msg(path); - errno = 0; + //errno = 0; /* why? */ } return fp; } @@ -38,3 +38,19 @@ { return xfopen(path, "w"); } + +static FILE* xfdopen_helper(unsigned fd_and_rw_bit) +{ + FILE* fp = fdopen(fd_and_rw_bit >> 1, fd_and_rw_bit & 1 ? "w" : "r"); + if (!fp) + bb_error_msg_and_die(bb_msg_memory_exhausted); + return fp; +} +FILE* FAST_FUNC xfdopen_for_read(int fd) +{ + return xfdopen_helper(fd << 1); +} +FILE* FAST_FUNC xfdopen_for_write(int fd) +{ + return xfdopen_helper((fd << 1) + 1); +}