petitboot
6 years agodiscover: Remove empty routine udev_trigger
Geoff Levand [Sun, 28 Apr 2013 19:17:58 +0000 (12:17 -0700)]
discover: Remove empty routine udev_trigger

With the switch of the discover server to use the libudev
enumeration support the udev_trigger() routine has becone
empty and is no longer needed.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: Update udev routines to use libudev
Geoff Levand [Mon, 22 Apr 2013 05:20:14 +0000 (22:20 -0700)]
discover: Update udev routines to use libudev

Support for 'RUN+="socket:' in udev rules files has been removed
in udev version 183.  Update the discover server to use libudev.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: Rename struct udev to struct pb_udev
Geoff Levand [Sun, 21 Apr 2013 18:47:20 +0000 (11:47 -0700)]
discover: Rename struct udev to struct pb_udev

To avoid symbol clashes with libudev, rename struct udev to
struct pb_udev.  No functional changes.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest/lib: Add empty list test
Jeremy Kerr [Wed, 1 May 2013 05:11:17 +0000 (13:11 +0800)]
test/lib: Add empty list test

Check that the list iterators work on empty lists too.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agolib/list: Fix handling of empty lists
Jeremy Kerr [Wed, 1 May 2013 05:11:17 +0000 (13:11 +0800)]
lib/list: Fix handling of empty lists

The current list_for_each_entry_safe marco SEGVs on empty lists; the
list_entry will give us a NULL tmp on the first iteration.

This change removes the use of list_entry, as we're effectively
by-passing its NULL return semantics with our own.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: Add PXE parser
Jeremy Kerr [Tue, 19 Mar 2013 07:42:51 +0000 (15:42 +0800)]
discover: Add PXE parser

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add configuration events & DHCP handler
Jeremy Kerr [Tue, 19 Mar 2013 06:24:57 +0000 (14:24 +0800)]
discover: Add configuration events & DHCP handler

This change adds a new event type, EVENT_ACTION_CONF. These events
supply a new configuration URL that petitiboot should download and
parse.

With this in place, we can receive DHCP configuration events.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add configuration methods
Jeremy Kerr [Tue, 19 Mar 2013 06:00:53 +0000 (14:00 +0800)]
discover: Add configuration methods

We'd like to be able to download petitboot configurations from other
sources (not just local files), but we'll need some way to indicate to
the parsers that a chunk of config data is from a specific source.

This change adds "configuration methods". At present, we have only one:
CONF_METHOD_LOCAL_FILE. For any incoming configuration data, we only run
parsers that have registered themselves with that configuration method.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoparsers: dynamically register parsers
Jeremy Kerr [Mon, 18 Mar 2013 06:23:23 +0000 (14:23 +0800)]
parsers: dynamically register parsers

Currently, we require all parsers to be defined in an array in
parsers.c.

This change removes this requirement, by introducting a
register_parser() macro, which adds a constructor to register the parser
with the core parser infrastructure.

Because each parser no longer resolves an undefined symbol, we need to
use a `ld -r` object for libparser, instead of using libtool, which
creates a .a (and hence has no parsers included).

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Handle unresolved resources
Jeremy Kerr [Fri, 15 Mar 2013 08:13:32 +0000 (16:13 +0800)]
discover: Handle unresolved resources

This change adds an unresolved resource queue - any unresolved resources
discovered by parsers are added to this queue rather than being reported
to the clients.

When we discover a new device, we try to resolve any resources in the
queue against the new device. If resolution succeeds, we can send the
option to clients.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Finalise boot options during commit
Jeremy Kerr [Fri, 15 Mar 2013 07:33:39 +0000 (15:33 +0800)]
discover: Finalise boot options during commit

Once the discover context is committed, we need to turn the resources in
struct discover_boot_option into strings in struct boot_option, so that
the parser can display & edit the boot option.

This may cause assertions if any of the boot options contain unresolved
resources, we'll fix this in the next patch.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover/device-handler: Initialise existing_device variable
Jeremy Kerr [Tue, 19 Mar 2013 07:38:57 +0000 (15:38 +0800)]
discover/device-handler: Initialise existing_device variable

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Change parsers to emit resources rather than filenames
Jeremy Kerr [Tue, 16 Apr 2013 08:58:18 +0000 (16:58 +0800)]
discover: Change parsers to emit resources rather than filenames

