Some tests
This commit is contained in:
parent
7ba450380f
commit
ead56534d1
|
@ -2,6 +2,7 @@ Package: gem-graph-server
|
|||
Version: 0.0.1
|
||||
Section: custom
|
||||
Priority: optional
|
||||
Depends: libxml2
|
||||
Architecture: amd64
|
||||
Essential: no
|
||||
Installed-Size: 1049
|
||||
|
|
|
@ -87,7 +87,7 @@ void *serverCommunicationInstance(void *server)
|
|||
clientPort,
|
||||
receiveBuff);
|
||||
|
||||
if (receiveBuff[0] == '\0')
|
||||
if (receiveBuff[0] == '\0') //XXX
|
||||
break;
|
||||
|
||||
// get args in an array
|
||||
|
@ -222,10 +222,10 @@ static void *serverMain(void *server)
|
|||
clientIP, socklen);
|
||||
printLog("Client accepted from %s:%d\n",
|
||||
clientIP,
|
||||
ntohs(serverSlots[serverSlotIndex].clientAddr.sin_port));
|
||||
ntohs(serverSlots[serverSlotIndex].clientAddr.sin_port)); // TODO envisager déplacement dans thread
|
||||
|
||||
// Populate communicator slot
|
||||
serverSlots[serverSlotIndex].socklen = socklen;
|
||||
serverSlots[serverSlotIndex].socklen = socklen; // XXX
|
||||
serverSlots[serverSlotIndex].sockfd = connfd;
|
||||
serverSlots[serverSlotIndex].parent = args;
|
||||
|
||||
|
|
Binary file not shown.
|
@ -0,0 +1,104 @@
|
|||
#include "../../include/base.h"
|
||||
#include <sys/ioctl.h>
|
||||
#include <unistd.h>
|
||||
#include <termios.h>
|
||||
#include <fcntl.h>
|
||||
|
||||
#define KEY_ESCAPE 27
|
||||
#define KEY_DIRECTIONS 91
|
||||
#define KEY_ARROW_UP 65
|
||||
#define KEY_ARROW_DOWN 66
|
||||
#define KEY_ARROW_RIGHT 67
|
||||
#define KEY_ARROW_LEFT 68
|
||||
#define KEY_DELETE 127
|
||||
|
||||
#define C_CLEARSCREEN "\e[2J"
|
||||
#define C_CLEARLINE "\e[2K"
|
||||
#define C_CURSORLEFT "\e[1D"
|
||||
#define C_CURSORRIGHT "\e[1C"
|
||||
#define C_SAVE_CURSORPOS "\e7"
|
||||
#define C_RESTORE_CURSORPOS "\e8"
|
||||
#define C_COLOR_RED "\e[01;31m"
|
||||
#define C_COLOR_YELLOW "\e[00;33m"
|
||||
#define C_COLOR_GREEN "\e[00;32m"
|
||||
#define C_COLOR_BLUE "\e[01;34m"
|
||||
#define C_COLOR_REVERSE "\e[7m"
|
||||
#define C_COLOR_NORMAL "\e[0m"
|
||||
|
||||
//
|
||||
// Get a character code from the keyboard
|
||||
//
|
||||
static inline int getch(bool nonBlocking)
|
||||
{
|
||||
int buf = 0;
|
||||
// old terminal
|
||||
struct termios old = {0};
|
||||
|
||||
// force flush stdout
|
||||
fflush(stdout);
|
||||
|
||||
// Set non-blocking mode if asked
|
||||
if(nonBlocking)
|
||||
fcntl(0, F_SETFL, O_NONBLOCK);
|
||||
|
||||
if(tcgetattr(0, &old) < 0) {
|
||||
printLog("%sError getting terminal settings! (%s)\n",
|
||||
C_COLOR_RED,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
old.c_lflag &= ~ICANON; // disable buffered I/O
|
||||
old.c_lflag &= ~ECHO; // set no echo mode
|
||||
|
||||
if(tcsetattr(0, TCSANOW, &old) < 0) {
|
||||
printLog("%sError setting terminal settings! (%s)\n",
|
||||
C_COLOR_RED,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
buf = getchar();
|
||||
if(buf < 0) {
|
||||
// Check target busy (try again)
|
||||
if(errno == EAGAIN)
|
||||
return 0;
|
||||
|
||||
printLog("%sError reading character! (%s)\n",
|
||||
C_COLOR_RED,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
old.c_lflag |= ICANON; // enable buffered I/O
|
||||
old.c_lflag |= ECHO; // set echo mode
|
||||
|
||||
if(tcsetattr(0, TCSADRAIN, &old) < 0) {
|
||||
printLog("%sError resetting terminal settings! (%s)\n",
|
||||
C_COLOR_RED,
|
||||
strerror(errno));
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Reset blocking mode
|
||||
if(nonBlocking)
|
||||
fcntl(0, F_SETFL, 0);
|
||||
|
||||
return buf;
|
||||
}
|
||||
|
||||
|
||||
int main(void)
|
||||
{
|
||||
|
||||
|
||||
while(1) {
|
||||
int c = getch(1);
|
||||
|
||||
if (c > 0)
|
||||
printf("touche %d\n", c);
|
||||
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
Binary file not shown.
|
@ -0,0 +1,65 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <libxml2/libxml/xmlmemory.h>
|
||||
#include <libxml2/libxml/parser.h>
|
||||
|
||||
void parseStory (xmlDocPtr doc, xmlNodePtr cur)
|
||||
{
|
||||
cur = cur->xmlChildrenNode;
|
||||
while (cur != NULL) {
|
||||
if ((!xmlStrcmp(cur->name, (const xmlChar *)"keyword"))) {
|
||||
printf("keyword: %s\n", xmlNodeListGetString(doc, cur->xmlChildrenNode, 1));
|
||||
}
|
||||
cur = cur->next;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
static void parseDoc(char *docname)
|
||||
{
|
||||
xmlDocPtr doc;
|
||||
xmlNodePtr cur;
|
||||
doc = xmlParseFile(docname);
|
||||
if (doc == NULL ) {
|
||||
fprintf(stderr,"Document not parsed successfully. \n");
|
||||
xmlFreeDoc(doc);
|
||||
return;
|
||||
}
|
||||
|
||||
cur = xmlDocGetRootElement(doc);
|
||||
if (cur == NULL) {
|
||||
fprintf(stderr,"empty document\n");
|
||||
xmlFreeDoc(doc);
|
||||
return;
|
||||
}
|
||||
if (xmlStrcmp(cur->name, (const xmlChar *) "story")) {
|
||||
fprintf(stderr,"document of the wrong type, root node != story");
|
||||
xmlFreeDoc(doc);
|
||||
return;
|
||||
}
|
||||
cur = cur->xmlChildrenNode;
|
||||
while (cur != NULL) {
|
||||
if ((!xmlStrcmp(cur->name, (const xmlChar *)"storyinfo"))){
|
||||
parseStory (doc, cur);
|
||||
}
|
||||
cur = cur->next;
|
||||
}
|
||||
xmlFreeDoc(doc);
|
||||
return;
|
||||
}
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
char *docname;
|
||||
if (argc <= 1) {
|
||||
printf("Usage: %s docname\n", argv[0]);
|
||||
return 1;
|
||||
}
|
||||
|
||||
docname = argv[1];
|
||||
parseDoc (docname);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0"?>
|
||||
<story>
|
||||
<storyinfo>
|
||||
<author>John Fleck</author>
|
||||
<datewritten>June 2, 2002</datewritten>
|
||||
<keyword>example keyword</keyword>
|
||||
|
||||
</storyinfo>
|
||||
<body>
|
||||
<headline>This is the headline</headline>
|
||||
<para>This is the body text.</para>
|
||||
|
||||
</body>
|
||||
|
||||
</story>
|
Loading…
Reference in New Issue