[posix] remove getline
This commit is contained in:
parent
cec72c92c7
commit
09c089d511
|
@ -44,12 +44,6 @@ config RT_USING_POSIX_CLOCK
|
||||||
select RT_USING_POSIX_DELAY
|
select RT_USING_POSIX_DELAY
|
||||||
default n
|
default n
|
||||||
|
|
||||||
config RT_USING_POSIX_GETLINE
|
|
||||||
bool "Enable getline()/getdelim()"
|
|
||||||
select RT_USING_POSIX_FS
|
|
||||||
select RT_USING_POSIX_DEVIO
|
|
||||||
default n
|
|
||||||
|
|
||||||
config RT_USING_PTHREADS
|
config RT_USING_PTHREADS
|
||||||
bool "Enable pthreads APIs"
|
bool "Enable pthreads APIs"
|
||||||
select RT_USING_POSIX_CLOCK
|
select RT_USING_POSIX_CLOCK
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
# getline/getdelim for RT-Thread POSIX(IEEE Std 1003.1-2008)
|
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/ivanrad/getline.svg?branch=master)](https://travis-ci.org/ivanrad/getline)
|
|
||||||
|
|
||||||
https://github.com/ivanrad/getline
|
|
||||||
|
|
||||||
Read a delimited record from stream.
|
|
||||||
|
|
||||||
Yet another (hopefully portable C) implementation of getline/getdelim.
|
|
||||||
These are ersatz functions, a drop-in replacement, to be used on those occasions when your C library does not already support them.
|
|
||||||
|
|
||||||
For more details, see [Open Group Base Specification for getdelim/getline][opengroup-spec].
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## License
|
|
||||||
|
|
||||||
This code is unlicensed -- free and released into the public domain. See `UNLICENSE` file for more information.
|
|
||||||
|
|
||||||
[opengroup-spec]: http://pubs.opengroup.org/onlinepubs/9699919799/functions/getline.html
|
|
|
@ -1,11 +0,0 @@
|
||||||
# RT-Thread building script for component
|
|
||||||
|
|
||||||
from building import *
|
|
||||||
|
|
||||||
cwd = GetCurrentDir()
|
|
||||||
src = Glob('*.c')
|
|
||||||
CPPPATH = [cwd]
|
|
||||||
|
|
||||||
group = DefineGroup('POSIX', src, depend = ['RT_USING_POSIX_GETLINE'], CPPPATH = CPPPATH)
|
|
||||||
|
|
||||||
Return('group')
|
|
|
@ -1,24 +0,0 @@
|
||||||
This is free and unencumbered software released into the public domain.
|
|
||||||
|
|
||||||
Anyone is free to copy, modify, publish, use, compile, sell, or
|
|
||||||
distribute this software, either in source code form or as a compiled
|
|
||||||
binary, for any purpose, commercial or non-commercial, and by any
|
|
||||||
means.
|
|
||||||
|
|
||||||
In jurisdictions that recognize copyright laws, the author or authors
|
|
||||||
of this software dedicate any and all copyright interest in the
|
|
||||||
software to the public domain. We make this dedication for the benefit
|
|
||||||
of the public at large and to the detriment of our heirs and
|
|
||||||
successors. We intend this dedication to be an overt act of
|
|
||||||
relinquishment in perpetuity of all present and future rights to this
|
|
||||||
software under copyright law.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
||||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
|
||||||
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
|
||||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
|
|
||||||
For more information, please refer to <http://unlicense.org/>
|
|
|
@ -1,77 +0,0 @@
|
||||||
/* posix_getline.c
|
|
||||||
* RT-Thread POSIX
|
|
||||||
* getdelim(), getline() - read a delimited record from stream, ersatz implementation
|
|
||||||
* This code is unlicensed -- free and released into the public domain.
|
|
||||||
* https://man7.org/linux/man-pages/man3/getline.3.html
|
|
||||||
* Authors:
|
|
||||||
* https://github.com/ivanrad/getline
|
|
||||||
*
|
|
||||||
* Meco Man 2020-09-03 porting to RT-Thread
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "posix_getline.h"
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <limits.h>
|
|
||||||
#include <sys/errno.h>
|
|
||||||
|
|
||||||
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream) {
|
|
||||||
char *cur_pos, *new_lineptr;
|
|
||||||
size_t new_lineptr_len;
|
|
||||||
int c;
|
|
||||||
|
|
||||||
if (lineptr == NULL || n == NULL || stream == NULL) {
|
|
||||||
errno = EINVAL;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (*lineptr == NULL) {
|
|
||||||
*n = 128; /* init len */
|
|
||||||
if ((*lineptr = (char *)malloc(*n)) == NULL) {
|
|
||||||
errno = ENOMEM;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
cur_pos = *lineptr;
|
|
||||||
for (;;) {
|
|
||||||
c = getc(stream);
|
|
||||||
|
|
||||||
if (ferror(stream) || (c == EOF && cur_pos == *lineptr))
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
if (c == EOF)
|
|
||||||
break;
|
|
||||||
|
|
||||||
if ((*lineptr + *n - cur_pos) < 2) {
|
|
||||||
if (LONG_MAX / 2 < *n) {
|
|
||||||
#ifdef EOVERFLOW
|
|
||||||
errno = EOVERFLOW;
|
|
||||||
#else
|
|
||||||
errno = ERANGE; /* no EOVERFLOW defined */
|
|
||||||
#endif
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
new_lineptr_len = *n * 2;
|
|
||||||
|
|
||||||
if ((new_lineptr = (char *)realloc(*lineptr, new_lineptr_len)) == NULL) {
|
|
||||||
errno = ENOMEM;
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
cur_pos = new_lineptr + (cur_pos - *lineptr);
|
|
||||||
*lineptr = new_lineptr;
|
|
||||||
*n = new_lineptr_len;
|
|
||||||
}
|
|
||||||
|
|
||||||
*cur_pos++ = (char)c;
|
|
||||||
|
|
||||||
if (c == delim)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
*cur_pos = '\0';
|
|
||||||
return (ssize_t)(cur_pos - *lineptr);
|
|
||||||
}
|
|
||||||
|
|
||||||
ssize_t getline(char **lineptr, size_t *n, FILE *stream) {
|
|
||||||
return getdelim(lineptr, n, '\n', stream);
|
|
||||||
}
|
|
|
@ -1,23 +0,0 @@
|
||||||
/* posix_getline.h
|
|
||||||
* RT-Thread POSIX
|
|
||||||
* getdelim(), getline() - read a delimited record from stream, ersatz implementation
|
|
||||||
* This code is unlicensed -- free and released into the public domain.
|
|
||||||
* https://man7.org/linux/man-pages/man3/getline.3.html
|
|
||||||
* Authors:
|
|
||||||
* https://github.com/ivanrad/getline
|
|
||||||
*
|
|
||||||
* Meco Man 2020-09-03 porting to RT-Thread
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef POSIX_GETLINE_H
|
|
||||||
#define POSIX_GETLINE_H
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/types.h>
|
|
||||||
|
|
||||||
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
|
|
||||||
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
|
|
||||||
|
|
||||||
#endif /* POSIX_GETLINE_H */
|
|
||||||
|
|
Loading…
Reference in New Issue