This change switches the parsers over to populate the resources in
discover_boot_option, rather than the string parameters in boot_option.

To do this, we need a few things:

 * Add struct resources to discover_boot_option for the boot_image,
   initrd and icon data.

 * Have the parsers populate the resources, rather than the strings.
   Currently, parsers can all use the devpath resource type.

 * Add a resolve_resource callback to parsers; this is how the device
   handler will attempt to resolve resources.

 * Change load_file to load_url, as we should be only accessing
   (resolved) resources by URLs.

This then allows us to remove the mount map, and associated lookup code,
as well as the UUID and label links to devices.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add URL resources
Jeremy Kerr [Tue, 16 Apr 2013 07:57:43 +0000 (15:57 +0800)]
discover: Add URL resources

URL resources are simple: the URLs are already resolved, so not much to
do here.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add devpath resources
Jeremy Kerr [Tue, 16 Apr 2013 07:54:13 +0000 (15:54 +0800)]
discover: Add devpath resources

Add a generic resource type, to handle "dev:path"-style file references.

This creates a duplicate of is_prefix_ignorecase, which we'll switch
over to later.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add struct resource
Jeremy Kerr [Thu, 14 Mar 2013 07:55:55 +0000 (15:55 +0800)]
discover: Add struct resource

Introduce a new type, struct resource, for handling resources such as
kernels and initrds.

This allows the parsers to better describe resources that are required
for booting. Firstly, we enforce all resources to be URLs, rather than
local paths. Also, resources allow us to describe files devices that
have not-yet been hotplugged.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Introduce a container type for boot options
Jeremy Kerr [Thu, 14 Mar 2013 06:18:54 +0000 (14:18 +0800)]
discover: Introduce a container type for boot options

This change introduces a new type, struct discover_boot_option. Like
struct discover_device adds discover-specific data to struct device,
struct discover_boot_option allows the discover server to store more
than just the boot option strings for a boot option.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add device lookup functions
Jeremy Kerr [Thu, 28 Feb 2013 09:16:57 +0000 (17:16 +0800)]
discover: Add device lookup functions

Add a few functions to find devices by various attributes:

 * device_lookup_by_name
 * device_lookup_by_path
 * device_lookup_by_uuid
 * device_lookup_by_label
 * device_lookup_by_id

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Add uuid and label parameters to persistent device data
Jeremy Kerr [Thu, 28 Feb 2013 09:05:06 +0000 (17:05 +0800)]
discover: Add uuid and label parameters to persistent device data

Rather than depending on the event (which is only available during
inital discovery) for UUID and label parameters, this change adds uuid
and label members to struct discover_device.

This means that the label and UUID are available during the device's
lifetime, not just during initial discovery. We can also just pass the
device to some of the device handling code, rather than the discover
context.

Also, fix an issue where we don't use the raw label/uuid (instead of the
encoded one) in setup_device_links.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoparsers: change parser.parse to accept a buffer
Jeremy Kerr [Tue, 12 Mar 2013 08:13:55 +0000 (16:13 +0800)]
parsers: change parser.parse to accept a buffer

Rather than having each of the parsers do their own open(), read(), etc,
use the registered filenames array to find & open parser conf files.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoparsers: Add filenames to struct parser
Jeremy Kerr [Tue, 12 Mar 2013 07:30:41 +0000 (15:30 +0800)]
parsers: Add filenames to struct parser

In preparation of moving file handling to the discover core (rather than
the parsers), include the conf file names in struct parser.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agolib/url: Add pb_join_url
Jeremy Kerr [Mon, 18 Mar 2013 08:48:19 +0000 (16:48 +0800)]
lib/url: Add pb_join_url

Add a a function to join a string to a base URL

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodevice-handler: Don't unmount non-mounted devices
Jeremy Kerr [Tue, 12 Mar 2013 03:35:31 +0000 (11:35 +0800)]
device-handler: Don't unmount non-mounted devices

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agotest/lib: Hook into `make check`
Jeremy Kerr [Mon, 29 Apr 2013 02:44:53 +0000 (12:44 +1000)]
test/lib: Hook into `make check`

This change hooks the new list tests into 'make check'. To do this, we
need to fix the return code of the list-test program.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Fix potentially-unused var warning
Jeremy Kerr [Tue, 16 Apr 2013 08:07:33 +0000 (16:07 +0800)]
discover: Fix potentially-unused var warning

