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:
Colin Leroy-Mira
2024-01-11 19:51:17 +01:00
parent 65937684a0
commit aa6f850b8d
3 changed files with 93 additions and 63 deletions

46
test/ref/test_gets.c Normal file
View 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;
}