summaryrefslogtreecommitdiffstats
path: root/src/qmode.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/qmode.c')
-rw-r--r--src/qmode.c161
1 files changed, 0 insertions, 161 deletions
diff --git a/src/qmode.c b/src/qmode.c
deleted file mode 100644
index 4ae1128..0000000
--- a/src/qmode.c
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * 0xFFFF - Open Free Fiasco Firmware Flasher
- * Copyright (C) 2008 pancake <pancake@youterm.com>
- * Copyright (C) 2012 Pali Rohár <pali.rohar@gmail.com>
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-#include <signal.h>
-
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <sys/stat.h>
-
-#include "global.h"
-
-#include "qmode.h"
-#include "nolo.h"
-
-#if HAVE_SQUEUE
-
-#include "squeue/squeue.h"
-extern int qmode;
-extern struct squeue_t *p;
-
-#endif
-
-#if HAVE_SQUEUE
-
-struct squeue_t *q;
-struct squeue_t *p;
-
-static int fork_enabled = 0;
-static int dofork()
-{
- if (fork_enabled)
- return fork();
- return 0;
-}
-
-static void process_message(char *msg)
-{
- char *str;
- char *arg;
- int c=1;
- if (msg == NULL)
- return;
- printf("[x] (%s)\n", msg);
- str = strdup(msg);
- arg = strchr(str, ':');
- if (c!=0) {
- arg[0]='\0';
- arg = arg +1;
-/* if (!strcmp(str, "flash")) {
- const char *type = fpid_file(arg);
- if (type == NULL) {
- squeue_push2(p, "error", "Unknown piece format", 1);
- } else flash_image(arg, type, NULL, NULL, NULL);
- } else*/
- if (!strcmp(str, "reset")) {
-// if (reboot_board() == 0) {
-// squeue_push2(p,"info", "Device reboots", 1);
-// } else squeue_push2(p,"error", "Cannot reboot device", 1);
- } else
- if (!strcmp(str, "info")) {
-// get_rd_flags();
-// squeue_push2(p, "info", strbuf, 1);
-// get_nolo_version();
-// squeue_push2(p, "info", strbuf, 1);
-// get_usb_mode();
-// squeue_push2(p, "info", strbuf, 1);
- } else
- squeue_push2(p, "error", "invalid command", 0);
- } else {
- squeue_push2(p, "error", "invalid command format", 0);
- }
- free(str);
-}
-
-static void cc(int signum)
-{
- squeue_close(p);
- squeue_close(q);
- printf("pipes closed\n");
- squeue_release("/tmp/0xFFFF.1");
- squeue_release("/tmp/0xFFFF.2");
- exit(1);
-}
-
-int queue_mode(void)
-{
- int pid = 0;
- char *msg;
-
- signal(SIGINT, cc);
-
- pid = dofork();
- if (pid) {
- wait(&pid);
- return 0;
- } else {
- p = squeue_open("/tmp/0xFFFF.1", Q_CREAT);
- q = squeue_open("/tmp/0xFFFF.2", Q_CREAT);
- if (p == NULL || q == NULL) {
- fprintf(stderr, "Cannot open queue files\n");
- return 0;
- }
- chmod("/tmp/0xFFFF.1", 0666);
- chmod("/tmp/0xFFFF.2", 0666);
- pid = dofork();
- if (pid) {
- printf( "Entering into shared queue server mode.\n"
- "Type $ kill -9 %d # to stop\n"
- "NOTE: Manually remove the /tmp/.0xFFFF.* files to solve perm problems\n", pid);
- } else {
- do {
-#if HAVE_USB
-/* if (connect_via_usb()) {
- fprintf(stderr, "Cannot connect to device. It is possibly not in boot stage.\n");
- squeue_push2(p, "error", "Cannot connect to the device", 1);
- return 0;
- }*/
-#endif
- printf("Waiting for a client in shared queues..\n");
- setsid();
- while(1) {
- msg = squeue_get(q, 1);
- if (msg) {
- process_message(msg);
- squeue_pop(q);
- }
- }
- printf("Connection restarted\n");
- } while (1);
- }
- }
- return 0;
-}
-#else
-int queue_mode(void)
-{
- /* dummy */
- fprintf(stderr, "No HAVE_SQUEUE support\n");
- return 1;
-}
-#endif