discover/boot.c: In function ‘boot’:
discover/boot.c:153:13: error: ‘local_initrd’ may be used uninitialized in this function [-Werror=maybe-uninitialized]

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoevent: Make strings const
Geoff Levand [Mon, 22 Apr 2013 00:49:37 +0000 (17:49 -0700)]
event: Make strings const

The processing of events does not modify the event strings, so change the
strings in struct event to const (read-only).

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest: Rename test/list to test/lib
Geoff Levand [Sun, 28 Apr 2013 18:21:50 +0000 (11:21 -0700)]
test: Rename test/list to test/lib

Having a test/list directory is a little too specific, so rename
the test/list directory to test/lib as a place for any lib tests.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agolist: Fix seg fault with list_for_each_entry_safe
Geoff Levand [Wed, 24 Apr 2013 03:41:07 +0000 (20:41 -0700)]
list: Fix seg fault with list_for_each_entry_safe

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest: Add list test
Geoff Levand [Wed, 24 Apr 2013 03:18:00 +0000 (20:18 -0700)]
test: Add list test

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: Add missing udev_destroy call
Geoff Levand [Sun, 21 Apr 2013 15:31:04 +0000 (08:31 -0700)]
discover: Add missing udev_destroy call

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: Separate temporary and permanent device data
Jeremy Kerr [Mon, 11 Mar 2013 09:08:57 +0000 (17:08 +0800)]
discover: Separate temporary and permanent device data

At present, we keep both permanent (eg links/n_links) and temporary
(event) data in struct discover_context.

This change makes discover_context a temporary structure, just used
during actual device discovery. Once discovery is complete, the
permanent data (discover_device) is "committed" to the device handler.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agolib/list: Add list_for_each_entry_safe
Jeremy Kerr [Tue, 16 Apr 2013 03:39:59 +0000 (11:39 +0800)]
lib/list: Add list_for_each_entry_safe

Add a list iterator that is safe against deletion of the current
element.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Consolidate user events by device ID
Jeremy Kerr [Mon, 11 Mar 2013 06:07:36 +0000 (14:07 +0800)]
discover: Consolidate user events by device ID

Currently, we assume all user events are for a new device. This means
that we can never add boot options to an existing device.

This change tries to find an existing (matching by ID) device before
creating a new one in the user event add path.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoprotocol: Separate device add from boot-option add messages
Jeremy Kerr [Mon, 11 Mar 2013 05:43:48 +0000 (13:43 +0800)]
protocol: Separate device add from boot-option add messages

We want to cater for situations where boot options may be discovered
some time after we get notificiation about devices. For instance,
discovering boot options from DHCP configuration parameters. In this
case, we'll need to notify UIs of boot options appear some time after
the device (and/or other boot options on the same device) has appeared.

This change adds a new protocol message type,
PB_PROTOCOL_ACTION_BOOT_OPTION_ADD. We also rename
PB_PROTOCOL_ACTION_ADD to make it clear that it is just for devices.

The discover server is updated to send boot option add events at device
discover time, but we are now able to decouple this later.

We also update the clients to handle the boot option add events
separately.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agopb-protocol: Don't allocate in deserialise functions
Jeremy Kerr [Fri, 8 Mar 2013 09:04:21 +0000 (17:04 +0800)]
pb-protocol: Don't allocate in deserialise functions

Curently, the protocol deserialise functions are allocating device and
boot_command structures. This (implicitly) makes them responsible for
initialisation of these structures too.

Rather that making the protocol responsible for initialising the devices
and boot commands, this change gives the deserialise functions an
argument to an already-instanciated structure. This means that the
creation is no longer implied by the deserialise.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoncurses: Fix build warning
Geoff Levand [Mon, 15 Apr 2013 20:41:55 +0000 (13:41 -0700)]
ncurses: Fix build warning

Add missing header include.  Fixes this warning:

  ui/ncurses/nc-cui.c: warning: implicit declaration of function 'pb_protocol_device_cmp'

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: Fix boot with initrd error
Geoff Levand [Mon, 15 Apr 2013 19:59:14 +0000 (12:59 -0700)]
discover: Fix boot with initrd error

Fix typo in boot() routine.

Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoMove --dry-run option to discover server
Jeremy Kerr [Thu, 7 Mar 2013 02:22:42 +0000 (10:22 +0800)]
Move --dry-run option to discover server

