- if (tostdout == 1) {
- /* And get to work */
- strcpy(ofname, "stdout");
- outFileNum = fileno(stdout);
+ if (strcmp(argv[i], "-") == 0) {
+ time_stamp = 0;
+ ifile_size = -1L;
+ inFileNum = STDIN_FILENO;
+ outFileNum = STDOUT_FILENO;
+ } else {
+ inFileNum = open(argv[i], O_RDONLY);
+ if (inFileNum < 0 || fstat (inFileNum, &statBuf) < 0)
+ perror_msg_and_die("%s", argv[i]);
+ time_stamp = statBuf.st_ctime;
+ ifile_size = statBuf.st_size;
+
+ if (!tostdout) {
+ path = xmalloc(strlen(argv[i]) + 4);
+ strcpy(path, argv[i]);
+ strcat(path, ".gz");
+
+ /* Open output file */
+#if (__GLIBC__ >= 2) && (__GLIBC_MINOR__ >= 1)
+ outFileNum = open(path, O_RDWR | O_CREAT | O_EXCL | O_NOFOLLOW);
+#else
+ outFileNum = open(path, O_RDWR | O_CREAT | O_EXCL);
+#endif
+ if (outFileNum < 0) {
+ perror_msg("%s", path);
+ free(path);
+ continue;
+ }
+
+ /* Set permissions on the file */
+ fchmod(outFileNum, statBuf.st_mode);
+ } else
+ outFileNum = STDOUT_FILENO;
+ }