---
apps/obex_test/obex_test.c | 26 ++++++++++++++++-----
apps/obex_test/obex_test.h | 1 +
apps/obex_test/obex_test_client.c | 44 +++++++++++++-----------------------
3 files changed, 37 insertions(+), 34 deletions(-)
diff --git a/apps/obex_test/obex_test.c b/apps/obex_test/obex_test.c
index 4200f9b..9336e2a 100644
--- a/apps/obex_test/obex_test.c
+++ b/apps/obex_test/obex_test.c
@@ -49,6 +49,7 @@ bdaddr_t bluez_compat_bdaddr_any = { BTH_ADDR_NULL };
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
+#include <stdarg.h>
#ifndef in_addr_t
#define in_addr_t unsigned long
@@ -107,6 +108,21 @@ static void obex_event(obex_t *handle, obex_object_t
*object, int mode,
}
}
+int read_input(char *answer, size_t size, const char *question, ...)
+{
+ va_list ap;
+ va_start(ap, question);
+ vfprintf(stdout, question, ap);
+ va_end(ap);
+
+ fflush(stdout);
+ if (fgets(answer, size, stdin) == NULL)
+ return -1;
+
+ answer[strlen(answer)-1] = '\0'; /* remove trailing newline */
+ return strlen(answer);
+}
+
#if 0
/*
* Function get_peer_addr (name, peer)
@@ -153,8 +169,8 @@ static int inet_connect(obex_t *handle)
//
int main (int argc, char *argv[])
{
- char cmd[10];
- int num, end = 0;
+ char cmd[3];
+ int end = 0;
int cobex = FALSE, tcpobex = FALSE, btobex = FALSE, r320 = FALSE,
usbobex = FALSE;
obex_t *handle;
#ifdef HAVE_BLUETOOTH
@@ -349,11 +365,9 @@ int main (int argc, char *argv[])
printf( "OBEX Interactive test client/server.\n");
while (!end) {
- printf("> ");
- num = scanf("%s", cmd);
- if (num == EOF)
+ if (read_input(cmd, sizeof(cmd), "> ") < 0)
break;
- switch (cmd[0] | 0x20) {
+ switch(cmd[0]) {
case 'h':
printf("Commands:\n"
" c - connect\n"
diff --git a/apps/obex_test/obex_test.h b/apps/obex_test/obex_test.h
index a340f75..14d347e 100644
--- a/apps/obex_test/obex_test.h
+++ b/apps/obex_test/obex_test.h
@@ -19,5 +19,6 @@ struct context
int clientdone;
char *get_name; /* Name of last get-request */
};
+int read_input(char *answer, size_t size, const char *question, ...);
#endif
diff --git a/apps/obex_test/obex_test_client.c
b/apps/obex_test/obex_test_client.c
index 8f0efc7..da92df7 100644
--- a/apps/obex_test/obex_test_client.c
+++ b/apps/obex_test/obex_test_client.c
@@ -227,18 +227,14 @@ void push_client(obex_t *handle)
unsigned int uname_size;
char *bfname;
uint8_t *uname;
- int num;
obex_headerdata_t hd;
uint8_t *buf;
int file_size;
- printf("PUSH filename> ");
- memset(fname, 0, sizeof(fname));
- num = scanf("%199c", fname);
- if (num != 1) {
- perror("scanf");
+ if (read_input(fname, sizeof(fname), "PUSH file> ") <= 0) {
+ perror("Error reading file name");
return;
}
@@ -294,16 +290,12 @@ void put_client(obex_t *handle)
char rname[200];
unsigned int rname_size;
obex_headerdata_t hd;
- int num;
uint8_t *buf;
int file_size;
- printf("PUT file (local)> ");
- memset(lname, 0, sizeof(lname));
- num = scanf("%199c", lname);
- if (num != 1) {
- perror("scanf:");
+ if (read_input(lname, sizeof(lname), "PUT file (local)> ") <= 0) {
+ perror("Error reading file name");
return;
}
@@ -314,10 +306,12 @@ void put_client(obex_t *handle)
return;
}
- printf("PUT remote filename (default: %s)> ", lname);
- memset(rname, 0, sizeof(rname));
- num = scanf("%199c", rname);
- if (num == 0)
+ if (read_input(rname, sizeof(rname),
+ "PUT remote filename (default: %s)> ", lname) < 0) {
+ perror("Error reading file name");
+ return;
+ }
+ if (strlen(rname) == 0)
strcpy(rname, lname);
printf("Going to send %d bytes\n", file_size);
@@ -362,14 +356,11 @@ void get_client(obex_t *handle, struct context *gt)
obex_object_t *object;
uint8_t rname[200];
char req_name[200];
- int num, rname_size;
+ int rname_size;
obex_headerdata_t hd;
- printf("GET File> ");
- memset(req_name, 0, sizeof(req_name));
- num = scanf("%199c", req_name);
- if (num != 1) {
- perror("scanf:");
+ if (read_input(req_name, sizeof(req_name), "GET file> ") <= 0) {
+ perror("Error reading file name");
return;
}
@@ -438,14 +429,11 @@ void setpath_client(obex_t *handle)
uint8_t setpath_data[2] = { 0, 0 };
obex_object_t *object;
char path[200];
- int num, path_size;
+ int path_size;
obex_headerdata_t hd;
- printf("SETPATH> ");
- memset(path, 0, sizeof(path));
- num = scanf("%199c", path);
- if (num != 1) {
- perror("scanf:");
+ if (read_input(path, sizeof(path), "SETPATH> ") <= 0) {
+ perror("Error reading path");
return;
}
--
1.7.5.4
------------------------------------------------------------------------------
Got Input? Slashdot Needs You.
Take our quick survey online. Come on, we don't ask for help often.
Plus, you'll get a chance to win $100 to spend on ThinkGeek.
http://p.sf.net/sfu/slashdot-survey
_______________________________________________
Openobex-users mailing list
[email protected]
http://lists.sourceforge.net/lists/listinfo/openobex-users