Add sp_copy_port() function.
This commit is contained in:
parent
99945a1fb5
commit
32b5ac05b4
20
README
20
README
|
@ -107,16 +107,32 @@ int sp_list_ports(struct sp_port ***list_ptr);
|
|||
allocate a variable of type "struct sp_port **" and pass a pointer to this to
|
||||
receive the result.
|
||||
|
||||
The result should be freed after use by calling sp_free_port_list().
|
||||
The result should be freed after use by calling sp_free_port_list(). If a port
|
||||
from the list is to be used after freeing the list, it must be copied first
|
||||
using sp_copy_port().
|
||||
|
||||
Returns: SP_OK on success, SP_ERR_FAIL on failure, SP_ERR_MEM on allocation
|
||||
failure, or SP_ERR_ARG if an invalid pointer is passed. If any error
|
||||
is returned, the variable pointed to by list_ptr will be set to NULL.
|
||||
Otherwise, it will be set to point to the newly allocated array.
|
||||
|
||||
int sp_copy_port(const struct sp_port *port, struct sp_port **copy_ptr);
|
||||
|
||||
Makes a new copy of a sp_port structure. The user should allocate a variable
|
||||
of type "struct sp_port *" and pass a pointer to this to receive the result.
|
||||
|
||||
The copy should be freed after use by calling sp_free_port().
|
||||
|
||||
Returns: SP_OK on success, SP_ERR_MEM on allocation failure, or SP_ERR_ARG
|
||||
if an invalid port or pointer is passed. If any error is returned,
|
||||
the variable pointed to by copy_ptr will be set to NULL. Otherwise,
|
||||
it will be set to point to the newly allocated copy.
|
||||
|
||||
void sp_free_port_list(struct sp_port **list);
|
||||
|
||||
Frees a port list obtained from sp_list_ports().
|
||||
Frees a port list obtained from sp_list_ports(). This will also free all
|
||||
the sp_port structures referred to from the list; any that are to be retained
|
||||
must be copied first using sp_copy_port().
|
||||
|
||||
Opening and closing ports
|
||||
-------------------------
|
||||
|
|
|
@ -82,6 +82,7 @@ enum {
|
|||
int sp_get_port_by_name(const char *portname, struct sp_port **port_ptr);
|
||||
void sp_free_port(struct sp_port *port);
|
||||
int sp_list_ports(struct sp_port ***list_ptr);
|
||||
int sp_copy_port(const struct sp_port *port, struct sp_port **copy_ptr);
|
||||
void sp_free_port_list(struct sp_port **ports);
|
||||
int sp_open(struct sp_port *port, int flags);
|
||||
int sp_close(struct sp_port *port);
|
||||
|
|
16
serialport.c
16
serialport.c
|
@ -50,6 +50,9 @@ int sp_get_port_by_name(const char *portname, struct sp_port **port_ptr)
|
|||
struct sp_port *port;
|
||||
int len;
|
||||
|
||||
if (!port_ptr)
|
||||
return SP_ERR_ARG;
|
||||
|
||||
*port_ptr = NULL;
|
||||
|
||||
if (!portname)
|
||||
|
@ -73,6 +76,19 @@ int sp_get_port_by_name(const char *portname, struct sp_port **port_ptr)
|
|||
return SP_OK;
|
||||
}
|
||||
|
||||
int sp_copy_port(const struct sp_port *port, struct sp_port **copy_ptr)
|
||||
{
|
||||
if (!copy_ptr)
|
||||
return SP_ERR_ARG;
|
||||
|
||||
*copy_ptr = NULL;
|
||||
|
||||
if (!port || !port->name)
|
||||
return SP_ERR_ARG;
|
||||
|
||||
return sp_get_port_by_name(port->name, copy_ptr);
|
||||
}
|
||||
|
||||
void sp_free_port(struct sp_port *port)
|
||||
{
|
||||
if (!port)
|
||||
|
|
Loading…
Reference in New Issue