Now that the server does the booting, we should move the --dry-run
argument to the server.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoMove boot to discover server
Jeremy Kerr [Wed, 27 Feb 2013 08:45:21 +0000 (16:45 +0800)]
Move boot to discover server

This change moves the boot-via-kexec functionality from the UIs to the
discover server.

On the UI side: rather than run kexec directly, we just send a message
to the discover server. Because this is generic discover client
functionality, we no longer need the boot callbacks in the twin- and
ncurses-specific code.

We also remove the kexec and URL-loading code from the UIs, and add it
to the discover server code, in paths.c. We expose this to the server
though a new function:

  load_path(void *, const char *, unsigned int *);

On the server side, we simply move hook up the boot() function to use
the load_file and kexec calls.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Implement device handler boot path
Jeremy Kerr [Wed, 6 Mar 2013 09:14:58 +0000 (17:14 +0800)]
discover: Implement device handler boot path

This change adds a funtion, device_handler_boot, which processes the
boot command message from the discover server.

We add a new file, discover/boot.c (and a corresponding header) with a
skeleton for the final kexec code.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: parse boot message from incoming ACTION_BOOT messages
Jeremy Kerr [Wed, 6 Mar 2013 09:08:05 +0000 (17:08 +0800)]
discover: parse boot message from incoming ACTION_BOOT messages

Add a function in the protocol code to deserialise a boot message, and
use it to extract a boot_command in the discover server.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover-server: Add reference to server in struct client
Jeremy Kerr [Wed, 6 Mar 2013 09:04:48 +0000 (17:04 +0800)]
discover-server: Add reference to server in struct client

We'll need to reference the server when handling messages from clients.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agolib/url: Move URL-handling code to lib
Jeremy Kerr [Tue, 5 Mar 2013 07:28:14 +0000 (15:28 +0800)]
lib/url: Move URL-handling code to lib

We'll need to use the URL handling code in the server, so move it to the
lib/ directory.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/ncurses: Add discover client to struct cui
Jeremy Kerr [Wed, 27 Feb 2013 08:23:56 +0000 (16:23 +0800)]
ui/ncurses: Add discover client to struct cui

.. we'll need it later.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover-client: interact directly with waitset
Jeremy Kerr [Wed, 27 Feb 2013 08:04:23 +0000 (16:04 +0800)]
discover-client: interact directly with waitset

Currently, clients need to mess with the discover client fd directly,
and manually register the waiter.

Instead, this change adds a waitset parameter to
discover_client_register, so that the discover client can register
itself, and call discover_client_process directly. This means no proxy
handlers, and no casts to waiter callbacks.

We can also get rid of discover_client_get_fd.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover-client: Add discover_client_boot
Jeremy Kerr [Wed, 27 Feb 2013 03:00:32 +0000 (11:00 +0800)]
discover-client: Add discover_client_boot

This change implements the client side of the server-based boot
interface. We add a funcion, discover_client_boot, which serialises a
boot message, then sends it to the server.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agodiscover: Allow discover server to receive boot messages
Jeremy Kerr [Wed, 27 Feb 2013 01:33:34 +0000 (09:33 +0800)]
discover: Allow discover server to receive boot messages

Currently, the petitboot socket is one way: messages are only sent from
server to client.

Beause we want the clients to trigger a boot, this change allows the
server to receive messages on the petitboot socket. This is just a
matter of adding a waiter to the client-specific socket, then handling
incoming messages.

At present we don't do anything with the messages, but we'll add a
handler later.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoAdd boot command structure to petitboot protocol description
Jeremy Kerr [Wed, 27 Feb 2013 01:09:47 +0000 (09:09 +0800)]
Add boot command structure to petitboot protocol description

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui: callback & boot actions: kexec -> boot
Jeremy Kerr [Wed, 27 Feb 2013 06:28:55 +0000 (14:28 +0800)]
ui: callback & boot actions: kexec -> boot

find ui/ -type f |
xargs sed -i -e s/kexec_cb/boot_cb/g \
-e s/on_kexec/on_boot/g \
-e s/run_kexec/boot/g

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui: pb_kexec_data -> pb_boot_data
Jeremy Kerr [Wed, 27 Feb 2013 06:22:01 +0000 (14:22 +0800)]
ui: pb_kexec_data -> pb_boot_data

