* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <config.h>
+
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
+#include "../src/compiler.h"
+
-int main(int argc, char **argv) {
+int main(int argc, char **argv unused) {
fprintf(stderr, "write to stderr: %d\n", argc);
printf("write to stdout\n");
fflush(stdout);
+ errno = 0;
+ perror("error!");
+
write(STDERR_FILENO, "write to stderr 2", 17);
write(STDOUT_FILENO, "write to stdout 2", 17);
fprintf(stderr, "\n");
fprintf(stdout, "\n");
+ fflush(stdout);
+
+ /* Check usage of tracked_fds_list (at least in parts). No error checking
+ * here! */
+ dup2(STDERR_FILENO, 471);
+ dup2(471, 42);
+ write(471, "more on stderr\n", 15);
+ close(471);
+ dup2(STDOUT_FILENO, 471);
+ write(42, "stderr ...\n", 11);
+ write(471, "more on stdout\n", 15);
+
+ /* Glibc uses __overflow() for this ... */
+ putc_unlocked('x', stderr);
+ putc_unlocked('\n', stdout);
+
+ /* Test invalid stuff. */
+ close(-42);
+ close(-4711);
+ /* Can't test this, results in a segfault with the "normal" fclose(). */
+ /*fclose(NULL);*/
+ dup(-12);
+ dup2(12, -42);
return EXIT_SUCCESS;
}