summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--INSTALL17
-rw-r--r--Makefile.am2
-rw-r--r--ao-tools/Makefile.am2
-rw-r--r--ao-tools/ao-view/.gitignore (renamed from ao-view/.gitignore)0
-rw-r--r--ao-tools/ao-view/Makefile.am (renamed from ao-view/Makefile.am)8
-rw-r--r--ao-tools/ao-view/ao-view.1 (renamed from ao-view/ao-view.1)0
-rw-r--r--ao-tools/ao-view/aoview.glade (renamed from ao-view/aoview.glade)0
-rw-r--r--ao-tools/ao-view/aoview.h (renamed from ao-view/aoview.h)18
-rw-r--r--ao-tools/ao-view/aoview_convert.c (renamed from ao-view/aoview_convert.c)0
-rw-r--r--ao-tools/ao-view/aoview_dev_dialog.c (renamed from ao-view/aoview_dev_dialog.c)23
-rw-r--r--ao-tools/ao-view/aoview_eeprom.c (renamed from ao-view/aoview_eeprom.c)0
-rw-r--r--ao-tools/ao-view/aoview_file.c (renamed from ao-view/aoview_file.c)0
-rw-r--r--ao-tools/ao-view/aoview_flite.c (renamed from ao-view/aoview_flite.c)0
-rw-r--r--ao-tools/ao-view/aoview_label.c (renamed from ao-view/aoview_label.c)0
-rw-r--r--ao-tools/ao-view/aoview_log.c (renamed from ao-view/aoview_log.c)0
-rw-r--r--ao-tools/ao-view/aoview_main.c (renamed from ao-view/aoview_main.c)0
-rw-r--r--ao-tools/ao-view/aoview_monitor.c (renamed from ao-view/aoview_monitor.c)0
-rw-r--r--ao-tools/ao-view/aoview_replay.c (renamed from ao-view/aoview_replay.c)0
-rw-r--r--ao-tools/ao-view/aoview_serial.c (renamed from ao-view/aoview_serial.c)0
-rw-r--r--ao-tools/ao-view/aoview_state.c (renamed from ao-view/aoview_state.c)0
-rw-r--r--ao-tools/ao-view/aoview_table.c (renamed from ao-view/aoview_table.c)0
-rw-r--r--ao-tools/ao-view/aoview_util.c (renamed from ao-view/aoview_util.c)0
-rw-r--r--ao-tools/ao-view/aoview_voice.c (renamed from ao-view/aoview_voice.c)0
-rw-r--r--ao-tools/ao-view/design (renamed from ao-view/design)0
-rw-r--r--ao-tools/lib/Makefile.am3
-rw-r--r--ao-tools/lib/cc-usbdev.c (renamed from ao-view/aoview_dev.c)78
-rw-r--r--ao-tools/lib/cc-util.c80
-rw-r--r--ao-tools/lib/cc.h51
-rw-r--r--configure.ac2
29 files changed, 221 insertions, 63 deletions
diff --git a/INSTALL b/INSTALL
index 8b82ade0..2550dab7 100644
--- a/INSTALL
+++ b/INSTALL
@@ -2,7 +2,7 @@ Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
-2006, 2007, 2008 Free Software Foundation, Inc.
+2006, 2007, 2008, 2009 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
@@ -159,7 +159,7 @@ Particular systems
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
- ./configure CC="cc -Ae"
+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
@@ -174,6 +174,16 @@ and if that doesn't work, try
./configure CC="cc -nodtk"
+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This
+directory contains several dysfunctional programs; working variants of
+these programs are available in `/usr/bin'. So, if you need `/usr/ucb'
+in your `PATH', put it _after_ `/usr/bin'.
+
+ On Haiku, software installed for all users goes in `/boot/common',
+not `/usr/local'. It is recommended to use the following options:
+
+ ./configure --prefix=/boot/common
+
Specifying the System Type
==========================
@@ -189,7 +199,8 @@ type, such as `sun4', or a canonical name which has the form:
where SYSTEM can have one of these forms:
- OS KERNEL-OS
+ OS
+ KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
diff --git a/Makefile.am b/Makefile.am
index 96b9dea9..39e7c244 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS=src ao-view ao-tools ao-utils
+SUBDIRS=src ao-tools ao-utils
EXTRA_DIST = ChangeLog
diff --git a/ao-tools/Makefile.am b/ao-tools/Makefile.am
index 98b88f38..02b4785e 100644
--- a/ao-tools/Makefile.am
+++ b/ao-tools/Makefile.am
@@ -1 +1 @@
-SUBDIRS=lib ao-rawload ao-dbg ao-bitbang ao-eeprom ao-load
+SUBDIRS=lib ao-rawload ao-dbg ao-bitbang ao-eeprom ao-load ao-view
diff --git a/ao-view/.gitignore b/ao-tools/ao-view/.gitignore
index 24fbc596..24fbc596 100644
--- a/ao-view/.gitignore
+++ b/ao-tools/ao-view/.gitignore
diff --git a/ao-view/Makefile.am b/ao-tools/ao-view/Makefile.am
index 17661c8e..7b274a40 100644
--- a/ao-view/Makefile.am
+++ b/ao-tools/ao-view/Makefile.am
@@ -1,14 +1,16 @@
VERSION=$(shell git describe)
-AM_CFLAGS=$(GNOME_CFLAGS) $(ALSA_CFLAGS) -I$(top_srcdir)/src -DAOVIEW_VERSION=\"$(VERSION)\" @FLITE_INCS@
+AO_VIEW_CFLAGS=-I$(top_srcdir)/ao-tools/lib
+AO_VIEW_LIBS=$(top_builddir)/ao-tools/lib/libao-tools.a
+AM_CFLAGS=$(AO_VIEW_CFLAGS) $(GNOME_CFLAGS) $(ALSA_CFLAGS) -I$(top_srcdir)/src -DAOVIEW_VERSION=\"$(VERSION)\" @FLITE_INCS@
bin_PROGRAMS=ao-view
-ao_view_LDADD=$(GNOME_LIBS) $(FLITE_LIBS) $(ALSA_LIBS)
+ao_view_DEPENDENCIES=$(AO_VIEW_LIBS)
+ao_view_LDADD=$(GNOME_LIBS) $(FLITE_LIBS) $(ALSA_LIBS) $(AO_VIEW_LIBS) $(LIBUSB_LIBS)
ao_view_SOURCES = \
aoview_main.c \
- aoview_dev.c \
aoview_dev_dialog.c \
aoview_serial.c \
aoview_monitor.c \
diff --git a/ao-view/ao-view.1 b/ao-tools/ao-view/ao-view.1
index 99834c4e..99834c4e 100644
--- a/ao-view/ao-view.1
+++ b/ao-tools/ao-view/ao-view.1
diff --git a/ao-view/aoview.glade b/ao-tools/ao-view/aoview.glade
index 9a746110..9a746110 100644
--- a/ao-view/aoview.glade
+++ b/ao-tools/ao-view/aoview.glade
diff --git a/ao-view/aoview.h b/ao-tools/ao-view/aoview.h
index 9ca65298..6a4753ac 100644
--- a/ao-view/aoview.h
+++ b/ao-tools/ao-view/aoview.h
@@ -37,20 +37,12 @@
#include <assert.h>
#include <math.h>
+#include "cc.h"
+
#include <gtk/gtk.h>
#include <glade/glade.h>
#include <gconf/gconf-client.h>
-struct usbdev {
- char *sys;
- char *tty;
- char *manufacturer;
- char *product;
- char *serial;
- int idProduct;
- int idVendor;
-};
-
struct aogps_time {
int hour;
int minute;
@@ -203,12 +195,6 @@ aoview_serial_getc(struct aoview_serial *serial);
void
aoview_dev_dialog_init(GladeXML *xml);
-int
-aoview_usb_scan(struct usbdev ***devs_ret);
-
-void
-aoview_usbdev_free(struct usbdev *usbdev);
-
void
aoview_state_notify(struct aodata *data);
diff --git a/ao-view/aoview_convert.c b/ao-tools/ao-view/aoview_convert.c
index 02416647..02416647 100644
--- a/ao-view/aoview_convert.c
+++ b/ao-tools/ao-view/aoview_convert.c
diff --git a/ao-view/aoview_dev_dialog.c b/ao-tools/ao-view/aoview_dev_dialog.c
index 3f92085c..87396c1f 100644
--- a/ao-view/aoview_dev_dialog.c
+++ b/ao-tools/ao-view/aoview_dev_dialog.c
@@ -24,25 +24,30 @@ aoview_dev_dialog_map(GtkWidget *widget, gpointer data)
GtkListStore *list_store;
GtkTreeIter iter;
int ndev, n;
- struct usbdev **devs;
+ struct cc_usbdevs *devs;
+ struct cc_usbdev *dev;
list_store = gtk_list_store_new(3,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING);
- ndev = aoview_usb_scan(&devs);
- for (n = 0; n < ndev; n++) {
- gtk_list_store_append(list_store, &iter);
- gtk_list_store_set(list_store, &iter,
- 0, devs[n]->product,
- 1, devs[n]->serial,
- 2, devs[n]->tty,
- -1);
+ devs = cc_usbdevs_scan();
+ if (devs) {
+ for (n = 0; n < devs->ndev; n++) {
+ dev = devs->dev[n];
+ gtk_list_store_append(list_store, &iter);
+ gtk_list_store_set(list_store, &iter,
+ 0, dev->product,
+ 1, dev->serial,
+ 2, dev->tty,
+ -1);
+ }
}
gtk_tree_view_set_model (dev_list, GTK_TREE_MODEL(list_store));
g_object_unref(G_OBJECT(list_store));
gtk_tree_view_columns_autosize(dev_list);
+ cc_usbdevs_free(devs);
}
static GtkMessageDialog *dev_open_fail_dialog;
diff --git a/ao-view/aoview_eeprom.c b/ao-tools/ao-view/aoview_eeprom.c
index 34e2deed..34e2deed 100644
--- a/ao-view/aoview_eeprom.c
+++ b/ao-tools/ao-view/aoview_eeprom.c
diff --git a/ao-view/aoview_file.c b/ao-tools/ao-view/aoview_file.c
index 5288c2f7..5288c2f7 100644
--- a/ao-view/aoview_file.c
+++ b/ao-tools/ao-view/aoview_file.c
diff --git a/ao-view/aoview_flite.c b/ao-tools/ao-view/aoview_flite.c
index e1b75898..e1b75898 100644
--- a/ao-view/aoview_flite.c
+++ b/ao-tools/ao-view/aoview_flite.c
diff --git a/ao-view/aoview_label.c b/ao-tools/ao-view/aoview_label.c
index 24313626..24313626 100644
--- a/ao-view/aoview_label.c
+++ b/ao-tools/ao-view/aoview_label.c
diff --git a/ao-view/aoview_log.c b/ao-tools/ao-view/aoview_log.c
index 1b89c28c..1b89c28c 100644
--- a/ao-view/aoview_log.c
+++ b/ao-tools/ao-view/aoview_log.c
diff --git a/ao-view/aoview_main.c b/ao-tools/ao-view/aoview_main.c
index 64c1c027..64c1c027 100644
--- a/ao-view/aoview_main.c
+++ b/ao-tools/ao-view/aoview_main.c
diff --git a/ao-view/aoview_monitor.c b/ao-tools/ao-view/aoview_monitor.c
index 8564014b..8564014b 100644
--- a/ao-view/aoview_monitor.c
+++ b/ao-tools/ao-view/aoview_monitor.c
diff --git a/ao-view/aoview_replay.c b/ao-tools/ao-view/aoview_replay.c
index da7b5d6a..da7b5d6a 100644
--- a/ao-view/aoview_replay.c
+++ b/ao-tools/ao-view/aoview_replay.c
diff --git a/ao-view/aoview_serial.c b/ao-tools/ao-view/aoview_serial.c
index 29038b79..29038b79 100644
--- a/ao-view/aoview_serial.c
+++ b/ao-tools/ao-view/aoview_serial.c
diff --git a/ao-view/aoview_state.c b/ao-tools/ao-view/aoview_state.c
index f75066dd..f75066dd 100644
--- a/ao-view/aoview_state.c
+++ b/ao-tools/ao-view/aoview_state.c
diff --git a/ao-view/aoview_table.c b/ao-tools/ao-view/aoview_table.c
index e75ae670..e75ae670 100644
--- a/ao-view/aoview_table.c
+++ b/ao-tools/ao-view/aoview_table.c
diff --git a/ao-view/aoview_util.c b/ao-tools/ao-view/aoview_util.c
index 6ea62ac9..6ea62ac9 100644
--- a/ao-view/aoview_util.c
+++ b/ao-tools/ao-view/aoview_util.c
diff --git a/ao-view/aoview_voice.c b/ao-tools/ao-view/aoview_voice.c
index 24422df6..24422df6 100644
--- a/ao-view/aoview_voice.c
+++ b/ao-tools/ao-view/aoview_voice.c
diff --git a/ao-view/design b/ao-tools/ao-view/design
index 6ec2ea70..6ec2ea70 100644
--- a/ao-view/design
+++ b/ao-tools/ao-view/design
diff --git a/ao-tools/lib/Makefile.am b/ao-tools/lib/Makefile.am
index 9584e216..f66ee0a9 100644
--- a/ao-tools/lib/Makefile.am
+++ b/ao-tools/lib/Makefile.am
@@ -16,6 +16,9 @@ libao_tools_a_SOURCES = \
ccdbg-state.c \
cc-usb.c \
cc-usb.h \
+ cc.h \
+ cc-usbdev.c \
+ cc-util.c \
cc-bitbang.c \
cc-bitbang.h \
cp-usb-async.c \
diff --git a/ao-view/aoview_dev.c b/ao-tools/lib/cc-usbdev.c
index 9b8cc19e..d8bb8b11 100644
--- a/ao-view/aoview_dev.c
+++ b/ao-tools/lib/cc-usbdev.c
@@ -3,7 +3,8 @@
*
* 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; version 2 of the License.
+ * the Free Software Foundation; either version 2 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
@@ -15,14 +16,18 @@
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-#include "aoview.h"
+#include "cc.h"
+
#include <ctype.h>
#include <dirent.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
static char *
load_string(char *dir, char *file)
{
- char *full = aoview_fullname(dir, file);
+ char *full = cc_fullname(dir, file);
char line[4096];
char *r;
FILE *f;
@@ -86,14 +91,14 @@ usb_tty(char *sys)
int ntty;
char *tty;
- base = aoview_basename(sys);
+ base = cc_basename(sys);
num_configs = load_hex(sys, "bNumConfigurations");
num_interfaces = load_hex(sys, "bNumInterfaces");
for (config = 1; config <= num_configs; config++) {
for (interface = 0; interface < num_interfaces; interface++) {
sprintf(endpoint_base, "%s:%d.%d",
base, config, interface);
- endpoint_full = aoview_fullname(sys, endpoint_base);
+ endpoint_full = cc_fullname(sys, endpoint_base);
/* Check for tty:ttyACMx style names
*/
@@ -102,21 +107,21 @@ usb_tty(char *sys)
alphasort);
if (ntty > 0) {
free(endpoint_full);
- tty = aoview_fullname("/dev", namelist[0]->d_name + 4);
+ tty = cc_fullname("/dev", namelist[0]->d_name + 4);
free(namelist);
return tty;
}
/* Check for tty/ttyACMx style names
*/
- tty_dir = aoview_fullname(endpoint_full, "tty");
+ tty_dir = cc_fullname(endpoint_full, "tty");
free(endpoint_full);
ntty = scandir(tty_dir, &namelist,
dir_filter_tty,
alphasort);
free (tty_dir);
if (ntty > 0) {
- tty = aoview_fullname("/dev", namelist[0]->d_name);
+ tty = cc_fullname("/dev", namelist[0]->d_name);
free(namelist);
return tty;
}
@@ -125,12 +130,12 @@ usb_tty(char *sys)
return NULL;
}
-static struct usbdev *
+static struct cc_usbdev *
usb_scan_device(char *sys)
{
- struct usbdev *usbdev;
+ struct cc_usbdev *usbdev;
- usbdev = calloc(1, sizeof (struct usbdev));
+ usbdev = calloc(1, sizeof (struct cc_usbdev));
if (!usbdev)
return NULL;
usbdev->sys = strdup(sys);
@@ -143,8 +148,8 @@ usb_scan_device(char *sys)
return usbdev;
}
-void
-aoview_usbdev_free(struct usbdev *usbdev)
+static void
+usbdev_free(struct cc_usbdev *usbdev)
{
free(usbdev->sys);
free(usbdev->manufacturer);
@@ -174,16 +179,19 @@ dir_filter_dev(const struct dirent *d)
return 1;
}
-int
-aoview_usb_scan(struct usbdev ***devs_ret)
+struct cc_usbdevs *
+cc_usbdevs_scan(void)
{
- int n;
- int ndev = 0;
- int e;
- struct dirent **ents;
- char *dir;
- struct usbdev **devs = NULL;
- struct usbdev *dev;
+ int e;
+ struct dirent **ents;
+ char *dir;
+ struct cc_usbdev *dev;
+ struct cc_usbdevs *devs;
+ int n;
+
+ devs = calloc(1, sizeof (struct cc_usbdevs));
+ if (!devs)
+ return NULL;
n = scandir (USB_DEVICES, &ents,
dir_filter_dev,
@@ -191,18 +199,30 @@ aoview_usb_scan(struct usbdev ***devs_ret)
if (!n)
return 0;
for (e = 0; e < n; e++) {
- dir = aoview_fullname(USB_DEVICES, ents[e]->d_name);
+ dir = cc_fullname(USB_DEVICES, ents[e]->d_name);
dev = usb_scan_device(dir);
free(dir);
if (dev->idVendor == 0xfffe && dev->tty) {
- if (devs)
- devs = realloc(devs, ndev + 1 * sizeof (struct usbdev *));
+ if (devs->dev)
+ devs->dev = realloc(devs->dev,
+ devs->ndev + 1 * sizeof (struct usbdev *));
else
- devs = malloc (sizeof (struct usbdev *));
- devs[ndev++] = dev;
+ devs->dev = malloc (sizeof (struct usbdev *));
+ devs->dev[devs->ndev++] = dev;
}
}
free(ents);
- *devs_ret = devs;
- return ndev;
+ return devs;
+}
+
+void
+cc_usbdevs_free(struct cc_usbdevs *usbdevs)
+{
+ int i;
+
+ if (!usbdevs)
+ return;
+ for (i = 0; i < usbdevs->ndev; i++)
+ usbdev_free(usbdevs->dev[i]);
+ free(usbdevs);
}
diff --git a/ao-tools/lib/cc-util.c b/ao-tools/lib/cc-util.c
new file mode 100644
index 00000000..7104470c
--- /dev/null
+++ b/ao-tools/lib/cc-util.c
@@ -0,0 +1,80 @@
+/*
+ * Copyright © 2009 Keith Packard <keithp@keithp.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; version 2 of the License.
+ *
+ * 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, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+#include "cc.h"
+#define _GNU_SOURCE
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <errno.h>
+
+char *
+cc_fullname (char *dir, char *file)
+{
+ char *new;
+ int dlen = strlen (dir);
+ int flen = strlen (file);
+ int slen = 0;
+
+ if (dir[dlen-1] != '/')
+ slen = 1;
+ new = malloc (dlen + slen + flen + 1);
+ if (!new)
+ return 0;
+ strcpy(new, dir);
+ if (slen)
+ strcat (new, "/");
+ strcat(new, file);
+ return new;
+}
+
+char *
+cc_basename(char *file)
+{
+ char *b;
+
+ b = strrchr(file, '/');
+ if (!b)
+ return file;
+ return b + 1;
+}
+
+int
+cc_mkdir(char *dir)
+{
+ char *slash;
+ char *d;
+ char *part;
+
+ d = dir;
+ for (;;) {
+ slash = strchr (d, '/');
+ if (!slash)
+ slash = d + strlen(d);
+ if (!*slash)
+ break;
+ part = strndup(dir, slash - dir);
+ if (!access(part, F_OK))
+ if (mkdir(part, 0777) < 0)
+ return -errno;
+ free(part);
+ d = slash + 1;
+ }
+ return 0;
+}
diff --git a/ao-tools/lib/cc.h b/ao-tools/lib/cc.h
new file mode 100644
index 00000000..dad11bf3
--- /dev/null
+++ b/ao-tools/lib/cc.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright © 2009 Keith Packard <keithp@keithp.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; version 2 of the License.
+ *
+ * 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, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+#ifndef _CC_H_
+#define _CC_H_
+
+char *
+cc_fullname (char *dir, char *file);
+
+char *
+cc_basename(char *file);
+
+int
+cc_mkdir(char *dir);
+
+struct cc_usbdev {
+ char *sys;
+ char *tty;
+ char *manufacturer;
+ char *product;
+ char *serial;
+ int idProduct;
+ int idVendor;
+};
+
+struct cc_usbdevs {
+ struct cc_usbdev **dev;
+ int ndev;
+};
+
+void
+cc_usbdevs_free(struct cc_usbdevs *usbdevs);
+
+struct cc_usbdevs *
+cc_usbdevs_scan(void);
+
+#endif /* _CC_H_ */
diff --git a/configure.ac b/configure.ac
index b52bb6e9..dfbae71d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -73,7 +73,6 @@ PKG_CHECK_MODULES([ALSA], [alsa])
AC_OUTPUT([
Makefile
-ao-view/Makefile
ao-tools/Makefile
ao-tools/lib/Makefile
ao-tools/ao-rawload/Makefile
@@ -81,5 +80,6 @@ ao-tools/ao-dbg/Makefile
ao-tools/ao-bitbang/Makefile
ao-tools/ao-eeprom/Makefile
ao-tools/ao-load/Makefile
+ao-tools/ao-view/Makefile
ao-utils/Makefile
])