find ui/ -type f |
xargs sed -i -e s/pb_kexec_data/pb_boot_data/g \
-e 's/\<kd\>/bd/g'

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agoui/ncurses: ked -> boot-editor
Jeremy Kerr [Wed, 27 Feb 2013 06:15:34 +0000 (14:15 +0800)]
ui/ncurses: ked -> boot-editor

git mv ui/ncurses/nc-ked.c ui/ncurses/nc-boot-editor.c
git mv ui/ncurses/nc-ked.h ui/ncurses/nc-boot-editor.h
find ui/ncurses -type f |
xargs sed -i -e s/nc-ked\./nc-boot-editor./g \
             -e s/ked/boot_editor/g

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
6 years agopb-udhcpc: Fix generation of TFTP URLs
Jeremy Kerr [Wed, 10 Apr 2013 02:02:20 +0000 (12:02 +1000)]
pb-udhcpc: Fix generation of TFTP URLs

DHCP boot-file parameters may not contain a preceeding slash. In this
case, the current udhcp script will not form a correct URL.

This change adds the slash unconditionally; in the case that the
pathname already has a preceeding slash, the URL parser will handle this
correctly.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoui/common: Remove unused artwork
Jeremy Kerr [Wed, 10 Apr 2013 02:13:35 +0000 (12:13 +1000)]
ui/common: Remove unused artwork

A few of the oxygen icons are no longer used, so remove them from the
artwork tree.

Coincidentally, this fixes and issue with `make dist`, as the
drive-removable-media-usb-pendrive.png file is too long (when used with
an autogenerated git version string) to be tar-ed up.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest/urls: Fix distcheck breakages
Jeremy Kerr [Wed, 10 Apr 2013 02:13:35 +0000 (12:13 +1000)]
test/urls: Fix distcheck breakages

We need a couple of extra automake variables to get `make distcheck`
working.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agowaiter: Don't rely on global variables to keep waiter state
Jeremy Kerr [Wed, 10 Apr 2013 02:19:13 +0000 (12:19 +1000)]
waiter: Don't rely on global variables to keep waiter state

Rather than defining the set of waiters (and pollfds) in waiter.c, add a
struct waitset to contain these.  A waitset is created with
waitset_create, which is passed to the waiter_* functions.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agolib/types: Create common file for type definitions
Jeremy Kerr [Wed, 10 Apr 2013 02:19:13 +0000 (12:19 +1000)]
lib/types: Create common file for type definitions

The device and boot_option types are defined in pb-protocol.h, but
aren't really specific to the procotol. This means a lot of
non-messaging-related files are #including the protocol definitions
unnecessarily.

This change separates the types out into lib/types/types.h.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest/url: Add http-simple.test
Jeremy Kerr [Wed, 6 Mar 2013 05:42:15 +0000 (13:42 +0800)]
test/url: Add http-simple.test

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoui/common/url: Fix multiple-preceeding-slash on pathnames
Jeremy Kerr [Wed, 6 Mar 2013 05:42:15 +0000 (13:42 +0800)]
ui/common/url: Fix multiple-preceeding-slash on pathnames

Fix the double-slash URL test.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agotest: Add URL parser test infrastructure
Jeremy Kerr [Wed, 6 Mar 2013 05:42:15 +0000 (13:42 +0800)]
test: Add URL parser test infrastructure

This change adds some simple testing infrastrcture to the URL parser.
We use a small C binary (parse-url) to run the url parser on its
argument, and compare the output with an expected datafile.

An initial test is included, to check the behaviour of URLs with
multiple slashes between host and pathname. This test currently fails.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoui/common/url: Add pb_url_scheme_name
Jeremy Kerr [Wed, 6 Mar 2013 05:42:15 +0000 (13:42 +0800)]
ui/common/url: Add pb_url_scheme_name

Add a function to lookup the name of a scheme, for more useful URL
output.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoui/common/url: remove scheme separator from URL scheme definitions
Jeremy Kerr [Wed, 6 Mar 2013 05:42:15 +0000 (13:42 +0800)]
ui/common/url: remove scheme separator from URL scheme definitions

To make the scheme definitions more useful for other functions.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoui/common/url: move pb_scheme_info array to file scope
Jeremy Kerr [Wed, 6 Mar 2013 05:42:15 +0000 (13:42 +0800)]
ui/common/url: move pb_scheme_info array to file scope

We'd like to use the scheme info array for other functions, so move it
to file scope, and rename to schemes.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoAllow host programs to be configured
Jeremy Kerr [Tue, 5 Mar 2013 05:54:55 +0000 (13:54 +0800)]
Allow host programs to be configured

