forked from picolibc/picolibc
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tinystdio: added fgetpos and fsetpos files
added fgetpos.c and fsetpos.c files to resolve compilation error of: undefined symbol: fgetpos undefined symbol: fsetpos changed the prototype of these functions in the file stdio.h to match with the ISO/IEC 9899_1999 Signed-off-by: Hana Ashour <[email protected]>
- Loading branch information
1 parent
8e5704c
commit 67a423d
Showing
4 changed files
with
150 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,77 @@ | ||
/* | ||
* Copyright (c) 1990 The Regents of the University of California. | ||
* All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms are permitted | ||
* provided that the above copyright notice and this paragraph are | ||
* duplicated in all such forms and that any documentation, | ||
* and/or other materials related to such | ||
* distribution and use acknowledge that the software was developed | ||
* by the University of California, Berkeley. The name of the | ||
* University may not be used to endorse or promote products derived | ||
* from this software without specific prior written permission. | ||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | ||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | ||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
*/ | ||
|
||
/* | ||
FUNCTION | ||
<<fgetpos>>---record position in a stream or file | ||
INDEX | ||
fgetpos | ||
INDEX | ||
_fgetpos_r | ||
SYNOPSIS | ||
#include <stdio.h> | ||
int fgetpos(FILE *restrict <[fp]>, fpos_t *restrict <[pos]>); | ||
int fgetpos( FILE *restrict <[fp]>, fpos_t *restrict <[pos]>); | ||
DESCRIPTION | ||
Objects of type <<FILE>> can have a ``position'' that records how much | ||
of the file your program has already read. Many of the <<stdio>> functions | ||
depend on this position, and many change it as a side effect. | ||
You can use <<fgetpos>> to report on the current position for a file | ||
identified by <[fp]>; <<fgetpos>> will write a value | ||
representing that position at <<*<[pos]>>>. Later, you can | ||
use this value with <<fsetpos>> to return the file to this | ||
position. | ||
In the current implementation, <<fgetpos>> simply uses a character | ||
count to represent the file position; this is the same number that | ||
would be returned by <<ftell>>. | ||
RETURNS | ||
<<fgetpos>> returns <<0>> when successful. If <<fgetpos>> fails, the | ||
result is <<1>>. Failure occurs on streams that do not support | ||
positioning; the global <<errno>> indicates this condition with the | ||
value <<ESPIPE>>. | ||
PORTABILITY | ||
<<fgetpos>> is required by the ANSI C standard, but the meaning of the | ||
value it records is not specified beyond requiring that it be | ||
acceptable as an argument to <<fsetpos>>. In particular, other | ||
conforming C implementations may return a different result from | ||
<<ftell>> than what <<fgetpos>> writes at <<*<[pos]>>>. | ||
No supporting OS subroutines are required. | ||
*/ | ||
|
||
#include <stdio_private.h> | ||
|
||
int | ||
fgetpos ( | ||
FILE *__restrict fp, | ||
_fpos_t *__restrict pos) | ||
{ | ||
*pos = ftell ( fp); | ||
|
||
if (*pos != -1) | ||
{ | ||
return 0; | ||
} | ||
return 1; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
/* | ||
* Copyright (c) 1990 The Regents of the University of California. | ||
* All rights reserved. | ||
* | ||
* Redistribution and use in source and binary forms are permitted | ||
* provided that the above copyright notice and this paragraph are | ||
* duplicated in all such forms and that any documentation, | ||
* and/or other materials related to such | ||
* distribution and use acknowledge that the software was developed | ||
* by the University of California, Berkeley. The name of the | ||
* University may not be used to endorse or promote products derived | ||
* from this software without specific prior written permission. | ||
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR | ||
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED | ||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. | ||
*/ | ||
|
||
/* | ||
FUNCTION | ||
<<fsetpos>>---restore position of a stream or file | ||
INDEX | ||
fsetpos | ||
INDEX | ||
_fsetpos_r | ||
SYNOPSIS | ||
#include <stdio.h> | ||
int fsetpos(FILE *<[fp]>, const fpos_t *<[pos]>); | ||
int fsetpos( FILE *<[fp]>, | ||
const fpos_t *<[pos]>); | ||
DESCRIPTION | ||
Objects of type <<FILE>> can have a ``position'' that records how much | ||
of the file your program has already read. Many of the <<stdio>> functions | ||
depend on this position, and many change it as a side effect. | ||
You can use <<fsetpos>> to return the file identified by <[fp]> to a previous | ||
position <<*<[pos]>>> (after first recording it with <<fgetpos>>). | ||
See <<fseek>> for a similar facility. | ||
RETURNS | ||
<<fgetpos>> returns <<0>> when successful. If <<fgetpos>> fails, the | ||
result is <<1>>. The reason for failure is indicated in <<errno>>: | ||
either <<ESPIPE>> (the stream identified by <[fp]> doesn't support | ||
repositioning) or <<EINVAL>> (invalid file position). | ||
PORTABILITY | ||
ANSI C requires <<fsetpos>>, but does not specify the nature of | ||
<<*<[pos]>>> beyond identifying it as written by <<fgetpos>>. | ||
Supporting OS subroutines required: <<close>>, <<fstat>>, <<isatty>>, | ||
<<lseek>>, <<read>>, <<sbrk>>, <<write>>. | ||
*/ | ||
|
||
#include <stdio_private.h> | ||
|
||
int | ||
fsetpos ( | ||
FILE * iop, | ||
const _fpos_t * pos) | ||
{ | ||
int x = fseek ( iop, *pos, SEEK_SET); | ||
|
||
if (x != 0) | ||
return 1; | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters