This commit is contained in:
Jeremy Soller
2019-02-21 19:43:07 -07:00
111 changed files with 269 additions and 311 deletions
+8 -8
View File
@@ -88,14 +88,14 @@ just in case, it'd be a good idea to map inputs to variables.
#include "string.h"
#include "stdio.h"
int main() {
// Don't do this
printf("%d\n", strcspn("Hello", "Hi"));
int main(void) {
// Don't do this
printf("%d\n", strcspn("Hello", "Hi"));
// Do this
char *first = "Hello";
char *second = "Hi";
printf("%d\n", strcspn(first, second));
// Do this
char *first = "Hello";
char *second = "Hi";
printf("%d\n", strcspn(first, second));
}
```
@@ -120,4 +120,4 @@ You can test against verified correct output with `make verify` in the tests
directory. You will need to manually create the correct output and put it in the
tests/expected directory. Running any `make` commands in the tests directory
will ***not*** rebuild relibc, so you'll need to go back to the root directory
if you need to rebuild relibc.
if you need to rebuild relibc.
+7
View File
@@ -0,0 +1,7 @@
#ifndef _BITS_CTYPE_H
#define _BITS_CTYPE_H
#define _tolower(c) tolower(c)
#define _toupper(c) toupper(c)
#endif /* _BITS_CTYPE_H */
+3 -3
View File
@@ -14,10 +14,10 @@
(t)->tv_sec = 0, \
(t)->tv_usec = 0 \
)
#define timerisset(t) (t)->tv_sec || (t)->tv_usec
#define timercmp(x,y,op) (x)->tv_sec == (y)->tv_sec ? \
#define timerisset(t) ((t)->tv_sec || (t)->tv_usec)
#define timercmp(x,y,op) ((x)->tv_sec == (y)->tv_sec ? \
(x)->tv_usec op (y)->tv_usec \
: \
(x)->tv_sec op (y)->tv_sec
(x)->tv_sec op (y)->tv_sec)
#endif
+1 -1
View File
@@ -1,4 +1,4 @@
sys_includes = []
sys_includes = ["bits/ctype.h"]
include_guard = "_CTYPE_H"
language = "C"
style = "Tag"
+4
View File
@@ -6,3 +6,7 @@ style = "Tag"
[enum]
prefix_with_name = true
[defines]
"target_os = linux" = "__linux__"
"target_os = redox" = "__redox__"
+2
View File
@@ -150,10 +150,12 @@ verify: | ../sysroot $(EXPECT_BINS)
done
CFLAGS=\
-std=c11 \
-fno-builtin \
-fno-stack-protector \
-static \
-Wall \
-pedantic \
-g \
-nostdinc \
-nostdlib \
+1 -1
View File
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <string.h>
int main(int argc, char ** argv) {
int main(void) {
char *str = (char *) alloca(17);
memset(str, 'A', 16);
+1 -2
View File
@@ -1,12 +1,11 @@
#include <string.h>
#include <unistd.h>
int main(int argc, char ** argv) {
int main(int argc, char *argv[]) {
int i;
for(i = 0; i < argc; i++) {
write(STDOUT_FILENO, argv[i], strlen(argv[i]));
write(STDOUT_FILENO, " ", 1);
}
write(STDOUT_FILENO, "\n", 1);
return 0;
}
+1 -1
View File
@@ -3,7 +3,7 @@
#include <string.h>
#include <stdlib.h>
int main(int argc, char** argv) {
int main(void) {
uint32_t hl = 0xBADFACED;
uint32_t nl = htonl(hl);
assert(nl == 0xEDACDFBA);
+1 -1
View File
@@ -2,7 +2,7 @@
#include <stdlib.h>
#include <stdio.h>
int main() {
int main(void) {
assert(1 == 1);
assert(1 + 1 == 2);
puts("yay!");
+5 -5
View File
@@ -11,11 +11,11 @@ void constructor_no_priority(void) {
puts("constructor ("#__priority")"); \
}
TEST(101);
TEST(102);
TEST(103);
TEST(104);
TEST(101)
TEST(102)
TEST(103)
TEST(104)
int main(int argc, char *argv[]) {
int main(void) {
puts("main");
}
+5 -4
View File
@@ -1,5 +1,6 @@
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
struct test_case {
int c;
@@ -289,12 +290,12 @@ size_t num_test_cases = sizeof(test_cases) / sizeof(struct test_case);
#define CHECK_TEST(tc, fn, retval) \
if (fn(tc.c) != tc.fn) { \
retval = -1; \
retval = EXIT_FAILURE; \
printf("Unexpected result: " #fn "('%c') != %d // Char value: %d\n", tc.c, tc.fn, tc.c); \
}
int main(int argc, char* argv[]) {
int retval = 0;
int main(void) {
int retval = EXIT_SUCCESS;
for(int i = 0; i < num_test_cases; ++i) {
struct test_case tc = test_cases[i];
@@ -316,7 +317,7 @@ int main(int argc, char* argv[]) {
CHECK_TEST(tc, toupper, retval);
}
if (!retval) {
if (retval == EXIT_SUCCESS) {
printf("Success: %d\n", retval);
} else {
printf("Failure: %d\n", retval);
+5 -5
View File
@@ -11,11 +11,11 @@ void destructor_no_priority(void) {
puts("destructor ("#__priority")"); \
}
TEST(101);
TEST(102);
TEST(103);
TEST(104);
TEST(101)
TEST(102)
TEST(103)
TEST(104)
int main(int argc, char *argv[]) {
int main(void) {
puts("main");
}
+3 -4
View File
@@ -1,15 +1,16 @@
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
int main(void) {
printf("%lu\n", sizeof(struct dirent));
DIR* dir = opendir("example_dir/");
if (dir == NULL) {
perror("opendir");
return 1;
return EXIT_FAILURE;
}
struct dirent* entry;
@@ -37,6 +38,4 @@ int main() {
// puts(entry->d_name);
closedir(dir);
return 0;
}
+2 -2
View File
@@ -7,12 +7,12 @@ int filter(const struct dirent* dirent) {
return strstr(dirent->d_name, "3") == NULL;
}
int main() {
int main(void) {
struct dirent** array;
int len = scandir("example_dir/", &array, filter, alphasort);
if (len < 0) {
perror("scandir");
return -1;
return EXIT_FAILURE;
}
for(int i = 0; i < len; i += 1) {
+1 -2
View File
@@ -3,9 +3,8 @@
#include <string.h>
#include <errno.h>
int main(int argc, char** argv) {
int main(void) {
chdir("nonexistent");
printf("errno: %d = %s\n", errno, strerror(errno));
perror("perror");
return 0;
}
-3
View File
@@ -1,3 +0,0 @@
clock_gettime: Success
time: Success
clock: Success
+4 -3
View File
@@ -1,14 +1,15 @@
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char ** argv) {
int main(void) {
int fd = creat("create.out", 0755);
if (fd >= 0) {
write(fd, "Hello World!\n", 13);
close(fd);
return 0;
return EXIT_SUCCESS;
} else {
write(STDERR_FILENO, "creat failed\n", 13);
return 1;
return EXIT_FAILURE;
}
}
+1 -2
View File
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <unistd.h>
int main() {
int main(void) {
//Lose our fd and pull it again
creat("fcntl.out", 0777);
int newfd = open("fcntl.out", 0);
@@ -10,5 +10,4 @@ int main() {
printf("fd %d duped into fd %d\n", newfd, newfd2);
close(newfd);
close(newfd2);
return 0;
}
+1 -1
View File
@@ -9,7 +9,7 @@ void test(char* pattern, char* input, int flags) {
}
}
int main() {
int main(void) {
puts("Should succeed:");
test("*World", "Hello World", 0);
test("*World", "World", 0);
+3 -4
View File
@@ -18,7 +18,7 @@ char * get_mutable_string(char *str) {
return copy;
}
void test_basename() {
void test_basename(void) {
test_case test_cases[] =
{ {"/usr/lib", "lib"},
{"//usr//lib//", "lib"},
@@ -44,7 +44,7 @@ void test_basename() {
return;
}
void test_dirname() {
void test_dirname(void) {
test_case test_cases[] =
{ {"/usr/lib", "/usr"},
{"//usr//lib//", "//usr"},
@@ -73,9 +73,8 @@ void test_dirname() {
return;
}
int main() {
int main(void) {
printf("Testing libgen.h\n");
test_basename();
test_dirname();
return 0;
}
+1 -1
View File
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <string.h>
int main() {
int main(void) {
// TODO: Implement locale properly and test it here
char* val = setlocale(LC_ALL, NULL);
if (strcmp(val, "C") == 0) {
+1 -2
View File
@@ -1,9 +1,8 @@
#include <math.h>
#include <stdio.h>
int main(int argc, char ** argv) {
int main(void) {
double pi = 3.14;
float c = cos(pi);
printf("cos(%f) = %f\n", pi, c);
return 0;
}
+1 -3
View File
@@ -22,7 +22,7 @@ int main(void) {
errcode = getaddrinfo("www.redox-os.org", NULL, &hints, &res);
if (errcode != 0) {
perror("getaddrinfo");
return -1;
return EXIT_FAILURE;
}
while (res) {
@@ -45,6 +45,4 @@ int main(void) {
res = res->ai_next;
}
return 0;
}
+1 -1
View File
@@ -225,6 +225,6 @@ do_test (void)
return (error_count != 0);
}
int main() {
int main(void) {
do_test();
}
+9 -9
View File
@@ -13,13 +13,13 @@ void print(struct passwd *pwd) {
printf("pw_shell: %s\n", pwd->pw_shell);
}
int main() {
int main(void) {
puts("--- Checking getpwuid ---");
errno = 0;
struct passwd *pwd = getpwuid(0);
if (errno != 0) {
perror("getpwuid");
return 1;
return EXIT_FAILURE;
}
if (pwd != NULL) {
print(pwd);
@@ -30,7 +30,7 @@ int main() {
pwd = getpwnam("nobody");
if (errno != 0) {
perror("getpwnam");
return 1;
return EXIT_FAILURE;
}
if (pwd != NULL) {
print(pwd);
@@ -43,12 +43,12 @@ int main() {
if (getpwuid_r(0, &pwd2, buf, 100, &result) < 0) {
perror("getpwuid_r");
free(buf);
return 1;
return EXIT_FAILURE;
}
if (result != NULL) {
if (result != &pwd2) {
free(buf);
return 1;
return EXIT_FAILURE;
}
print(&pwd2);
}
@@ -57,12 +57,12 @@ int main() {
if (getpwnam_r("nobody", &pwd2, buf, 100, &result) < 0) {
perror("getpwuid_r");
free(buf);
return 1;
return EXIT_FAILURE;
}
if (result != NULL) {
if (result != &pwd2) {
free(buf);
return 1;
return EXIT_FAILURE;
}
print(&pwd2);
}
@@ -72,11 +72,11 @@ int main() {
char buf2[1];
if (getpwuid_r(0, &pwd2, buf2, 1, &result) == 0) {
puts("This shouldn't have succeeded, but did!");
return 1;
return EXIT_FAILURE;
}
if (errno != ERANGE) {
perror("getpwuid_r");
return 1;
return EXIT_FAILURE;
}
puts("Returned ERANGE because the buffer was too small 👍");
}
+5 -4
View File
@@ -1,7 +1,8 @@
#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
int main(void) {
regex_t regex;
char error_buf[256];
@@ -10,10 +11,10 @@ int main() {
regerror(error, &regex, error_buf, 255);
error_buf[255] = 0;
printf("regcomp error: %d = %s\n", error, error_buf);
return -1;
return EXIT_FAILURE;
}
regmatch_t matches[3] = { 0 };
regmatch_t matches[3] = {{0}};
error = regexec(&regex, "Hey, how are you? Hello? Hallo Wurld??", 3, matches, 0);
@@ -22,7 +23,7 @@ int main() {
if (error) {
regerror(error, &regex, error_buf, 255);
printf("regexec error: %d = %s\n", error, error_buf);
return -1;
return EXIT_FAILURE;
}
for (int group = 0; group < 3; group += 1) {
+2 -2
View File
@@ -6,11 +6,11 @@ void ptimeval(struct timeval* val) {
printf("{ tv_sec: %ld, tv_usec: %ld }\n", val->tv_sec, val->tv_usec);
}
int main() {
int main(void) {
struct rusage r_usage;
if (getrusage(RUSAGE_SELF, &r_usage) < 0) {
perror("getrusage");
return 1;
return EXIT_FAILURE;
}
printf("ru_utime:");
ptimeval(&r_usage.ru_utime);
+1 -1
View File
@@ -3,7 +3,7 @@
#include <sys/select.h>
#include <unistd.h>
int main() {
int main(void) {
int fd = open("select.c", 0, 0);
fd_set read;
+1 -1
View File
@@ -1,7 +1,7 @@
#include <stdio.h>
#include <setjmp.h>
int main() {
int main(void) {
jmp_buf buf;
if (setjmp(buf)) {
puts("hi from jump");
+4 -3
View File
@@ -1,5 +1,6 @@
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
@@ -7,18 +8,18 @@ void handler(int sig) {
puts("Signal handler called!");
}
int main() {
int main(void) {
if (signal(SIGUSR1, &handler) == SIG_ERR) {
puts("Signal error!");
printf("%d\n", errno);
return 1;
return EXIT_FAILURE;
}
puts("Raising...");
if (raise(SIGUSR1)) {
puts("Raise error!");
printf("%d\n", errno);
return 1;
return EXIT_FAILURE;
}
puts("Raised.");
}
+1 -2
View File
@@ -1,7 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv) {
int main(void) {
FILE *f = fopen("stdio/stdio.in", "r");
printf("%c\n", fgetc(f));
ungetc('H', f);
@@ -9,5 +9,4 @@ int main(int argc, char ** argv) {
printf("%s\n", fgets(in, 30, f));
setvbuf(stdout, 0, _IONBF, 0);
printf("Hello\n");
return 0;
}
+1 -1
View File
@@ -1,6 +1,6 @@
#include <stdio.h>
int main() {
int main(void) {
// Tests what used to be a bug with buffering
fwrite("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", 1, 999, stdout);
fwrite("Test\n", 1, 5, stdout);
+3 -2
View File
@@ -1,6 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
int main() {
int main(void) {
//FILE *f = fopen("/etc/ssl/certs/ca-certificates.crt", "r");
FILE *f = fopen("stdio/stdio.in", "r");
char line[256];
@@ -12,7 +13,7 @@ int main() {
puts("EOF");
if (!feof(f)) {
puts("feof() not updated!");
return -1;
return EXIT_FAILURE;
}
break;
}
+1 -3
View File
@@ -1,11 +1,9 @@
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
int main(int argc, char ** argv) {
int main(void) {
FILE *f = fopen("stdio/fputs.out", "w");
char *in = "Hello World!";
fputs(in, f); // calls fwrite, helpers::fwritex, internal::to_write and internal::stdio_write
fclose(f);
return 0;
}
+3 -4
View File
@@ -1,14 +1,15 @@
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int main(void) {
FILE *fp = fopen("stdio/fread.in", "rb");
char buf[33] = { 0 };
for (int i = 1; i <= 32; ++i) {
if (fread(buf, 1, i, fp) < 0) {
perror("fread");
return 0;
return EXIT_FAILURE;
}
buf[i] = 0;
@@ -16,6 +17,4 @@ int main(int argc, char *argv[]) {
}
fclose(fp);
return 0;
}
+1 -2
View File
@@ -1,9 +1,8 @@
#include <stdio.h>
int main(int argc, char ** argv) {
int main(void) {
freopen("stdio/stdio.in", "r", stdin);
char in[6];
fgets(in, 6, stdin);
printf("%s\n", in); // should print Hello
return 0;
}
+3 -2
View File
@@ -1,10 +1,11 @@
#include <stdio.h>
#include <stdlib.h>
int main() {
int main(void) {
FILE *f = fopen("stdio/stdio.in", "r");
if (fseek(f, 14, SEEK_CUR) < 0) {
puts("fseek error");
return 1;
return EXIT_FAILURE;
}
char buffer[256];
printf("%s", fgets(buffer, 256, f));
+4 -5
View File
@@ -2,23 +2,22 @@
#include <stdlib.h>
#include <errno.h>
int main(int argc, char ** argv) {
int main(void) {
FILE *f = fopen("stdio/fwrite.out", "w");
const char ptr[] = "Hello World!";
if (fwrite(ptr, 0, 17, f)) {
return -1;
return EXIT_FAILURE;
}
if (fwrite(ptr, 7, 0, f)) {
return -1;
return EXIT_FAILURE;
}
if (fwrite(ptr, 0, 0, f)) {
return -1;
return EXIT_FAILURE;
}
fwrite(ptr, sizeof(ptr), 1, f);
fclose(f);
return 0;
}
+4 -3
View File
@@ -1,12 +1,13 @@
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv) {
int main(void) {
ungetc('h', stdin);
char c;
if ((c = getchar()) == 'h') {
printf("Worked!\n");
return 0;
return EXIT_SUCCESS;
}
printf("failed :( %c\n", c);
return 0;
return EXIT_FAILURE;
}
+5 -4
View File
@@ -1,6 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
int main() {
int main(void) {
FILE* f = fopen("stdio/stdio.in", "r");
flockfile(f);
@@ -10,17 +11,17 @@ int main() {
if (!ftrylockfile(f)) {
puts("Mutex unlocked but it shouldn't be");
return -1;
return EXIT_FAILURE;
}
funlockfile(f);
if (ftrylockfile(f)) {
puts("Mutex locked but it shouldn't be");
return -1;
return EXIT_FAILURE;
}
if (!ftrylockfile(f)) {
puts("Mutex unlocked but it shouldn't be");
return -1;
return EXIT_FAILURE;
}
funlockfile(f);
}
+4 -5
View File
@@ -1,6 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char **argv) {
int main(void) {
FILE *fp;
int status;
char path[256];
@@ -9,7 +10,7 @@ int main(int argc, char **argv) {
fp = popen("ls -1 example_dir", "r");
if (fp == NULL) {
perror("popen");
return -1;
return EXIT_FAILURE;
}
while (fgets(path, 256, fp) != NULL) {
@@ -20,10 +21,8 @@ int main(int argc, char **argv) {
status = pclose(fp);
if (status == -1) {
perror("pclose");
return -1;
return EXIT_FAILURE;
} else {
printf("status %x\n", status);
}
return 0;
}
+1 -2
View File
@@ -1,6 +1,6 @@
#include <stdio.h>
int main(int argc, char ** argv) {
int main(void) {
int sofar = 0;
int len = printf(
"percent: %%\nstring: %s\nchar: %c\nchar: %c\nint: %d\n%nuint: %u\nhex: %x\nHEX: %X\nstring: %s\n",
@@ -48,5 +48,4 @@ int main(int argc, char ** argv) {
printf("%G\n", 0.0001);
printf("%G\n", 0.00001);
printf("%E\n", 0.00001);
return 0;
}
+4 -3
View File
@@ -1,5 +1,6 @@
#include <stdio.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
@@ -8,7 +9,7 @@ static char newpath[] = "new-name.out";
static char str[] = "Hello, World!";
int str_len = 13;
int main() {
int main(void) {
char buf[14];
buf[13] = 0x00;
int fd = creat(oldpath, 0777);
@@ -20,8 +21,8 @@ int main() {
close(fd);
remove(newpath);
if (strcmp(str, buf) == 0) {
return 0;
return EXIT_SUCCESS;
} else {
return -1;
return EXIT_FAILURE;
}
}
+1 -1
View File
@@ -25,7 +25,7 @@ void test(char* fmt_in, char* input, struct params *p, ...) {
);
}
int main(int argc, char ** argv) {
int main(void) {
struct params p = { .c = 'a' };
test("%hhd %d", "12 345", &p, &p.sa, &p.ia);
+1 -2
View File
@@ -1,7 +1,7 @@
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv) {
int main(void) {
setvbuf(stdout, 0, _IONBF, 0);
FILE *f = fopen("stdio/stdio.in", "r");
setvbuf(f, 0, _IONBF, 0);
@@ -10,5 +10,4 @@ int main(int argc, char ** argv) {
char *in = malloc(30);
printf("%s\n", fgets(in, 30, f));
printf("Hello\n");
return 0;
}
+4 -3
View File
@@ -1,7 +1,8 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char ** argv) {
int main(void) {
char buffer[72];
int ret = sprintf(
@@ -11,7 +12,7 @@ int main(int argc, char ** argv) {
);
if (ret != 68) {
printf("Failed! Return value was %d\n", ret);
return -1;
return EXIT_FAILURE;
}
memset(buffer, 0, sizeof(buffer));
@@ -24,7 +25,7 @@ int main(int argc, char ** argv) {
);
if (ret != 86) {
printf("Failed! Return value was %d\n", ret);
return -1;
return EXIT_FAILURE;
}
puts(buffer);
+3 -4
View File
@@ -1,12 +1,12 @@
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
char * s = "azAZ9."; // test boundaries
long l = a64l(s);
if (l != 194301926) {
printf("Invalid result: a64l(%s) = %ld\n", s, l);
return 1;
return EXIT_FAILURE;
}
printf("Correct a64l: %s = %ld\n", s, l);
@@ -15,8 +15,7 @@ int main(int argc, char* argv[]) {
l = a64l(s);
if (l != 53222) {
printf("Invalid result: a64l(%s) = %ld\n", s, l);
return 1;
return EXIT_FAILURE;
}
printf("Correct a64l: %s = %ld\n", s, l);
return 0;
}
+1 -3
View File
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char ** argv) {
int main(void) {
char * ptr = (char *)malloc(256);
printf("malloc %p\n", ptr);
int i;
@@ -24,6 +24,4 @@ int main(int argc, char ** argv) {
ptra[i] = (char)i;
}
free(ptra);
return 0;
}
+1 -2
View File
@@ -1,8 +1,7 @@
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
double d = atof("-3.14");
printf("%f\n", d);
return 0;
}
+1 -2
View File
@@ -1,12 +1,11 @@
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
printf("%d\n", atoi(" -42"));
printf("%d\n", atoi(" +555"));
printf("%d\n", atoi(" 1234567890 "));
printf("%ld\n", atol(" -42"));
printf("%ld\n", atol(" +555"));
printf("%ld\n", atol(" 1234567890 "));
return 0;
}
+6 -5
View File
@@ -13,17 +13,19 @@ int int_cmp(const void* a, const void* b) {
size_t i = 0; \
for (; i < len; ++i) printf("%d,", arr[i]); \
printf("] expected %p but got %p\n", (void*) expect, res); \
return 1; \
return EXIT_FAILURE; \
} \
} while (0);
int main(int argc, char* argv[]) {
int main(void) {
int x = 0;
int y = 1024;
int empty[] = {};
BSEARCH_TEST_INT(x, empty, 0, NULL);
// TODO: Zero sized arrays are a non-standard GNU extension
//int empty[] = {};
//BSEARCH_TEST_INT(x, empty, 0, NULL);
int singleton[] = {42};
printf("%p\n%p\n", singleton, &singleton[1]);
@@ -51,5 +53,4 @@ int main(int argc, char* argv[]) {
BSEARCH_TEST_INT(x, big, 7, NULL);
printf("PASS bsearch\n");
return 0;
}
+3 -7
View File
@@ -3,10 +3,9 @@
volatile long double ld;
volatile unsigned long long ll;
lldiv_t mydivt;
int
main ()
{
char* tmp;
int main(void) {
char* tmp;
f = strtof("gnu", &tmp);
ld = strtold("gnu", &tmp);
ll = strtoll("gnu", &tmp, 10);
@@ -17,8 +16,5 @@ char* tmp;
ll = mydivt.rem;
ll = atoll("10");
_Exit(0);
;
return 0;
}
+2 -2
View File
@@ -2,7 +2,7 @@
#include <stdlib.h>
#include <string.h>
int main() {
int main(void) {
//puts(getenv("SHELL"));
//puts(getenv("CC"));
@@ -34,7 +34,7 @@ int main() {
if (env) {
puts("This should be null, but isn't");
puts(env);
return 1;
return EXIT_FAILURE;
} else {
puts("Value deleted successfully!");
}
+1 -2
View File
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv) {
int main(void) {
char* file_name = (char*) calloc(18, sizeof(char));
strcpy(file_name, "tempXXXXXX.suffix");
int fd = mkostemps(file_name, 7, 0);
@@ -23,5 +23,4 @@ int main(int argc, char** argv) {
}
fclose(fp);
remove(file_name);
return 0;
}
+1 -2
View File
@@ -2,11 +2,10 @@
#include <stdio.h>
#include <string.h>
int main(int argc, char** argv) {
int main(void) {
char* string = (char*) calloc(20, sizeof(char));
strcpy(string, "tempXXXXXX");
mktemp(string);
printf("%s\n",string);
free(string);
return 0;
}
+1 -1
View File
@@ -1,7 +1,7 @@
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char** argv) {
int main(void) {
printf("%d\n", rand());
srand(259);
printf("%d\n", rand());
+3 -3
View File
@@ -4,11 +4,11 @@
#include <stdlib.h>
#include <string.h>
int main() {
int main(void) {
char* path = realpath("stdlib/realpath.c", NULL);
if (!path) {
perror("realpath");
return -1;
return EXIT_FAILURE;
}
puts(path);
@@ -21,7 +21,7 @@ int main() {
if (!path) {
perror("realpath");
free(path);
return -1;
return EXIT_FAILURE;
}
puts(path);
+1 -1
View File
@@ -1,7 +1,7 @@
#include <stdlib.h>
#include <stdio.h>
int main() {
int main(void) {
char* endptr = 0;
double d;
+1 -3
View File
@@ -2,7 +2,7 @@
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
printf("%ld\n", strtol(" -42", NULL, 0));
printf("%ld\n", strtol(" +555", NULL, 0));
printf("%ld\n", strtol(" 1234567890 ", NULL, 0));
@@ -26,6 +26,4 @@ int main(int argc, char* argv[]) {
if(errno != 0) {
printf("errno is not 0 (%d), something went wrong\n", errno);
}
return 0;
}
+1 -3
View File
@@ -2,7 +2,7 @@
#include <stdlib.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
printf("%ld\n", strtoul(" -42", NULL, 0));
printf("%ld\n", strtoul(" +555", NULL, 0));
printf("%ld\n", strtoul(" 1234567890 ", NULL, 0));
@@ -25,6 +25,4 @@ int main(int argc, char* argv[]) {
if(errno != 0) {
printf("errno is not 0 (%d), something went wrong\n", errno);
}
return 0;
}
+1 -2
View File
@@ -1,6 +1,5 @@
#include <stdlib.h>
int main(int argc, char ** argv) {
int main(void) {
system("echo test of system");
return 0;
}
+7 -8
View File
@@ -2,14 +2,14 @@
#include <stdlib.h>
#include <string.h>
int main(int argc, char ** argv) {
int main(void) {
puts("# mem #");
char arr[100];
memset(arr, 0, 100); // Compiler builtin, should work
arr[50] = 1;
if ((size_t)memchr((void *)arr, 1, 100) - (size_t)arr != 50) {
puts("Incorrect memchr");
exit(1);
return EXIT_FAILURE;
}
puts("Correct memchr");
char arr2[51];
@@ -17,26 +17,25 @@ int main(int argc, char ** argv) {
memccpy((void *)arr2, (void *)arr, 1, 100);
if (arr[50] != 1) {
puts("Incorrect memccpy");
exit(1);
return EXIT_FAILURE;
}
puts("Correct memccpy");
int res;
if ((res = memcmp("hello world", "hello world", 11))) {
printf("Incorrect memcmp (1), expected 0 found %d\n", res);
exit(1);
return EXIT_FAILURE;
}
if ((res = memcmp("hello world", "hello worlt", 11)) >= 0) {
printf("Incorrect memcmp (2), expected -, found %d\n", res);
exit(1);
return EXIT_FAILURE;
}
if ((res = memcmp("hello world", "hallo world", 5)) <= 0) {
printf("Incorrect memcmp (3), expected +, found %d\n", res);
exit(1);
return EXIT_FAILURE;
}
if ((res = memcmp("hello world", "henlo world", 5)) >= 0) {
printf("Incorrect memcmp (4), expected -, found %d\n", res);
exit(1);
return EXIT_FAILURE;
}
puts("Correct memcmp");
return 0;
}
+1 -3
View File
@@ -1,12 +1,10 @@
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
char dest1[12] = "hello";
printf("%s\n", strcat(dest1, " world")); // should be hello world
char dest2[12] = "hello";
printf("%s\n", strncat(dest2, " world foobar", 6)); // should be hello world
return 0;
}
+1 -3
View File
@@ -1,10 +1,8 @@
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
printf("%s\n", strchr("hello", 'e')); // should be ello
printf("%s\n", strchr("world", 'l')); // should be ld
printf("%i\n", strchr("world", 0) == NULL); // should be 1
return 0;
}
+1 -1
View File
@@ -1,7 +1,7 @@
#include <stdio.h>
#include <string.h>
int main() {
int main(void) {
char dst[20];
strcpy(dst, "strcpy works!");
+1 -3
View File
@@ -1,10 +1,8 @@
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
char *world = "world";
printf("%ld\n", strcspn("hello", world)); // should be 2
printf("%ld\n", strcspn("banana", world)); // should be 6
return 0;
}
+1 -3
View File
@@ -1,13 +1,11 @@
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
printf("%d\n", strncmp("a", "aa", 2));
printf("%d\n", strncmp("a", "", 2));
printf("%d\n", strncmp("\xFF", "\xFE", 2));
printf("%d\n", strncmp("", "\xFF", 1));
printf("%d\n", strncmp("a", "c", 1));
printf("%d\n", strncmp("a", "a", 2));
return 0;
}
+2 -4
View File
@@ -1,7 +1,7 @@
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
char* source = "The quick drawn fix jumps over the lazy bug";
// should be "The quick drawn fix jumps over the lazy bug"
@@ -14,7 +14,5 @@ int main(int argc, char* argv[]) {
// should be "NULL"
char* res3 = strpbrk(source, "404");
printf("%s\n", (res3) ? res3 : "NULL");
return 0;
printf("%s\n", (res3) ? res3 : "NULL");
}
+4 -5
View File
@@ -1,22 +1,21 @@
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[]) {
int main(void) {
char s0[] = "hello, world";
char* ptr = strrchr(s0, 'l');
if (ptr != &s0[10]) {
printf("%p != %p\n", ptr, &s0[10]);
printf("strrchr FAIL , exit with status code %d\n", 1);
return 1;
return EXIT_FAILURE;
}
char s1[] = "";
ptr = strrchr(s1, 'a');
if (ptr != NULL) {
printf("%p != 0\n", ptr);
printf("strrchr FAIL, exit with status code %d\n", 1);
return 1;
return EXIT_FAILURE;
}
printf("strrch PASS, exiting with status code %d\n", 0);
return 0;
}
+1 -3
View File
@@ -1,13 +1,11 @@
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
char *hello = "hello";
char *world = "world";
char *banana = "banana";
printf("%lu\n", strspn(hello, "hello")); // should be 5
printf("%lu\n", strspn(world, "wendy")); // should be 1
printf("%lu\n", strspn(banana, "apple")); // should be 0
return 0;
}
+1 -3
View File
@@ -1,12 +1,10 @@
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
printf("%s\n", strstr("In relibc we trust", "rust"));
printf("%s\n", strstr("In relibc we trust", "libc"));
printf("%s\n", strstr("In relibc we trust", "bugs"));
printf("%s\n", strstr("IN RELIBC WE TRUST", "rust"));
printf("%s\n", strcasestr("IN RELIBC WE TRUST", "rust"));
return 0;
}
+2 -4
View File
@@ -1,17 +1,15 @@
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
char source[] = "I'd just like to interject for a moment. What you're referring to as Linux, "
"is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux.\n";
char* token = strtok(source, " ");
while (token) {
printf("%s", token);
if (token = strtok(NULL, " ")) {
if ((token = strtok(NULL, " "))) {
printf("_");
}
}
return 0;
}
+2 -4
View File
@@ -1,7 +1,7 @@
#include <string.h>
#include <stdio.h>
int main(int argc, char* argv[]) {
int main(void) {
char source[] = "I'd just like to interject for a moment. What you're referring to as Linux, "
"is in fact, GNU/Linux, or as I've recently taken to calling it, GNU plus Linux.\n";
char* sp;
@@ -9,10 +9,8 @@ int main(int argc, char* argv[]) {
char* token = strtok_r(source, " ", &sp);
while (token) {
printf("%s", token);
if (token = strtok_r(NULL, " ", &sp)) {
if ((token = strtok_r(NULL, " ", &sp))) {
printf("_");
}
}
return 0;
}
+1 -1
View File
@@ -3,7 +3,7 @@
#include <stdio.h>
#include <strings.h>
int main() {
int main(void) {
assert(!bcmp("hello", "hehe", 2));
assert(bcmp("hello", "haha", 2));
+1 -1
View File
@@ -1,7 +1,7 @@
#include <stdio.h>
#include <sys/utsname.h>
int main() {
int main(void) {
struct utsname system_info;
int result = uname(&system_info);
+2 -3
View File
@@ -3,14 +3,13 @@
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv) {
int main(void) {
time_t a = 0;
struct tm *time_info = gmtime(&a);
char *time_string = asctime(time_info);
if (time_string == NULL || strcmp(time_string, "Thu Jan 1 00:00:00 1970\n") != 0) {
exit(1);
return EXIT_FAILURE;
}
return 0;
}
+1 -1
View File
@@ -1,7 +1,7 @@
#include <sys/time.h>
#include <stdio.h>
int main() {
int main(void) {
struct timeval tv;
gettimeofday(&tv, NULL);
printf("%ld: %ld\n", tv.tv_sec, tv.tv_usec);
+3 -4
View File
@@ -3,7 +3,7 @@
#include <stdlib.h>
#include <string.h>
int main(int argc, char** argv) {
int main(void) {
time_t a = 0;
struct tm expected = { .tm_sec = 0, .tm_min = 0, .tm_hour = 0, .tm_mday = 1, .tm_year = 70,
.tm_wday = 4, .tm_yday = 0, .tm_isdst = 0, .tm_gmtoff = 0, .tm_zone = "UTC" };
@@ -14,7 +14,7 @@ int main(int argc, char** argv) {
info->tm_year != expected.tm_year || info->tm_wday != expected.tm_wday ||
info->tm_yday != expected.tm_yday || info->tm_isdst != expected.tm_isdst ||
info->tm_gmtoff != expected.tm_gmtoff || strcmp(info->tm_zone, expected.tm_zone) != 0) {
exit(1);
return EXIT_FAILURE;
}
if (info->tm_sec != expected.tm_sec || info->tm_min != expected.tm_min ||
@@ -22,7 +22,6 @@ int main(int argc, char** argv) {
info->tm_year != expected.tm_year || info->tm_wday != expected.tm_wday ||
info->tm_yday != expected.tm_yday || info->tm_isdst != expected.tm_isdst ||
info->tm_gmtoff != expected.tm_gmtoff || strcmp(info->tm_zone, expected.tm_zone) != 0) {
exit(1);
return EXIT_FAILURE;
}
return 0;
}
+1 -1
View File
@@ -1,7 +1,7 @@
#include <stdio.h>
#include <time.h>
int main() {
int main(void) {
int day = 60 * 60 * 24;
time_t inputs[] = { -(day * 33), -day, -1, -500, 0, 1, 1531454950 };
for (int i = 0; i < (sizeof(inputs) / sizeof(time_t)); i += 1) {
+1 -1
View File
@@ -1,7 +1,7 @@
#include <assert.h>
#include <sys/time.h>
int main() {
int main(void) {
struct timeval x = { .tv_usec = 15 };
struct timeval y = { 0 };
struct timeval z = { 0 };
+6 -5
View File
@@ -14,12 +14,13 @@ int check(time_t input) {
t->tm_year, t->tm_yday, t->tm_mon, t->tm_mday, t->tm_wday, t->tm_hour, t->tm_min, t->tm_sec
);
puts("Failed!");
return -1;
return EXIT_FAILURE;
}
return 0;
return EXIT_SUCCESS;
}
int main() {
struct tm t = {};
int main(void) {
struct tm t = { 0 };
t.tm_year = 71;
t.tm_mday = 1;
@@ -30,7 +31,7 @@ int main() {
time_t inputs[] = { -(day * 33), -day, -500, 0, 1531454950 };
for (int i = 0; i < 5; i += 1) {
if (check(inputs[i])) {
return -1;
return EXIT_FAILURE;
}
}
+2 -1
View File
@@ -8,7 +8,8 @@ void print(time_t timestamp, char* fmt) {
printf("%zu: %s\n", n, out);
free(out);
}
int main() {
int main(void) {
print(1531808742, "%a %A %b %B");
print(1531808742, "The %Cst century");
print(1531808742, "%I:%M:%S %p");
+19 -7
View File
@@ -1,13 +1,25 @@
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
int main(void) {
struct timespec tm = {0, 0};
clock_gettime(CLOCK_REALTIME, &tm);
perror("clock_gettime");
time(NULL);
perror("time");
int cgt = clock_gettime(CLOCK_REALTIME, &tm);
if (cgt == -1) {
perror("clock_gettime");
return EXIT_FAILURE;
}
time_t t = time(NULL);
if (t == (time_t)-1) {
perror("time");
return EXIT_FAILURE;
}
clock_t c = clock();
perror("clock");
return 0;
if (c == (clock_t)-1) {
perror("clock");
return EXIT_FAILURE;
}
}
+1 -1
View File
@@ -2,7 +2,7 @@
#include <sys/times.h>
#include <unistd.h>
int main() {
int main(void) {
struct tms tms;
printf("return: %ld\n", times(&tms));
+4 -3
View File
@@ -1,14 +1,15 @@
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main() {
int main(void) {
if (access("example_dir/1-never-gonna-give-you-up", R_OK | W_OK)) {
perror("access");
return 1;
return EXIT_FAILURE;
}
if (!access("example_dir/1-never-gonna-give-you-up", X_OK)) {
puts("Accessing a file with X_OK worked even though it... probably... shouldn't?");
puts("Please run `chmod 644 example_dir/*` and try again.");
return 1;
return EXIT_FAILURE;
}
}
+1 -2
View File
@@ -1,8 +1,7 @@
#include <unistd.h>
#include <stdio.h>
int main(int argc, char** argv) {
int main(void) {
int status = brk((void*)100);
printf("brk exited with status code %d\n", status);
return 0;
}
+1 -2
View File
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
int main(void) {
char* cwd1 = malloc(4096*sizeof(char));//(char*) calloc(4096 + 1, sizeof(char));
getcwd(cwd1, 4096);
printf("initial cwd: %s\n", cwd1);
@@ -12,5 +12,4 @@ int main(int argc, char** argv) {
getcwd(cwd2, 4096);
printf("final cwd: %s\n", cwd2);
free(cwd2);
return 0;
}
+1 -2
View File
@@ -2,7 +2,7 @@
#include <fcntl.h>
#include <stdio.h>
int main(int argc, char** argv) {
int main(void) {
creat("dup.out", 0777);
int fd1 = open("dup.out", 0);
int fd2 = dup(fd1);
@@ -13,5 +13,4 @@ int main(int argc, char** argv) {
dup2(fd3, 1);
printf("hello fd %d", fd3);
close(fd3);
return 0;
}
+1 -2
View File
@@ -1,9 +1,8 @@
#include <unistd.h>
#include <stdio.h>
int main(int argc, char** argv) {
int main(void) {
char* args[] = {"sh", "-c", "echo 'exec works :D'", NULL};
execv("/bin/sh", args);
perror("execv");
return 0;
}
+1 -2
View File
@@ -2,11 +2,10 @@
#include <fcntl.h>
#include <stdio.h>
int main (int argc, char** argv) {
int main(void) {
int fd = open("..", 0, 0);
int status;
status = fchdir(fd);
printf("fchdir exited with status code %d\n", status);
close(fd);
return 0;
}
+1 -2
View File
@@ -2,11 +2,10 @@
#include <fcntl.h>
#include <stdio.h>
int main (int argc, char** argv) {
int main(void) {
int fd = open(".", 0, 0);
int status;
status = fsync(fd);
printf("fsync exited with status code %d\n", status);
close(fd);
return 0;
}
+1 -2
View File
@@ -2,11 +2,10 @@
#include <fcntl.h>
#include <stdio.h>
int main (int argc, char** argv) {
int main(void) {
int fd = creat("ftruncate.out", 0777);
int status;
status = ftruncate(fd, 100);
printf("ftruncate exited with status code %d\n", status);
close(fd);
return 0;
}
+2 -2
View File
@@ -4,7 +4,7 @@
#include <string.h>
#include <unistd.h>
int main() {
int main(void) {
char first[PATH_MAX];
getcwd(first, PATH_MAX);
puts(first);
@@ -15,7 +15,7 @@ int main() {
if (strcmp(first, second)) {
puts("Not matching");
free(second);
return 1;
return EXIT_FAILURE;
}
free(second);
+1 -1
View File
@@ -2,7 +2,7 @@
#include <stdio.h>
#include <unistd.h>
int main() {
int main(void) {
char* hostname = malloc(256);
if (gethostname(hostname, 256) == 0) {
printf("Hostname: %s\n", hostname);
+1 -2
View File
@@ -1,7 +1,7 @@
#include <unistd.h>
#include <stdio.h>
int main(int argc, char** argv) {
int main(void) {
gid_t egid = getegid();
uid_t euid = geteuid();
gid_t gid = getgid();
@@ -11,5 +11,4 @@ int main(int argc, char** argv) {
uid_t uid = getuid();
printf("egid: %d, euid: %d, gid: %d, pgid: %d, pid: %d, ppid %d, uid %d\n",
egid, euid, gid, pgid, pid, ppid, uid);
return 0;
}
+1 -1
View File
@@ -1,7 +1,7 @@
#include <stdio.h>
#include <unistd.h>
int main() {
int main(void) {
// 1 is stdout
if (isatty(1)) {
puts("'Tis a tty :D");
+6 -5
View File
@@ -1,9 +1,10 @@
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <unistd.h>
int main(int argc, char** argv) {
int main(void) {
printf("%ld\n", sizeof(struct stat));
struct stat buf;
@@ -11,7 +12,7 @@ int main(int argc, char** argv) {
// Stat for the inode
if (stat("unistd/link.c", &buf)) {
perror("stat");
return 1;
return EXIT_FAILURE;
}
unsigned long inode = buf.st_ino;
printf("%ld\n", inode);
@@ -19,7 +20,7 @@ int main(int argc, char** argv) {
// Create the link
if (link("unistd/link.c", "link.out")) {
perror("link");
return 1;
return EXIT_FAILURE;
}
// Make sure inodes match
@@ -37,10 +38,10 @@ int main(int argc, char** argv) {
// Remove link
if (unlink("link.out")) {
perror("unlink");
return 1;
return EXIT_FAILURE;
}
if (!stat("link.out", &buf) || errno != ENOENT) {
perror("stat");
return 1;
return EXIT_FAILURE;
}
}
+1 -2
View File
@@ -7,7 +7,7 @@
printf("%s (%d): %ld (%d)\n", #N, _PC_ ## N, fpathconf(0, _PC_ ## N), errno); \
}
int main(){
int main(void) {
PC(LINK_MAX);
PC(MAX_CANON);
PC(MAX_INPUT);
@@ -29,5 +29,4 @@ int main(){
PC(ALLOC_SIZE_MIN);
PC(SYMLINK_MAX);
PC(2_SYMLINKS);
return 0;
}
+11 -13
View File
@@ -1,18 +1,17 @@
//http://www2.cs.uregina.ca/~hamilton/courses/330/notes/unix/pipes/pipes.html
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
int main(void) {
int pid, pip[2];
char instring[20];
char * outstring = "Hello World!";
if (pipe(pip) < 0) {
perror("pipe");
return 1;
return EXIT_FAILURE;
}
pid = fork();
@@ -30,13 +29,13 @@ int main()
/* check result */
if (bytes < 0) {
perror("pipe write");
return 1;
return EXIT_FAILURE;
} else if (bytes != strlen(outstring)) {
fprintf(stderr, "pipe write: %d != %ld\n", bytes, strlen(outstring));
return 1;
return EXIT_FAILURE;
}
return 0;
return EXIT_SUCCESS;
}
else /* parent : receives message from child */
{
@@ -55,18 +54,17 @@ int main()
/* check result */
if (bytes < 0) {
perror("pipe read");
return 1;
return EXIT_FAILURE;
} else if (bytes != strlen(outstring)) {
fprintf(stderr, "pipe read: %d != %ld\n", bytes, strlen(outstring));
return 1;
} else if (memcmp(instring, outstring, sizeof(outstring)) != 0) {
return EXIT_FAILURE;
} else if (memcmp(instring, outstring, strlen(outstring)) != 0) {
fprintf(stderr, "pipe read does not match pipe write\n");
return 1;
return EXIT_FAILURE;
} else {
printf("%s\n", instring);
}
return 0;
return EXIT_SUCCESS;
}
return 0;
}

Some files were not shown because too many files have changed in this diff Show More