Rather than hard-coding in lib/system/system.c, this change adds a set
of #defines for host programs, through the autoheader config.h

These host programs can then be set through configure:

 ./configure HOST_PROG_MOUNT=/usr/bin/mount

Because we need to define nine host programs, we add an autoconf macro
to avoid repeating the definition code.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: Remove {U,}MOUNT_BIN defines
Jeremy Kerr [Tue, 5 Mar 2013 05:54:55 +0000 (13:54 +0800)]
discover: Remove {U,}MOUNT_BIN defines

Use pb_system_apps instead.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoAdd udevadm to pb_system_apps
Jeremy Kerr [Tue, 5 Mar 2013 05:54:55 +0000 (13:54 +0800)]
Add udevadm to pb_system_apps

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: Use pb_run_cmd rather than calling system()
Jeremy Kerr [Tue, 5 Mar 2013 05:54:55 +0000 (13:54 +0800)]
discover: Use pb_run_cmd rather than calling system()

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoconfigure.ac: Add --enable-werror
Jeremy Kerr [Tue, 5 Mar 2013 05:49:15 +0000 (13:49 +0800)]
configure.ac: Add --enable-werror

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: remove (unused) duplicate struct mount_map
Jeremy Kerr [Tue, 5 Mar 2013 05:49:15 +0000 (13:49 +0800)]
discover: remove (unused) duplicate struct mount_map

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: remove unused message.h file
Jeremy Kerr [Tue, 5 Mar 2013 05:49:15 +0000 (13:49 +0800)]
discover: remove unused message.h file

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoparser: remove unused fields from struct parser
Jeremy Kerr [Tue, 5 Mar 2013 05:49:15 +0000 (13:49 +0800)]
parser: remove unused fields from struct parser

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoui/twin: fix compiler warnings
Jeremy Kerr [Tue, 5 Mar 2013 05:49:15 +0000 (13:49 +0800)]
ui/twin: fix compiler warnings

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agolib/pb-protocol: suppress warning for unused buf_len arg
Jeremy Kerr [Tue, 5 Mar 2013 05:49:15 +0000 (13:49 +0800)]
lib/pb-protocol: suppress warning for unused buf_len arg

When assert is disabled, we end up with an warning for buf_len.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agoui/ncurses: Fix warning from unnecessary if statement
Jeremy Kerr [Tue, 5 Mar 2013 05:49:15 +0000 (13:49 +0800)]
ui/ncurses: Fix warning from unnecessary if statement

 ui/ncurses/nc-menu.c: In function 'pmenu_process_key':
 ui/ncurses/nc-menu.c:207:33: error: suggest braces around empty body in an 'if' statement [-Werror=empty-body]

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agodiscover: simplify handler switch statement
Jeremy Kerr [Tue, 5 Mar 2013 05:49:15 +0000 (13:49 +0800)]
discover: simplify handler switch statement

Instead of using nested switch statements in device_handler_event,
define an array of handlers, and lookup instead.

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
6 years agonc: Only expand debug macros if DEBUG is defined
Jeremy Kerr [Tue, 5 Mar 2013 05:49:15 +0000 (13:49 +0800)]
nc: Only expand debug macros if DEBUG is defined

To reduce debugging output from the UI

Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoConvert echo to printf in scripts
Geoff Levand [Tue, 16 Oct 2012 21:58:53 +0000 (14:58 -0700)]
Convert echo to printf in scripts

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoFix sftp loader
Geoff Levand [Tue, 3 Apr 2012 00:20:37 +0000 (17:20 -0700)]
Fix sftp loader

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoIncrease X screen size
Geoff Levand [Sat, 31 Mar 2012 00:54:11 +0000 (17:54 -0700)]
Increase X screen size

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoSpeed up --start-daemon option
Geoff Levand [Sat, 31 Mar 2012 00:20:48 +0000 (17:20 -0700)]
Speed up --start-daemon option

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoCleanup --dry-run option code
Geoff Levand [Fri, 30 Mar 2012 23:58:32 +0000 (16:58 -0700)]
Cleanup --dry-run option code

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoAdd missing EXTRA_DIST files
Geoff Levand [Fri, 30 Mar 2012 03:47:51 +0000 (20:47 -0700)]
Add missing EXTRA_DIST files

