return -ENOENT;
}
-#define FIFO_FILE1 "MYFIFOin"
-#define FIFO_FILE2 "MYFIFOout"
+#define FIFO_FILE1 "/tmp/MYFIFOin"
+#define FIFO_FILE2 "/tmp/MYFIFOout"
#define MAXLINE 5000
+int first;
int closeprog = 0;
void sigfunc(int sig)
if(sig != SIGINT || sig != SIGTERM || sig != SIGKILL)
return;
else
- {
- closeprog = 1;
- }
+ {
+ closeprog = 1;
+ if (first == 1)
+ {
+ unlink(FIFO_FILE1);
+ unlink(FIFO_FILE2);
+ }
+ }
}
{
struct stat st;
int erg;
- int first;
+
+ int fd[2];
FILE *fpin;
FILE *fpout;
pid_t pid;
- signal(SIGINT,sigfunc);
- signal(SIGTERM,sigfunc);
- signal(SIGKILL,sigfunc);
+
//make the fifos if needed
if (stat(FIFO_FILE1, &st) != 0)
{
- if (stat(FIFO_FILE2, &st) != 0)
+ if (stat(FIFO_FILE2, &st) == 0)
{
perror("FIFO 2 exists, but FIFO 1 not");
exit(1);
else
{
first = 0;
- if (stat(FIFO_FILE2, &st) == 0)
+ if (stat(FIFO_FILE2, &st) != 0)
{
perror("FIFO 1 exists, but FIFO 2 not");
exit(1);
// fork
+ fd[0] = STDIN_FILENO;
+ fd[1] = STDOUT_FILENO;
+
if ((pid = fork()) < 0)
{
perror("FORK ERROR");
}
else if (pid == 0) // CHILD PROCESS
{
+
+ signal(SIGINT, sigfunc);
+ signal(SIGTERM, sigfunc);
+ signal(SIGKILL, sigfunc);
int rv = 0;
int readc = 0;
int pos = 0;
readc = 0;
while (readc < sizeof( struct RadiotapHeader) + sizeof(struct GNUNET_MessageHeader)){
- if ((rv = read(STDIN_FILENO, line, MAXLINE)) < 0)
+ if ((rv = read(fd[0], line, MAXLINE)) < 0)
{
perror("READ ERROR FROM STDIN");
}
}
else // PARENT PROCESS
{
+ signal(SIGINT, sigfunc);
+ signal(SIGTERM, sigfunc);
+ signal(SIGKILL, sigfunc);
int rv = 0;
ssize_t pos = 0;
char line[MAXLINE];
struct Wlan_Helper_Control_Message macmsg;
-
//Send random mac address
macmsg.mac.mac[0] = 0x13;
macmsg.mac.mac[1] = 0x22;
pos = 0;
while (pos < sizeof(struct Wlan_Helper_Control_Message))
{
- pos += write(STDOUT_FILENO, &macmsg + pos, sizeof(struct Wlan_Helper_Control_Message) - pos);
+ pos += write(fd[1], &macmsg + pos, sizeof(struct Wlan_Helper_Control_Message) - pos);
}
while (closeprog == 0)
pos = 0;
while (pos < rv)
{
- pos += write(STDOUT_FILENO, &line[pos], rv - pos);
+ pos += write(fd[1], &line[pos], rv - pos);
}
}
else\r
{\r
closeprog = 1;\r
+ exit(0);\r
}\r
}\r
\r
int\r
main(int argc, char *argv[])\r
{\r
- struct stat st,st2;\r
+ struct stat st;\r
+ struct stat st2;\r
int erg;\r
int first;\r
FILE *fpin;\r
FILE *fpout;\r
pid_t pid;\r
\r
- signal(SIGINT,sigfunc);\r
- signal(SIGTERM,sigfunc);\r
- signal(SIGKILL,sigfunc);\r
+ perror("Test");\r
+\r
\r
//make the fifos if needed\r
if (stat(FIFO_FILE1, &st) != 0)\r
{\r
- if (stat(FIFO_FILE2, &st2) != 0)\r
+ if (stat(FIFO_FILE2, &st2) == 0)\r
{\r
- perror("FIFO 2 exists, but FIFO 1 not");\r
+ perror("FIFO 2 exists, but FIFO 1 not, blub");\r
exit(1);\r
}\r
first = 1;\r
+ perror("First");\r
umask(0);\r
erg = mknod(FIFO_FILE1, S_IFIFO | 0666, 0);\r
erg = mknod(FIFO_FILE2, S_IFIFO | 0666, 0);\r
else\r
{\r
first = 0;\r
- if (stat(FIFO_FILE2, &st2) == 0)\r
+ perror("Second");\r
+ if (stat(FIFO_FILE2, &st2) != 0)\r
{\r
- perror("FIFO 1 exists, but FIFO 2 not");\r
+ perror("FIFO 1 exists, but FIFO 2 not, mäh");\r
exit(1);\r
}\r
if ((fpout = fopen(FIFO_FILE1, "w")) == NULL)\r
}\r
else if (pid == 0) // CHILD PROCESS\r
{\r
+ perror("Child");\r
+ signal(SIGINT, sigfunc);\r
+ signal(SIGTERM, sigfunc);\r
+ signal(SIGKILL, sigfunc);\r
int rv = 0;\r
int readc = 0;\r
int pos = 0;\r
\r
pos = 0;\r
\r
- fwrite(&line[pos], 1, sizeof(struct GNUNET_MessageHeader), fpout);\r
+ //fwrite(&line[pos], 1, sizeof(struct GNUNET_MessageHeader), fpout);\r
\r
- pos += sizeof(struct GNUNET_MessageHeader);\r
+ //pos += sizeof(struct GNUNET_MessageHeader);\r
\r
//do not send radiotap header\r
pos += sizeof( struct RadiotapHeader);\r
}\r
else // PARENT PROCESS\r
{\r
+ perror("Parent");\r
+ signal(SIGINT, sigfunc);\r
+ signal(SIGTERM, sigfunc);\r
+ signal(SIGKILL, sigfunc);\r
int rv = 0;\r
ssize_t pos = 0;\r
char line[MAXLINE];\r
macmsg.hdr.size = sizeof(struct Wlan_Helper_Control_Message);\r
\r
pos = 0;\r
+ /*\r
while (pos < sizeof(struct Wlan_Helper_Control_Message))\r
{\r
pos += write(STDOUT_FILENO, &macmsg + pos, sizeof(struct Wlan_Helper_Control_Message) - pos);\r
}\r
-\r
+ */\r
while (closeprog == 0)\r
{\r
if ((rv = fread(line, 1, MAXLINE, fpin)) < 0)\r