From 62ed2e6c2962f6012ede1584646bbdb73021b141 Mon Sep 17 00:00:00 2001 From: midipix Date: Jun 29 2018 05:37:42 +0000 Subject: internals: added slbt_mapped_readline(). --- diff --git a/include/slibtool/slibtool.h b/include/slibtool/slibtool.h index 30024f4..ce76377 100644 --- a/include/slibtool/slibtool.h +++ b/include/slibtool/slibtool.h @@ -85,6 +85,7 @@ enum slbt_custom_error { SLBT_ERR_LDRPATH_INIT, SLBT_ERR_LINK_FLOW, SLBT_ERR_LINK_FREQ, + SLBT_ERR_BAD_DATA, SLBT_ERR_UNINSTALL_FAIL, }; diff --git a/src/internal/slibtool_mapfile_impl.c b/src/internal/slibtool_mapfile_impl.c index e5d40d1..a9c1d61 100644 --- a/src/internal/slibtool_mapfile_impl.c +++ b/src/internal/slibtool_mapfile_impl.c @@ -3,8 +3,11 @@ #include #include #include +#include #include #include + +#include "slibtool_errinfo_impl.h" #include "slibtool_mapfile_impl.h" static void slbt_munmap(void * addr, size_t size) @@ -67,6 +70,8 @@ struct slbt_map_info * slbt_map_file( mapinfo->addr = addr; mapinfo->size = st.st_size; + mapinfo->mark = addr; + mapinfo->cap = &mapinfo->mark[st.st_size]; return mapinfo; } @@ -76,3 +81,38 @@ void slbt_unmap_file(struct slbt_map_info * mapinfo) slbt_munmap(mapinfo->addr,mapinfo->size); free(mapinfo); } + +int slbt_mapped_readline( + const struct slbt_driver_ctx * dctx, + struct slbt_map_info * mapinfo, + char * buf, + size_t buflen) +{ + const char * ch; + const char * cap; + const char * mark; + const char * newline; + size_t len; + + mark = mapinfo->mark; + cap = mapinfo->cap; + + for (ch=mark, newline=0; chmark += len; + + return 0; +} diff --git a/src/internal/slibtool_mapfile_impl.h b/src/internal/slibtool_mapfile_impl.h index 567fc8f..4b96c11 100644 --- a/src/internal/slibtool_mapfile_impl.h +++ b/src/internal/slibtool_mapfile_impl.h @@ -7,6 +7,8 @@ struct slbt_map_info { void * addr; size_t size; + char * mark; + char * cap; }; struct slbt_map_info * slbt_map_file( @@ -15,4 +17,9 @@ struct slbt_map_info * slbt_map_file( void slbt_unmap_file(struct slbt_map_info *); +int slbt_mapped_readline( + const struct slbt_driver_ctx *, + struct slbt_map_info *, + char *, size_t); + #endif