7 years agoAdd UI option --dry-run
Geoff Levand [Wed, 28 Mar 2012 02:59:09 +0000 (19:59 -0700)]
Add UI option --dry-run

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoAdd new macro DEFINE_LIST()
Geoff Levand [Tue, 27 Mar 2012 03:21:21 +0000 (20:21 -0700)]
Add new macro DEFINE_LIST()

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agopb-discover: Ignore ram, loop and no-name devices
Geoff Levand [Tue, 27 Mar 2012 03:18:32 +0000 (20:18 -0700)]
pb-discover: Ignore ram, loop and no-name devices

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoFix device mount retry
Geoff Levand [Tue, 27 Mar 2012 03:16:37 +0000 (20:16 -0700)]
Fix device mount retry

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoAdd more paths to grub2 parser
Geoff Levand [Tue, 27 Mar 2012 02:55:53 +0000 (19:55 -0700)]
Add more paths to grub2 parser

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoLog to stderr, allow --log=-
Geoff Levand [Tue, 27 Mar 2012 02:23:17 +0000 (19:23 -0700)]
Log to stderr, allow --log=-

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoZero automatic sockaddr
Geoff Levand [Tue, 27 Mar 2012 02:08:23 +0000 (19:08 -0700)]
Zero automatic sockaddr

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoAdd grub.cfg from opensuse install
Geoff Levand [Tue, 27 Mar 2012 01:49:23 +0000 (18:49 -0700)]
Add grub.cfg from opensuse install

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoAdd DEVPATH to udev_print_event()
Geoff Levand [Tue, 27 Mar 2012 01:47:35 +0000 (18:47 -0700)]
Add DEVPATH to udev_print_event()

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoAdd grub2 conf file parser
Geoff Levand [Mon, 19 Mar 2012 05:58:29 +0000 (22:58 -0700)]
Add grub2 conf file parser

Add grub2 parser and sample config file.
Reorder parser priorities:
  From (yaboot -> kboot) to (kboot -> grub2 -> yaboot).

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoParser test cleanup
Geoff Levand [Mon, 19 Mar 2012 05:19:49 +0000 (22:19 -0700)]
Parser test cleanup

Major cleanup of parser tests.

 * Change test data directory layout to ease test automation.
 * Remove some unneeded files.
 * Re-write test wraper script, rename to run-parser-tests.
 * Rework for autotools.

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoMinor comment fix
Geoff Levand [Mon, 19 Mar 2012 00:24:21 +0000 (17:24 -0700)]
Minor comment fix

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoAdd new member get_pair to conf parser context
Geoff Levand [Sun, 18 Mar 2012 23:20:38 +0000 (16:20 -0700)]
Add new member get_pair to conf parser context

To allow parsers more control over finding paramerter pairs
add a new member get_pair to the parser struct conf_context.
Initialize get_pair=conf_get_pair_equal for existing parsers.

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoRefactor parser routine conf_get_param_pair()
Geoff Levand [Sun, 18 Mar 2012 23:09:16 +0000 (16:09 -0700)]
Refactor parser routine conf_get_param_pair()

Refactor conf_get_param_pair() and rename to conf_get_pair().
Add two new wrapper routines conf_get_pair_equal() and
conf_get_pair_space().

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoAdd parser routine conf_replace_char()
Geoff Levand [Sun, 18 Mar 2012 22:52:02 +0000 (15:52 -0700)]
Add parser routine conf_replace_char()

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoConvert test to automake
Geoff Levand [Sat, 17 Mar 2012 05:23:35 +0000 (22:23 -0700)]
Convert test to automake

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoFix build error in parser-test
Geoff Levand [Sat, 17 Mar 2012 05:19:44 +0000 (22:19 -0700)]
Fix build error in parser-test

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoUse static array for parsers
Geoff Levand [Sat, 17 Mar 2012 05:06:03 +0000 (22:06 -0700)]
Use static array for parsers

Change the parser structure array implementation from using an
array in a seperate parsers section to a static array of pointers
in parser.c.  Parser priority is now set by the position in the
new parsers array.

Signed-off-by: Geoff Levand <geoff@infradead.org>
7 years agoFix seg fault with bare kboot.conf variables
Geoff Levand [Sat, 17 Mar 2012 04:59:18 +0000 (21:59 -0700)]
Fix seg fault with bare kboot.conf variables

Signed-off-by: Geoff Levand <geoff@infradead.org>