Rewrite gets in assembler
+19 bytes if used alone, because it pulls in fgets, but as code is factorized, -128 bytes in programs using both fgets and gets.
This commit is contained in:
46
test/ref/test_gets.c
Normal file
46
test/ref/test_gets.c
Normal file
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
!!DESCRIPTION!! gets test
|
||||
!!LICENCE!! Public domain
|
||||
*/
|
||||
|
||||
#include "common.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <ctype.h>
|
||||
|
||||
char buf[512];
|
||||
|
||||
#define INFILE "cf.in"
|
||||
|
||||
#ifndef __CC65__
|
||||
/* Force declaration on host compiler, as gets() is deprecated for
|
||||
* being dangerous as hell */
|
||||
char *gets (char *__s);
|
||||
#endif
|
||||
|
||||
#ifdef NO_OLD_FUNC_DECL
|
||||
int main(int argc,char **argv)
|
||||
#else
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
#endif
|
||||
{
|
||||
/* Fake stdin with the reference file */
|
||||
fclose(stdin);
|
||||
stdin = fopen(INFILE, "r");
|
||||
if (stdin == NULL) {
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
while (gets(buf) != NULL)
|
||||
{
|
||||
printf("%s",buf);
|
||||
}
|
||||
|
||||
fclose(stdin);
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user