summaryrefslogtreecommitdiff
path: root/client.c (follow)
Commit message (Collapse)AuthorAge
* client/audioc: Create ~/.paraslash in interactive mode.Andre Noll2026-07-04
| | | | | | | | | | If this directory does not exist, para_play creates it at startup. However, para_client and para_audioc do not do that, hence they fail to write the history file on exit. Teach para_client and para_audioc to create ~/.paraslash just as para_play does. Replace para_mkdir() by create_dot_paraslash() as this is what all callers need.
* Merge topic branch t/spdx into masterAndre Noll2026-03-26
|\ | | | | | | | | | | | | | | | | | | | | Switch to SPDX licence identifiers A single patch which replaces the first comment line of most .c and .h files containing the copyright notice by standardized SPDX (Software/System Package Data Exchange) nomenclature. * t/spdx: Switch to SPDX identifiers.
| * Switch to SPDX identifiers.Andre Noll2026-03-17
| | | | | | | | | | | | | | | | Generated with sed -i 's|Copyright.*Andre Noll.*|SPDX-License-Identifier: GPL-2.0 */|g' *.c *.h followed by manually tweaking the result a bit. No license change intended.
* | server: Replace the init subcommand by --init.Andre Noll2026-03-13
|/ | | | | This simplifies the code, and we may now assume that the database is always open, which paves the way for further simplifications.
* Merge topic branch t/rm_dccp into masterAndre Noll2026-02-18
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Remove dccp support The first patch of this series removes the dccp sender and receiver. Both are deprecated as of paraslash-0.7.6, released in 2025-11. The short depreciation period should not be a problem because dccp was never adopted widely, and the linux kernel no longer supports the protocol. The removal paves the way for quite some subsequent cleanups. In particular, the acl and chunk queue APIs, which used to be shared between the http and the dccp sender, no longer need to be public, so subsequent patches of the series move acl.c and chunk_queue.c into http_send.c. * refs/heads/t/rm_dccp: http_send.c: Simplify format_url(). Move format_url() from net.c to http_send.c. Merge acl.c into http_send.c. Merge chunk_queue.c into http_send.c. http_send.c: Move header_sent to struct private_http_sender_data. http_send.c: Move chunk queue into struct private_http_sender_data. struct sender: Remove unused sched pointer argument of ->post_monitor(). struct sender: Remove unused chunks_sent parameter of ->send(). http_send.c: Kill http_send_ok_msg() and http_send_err_msg(). http_send.c: Remove trivial shutdown wrapper. http_send.c: Merge free_sender_status() into http_shutdown(). http_send.c: Merge init_sender_status() into http_send_init(). http_send.c: Rename or remove generic_foo(). http_send.c: Remove sender_status pointer arguments. Move struct sender_status into http_send.c. Move send_common.c into http_send.c. Remove dccp.
| * Remove dccp.Andre Noll2026-01-26
| | | | | | | | | | | | | | | | | | | | | | This removes all traces of dccp, specifically dccp_recv.c and dccp_send.c. The flowops related functions of net.c can go away as well, as flowops were only needed for the dccp transport. A few other functions are simplified by dropping the flowops or protocol parameter. Further cleanups are possible, but are deferred to subsequent commits. In particular, some functions of send_common.c are only called by the http transport now. These can be moved to http_send.c and then be made static.
* | Remove the setatt server subcommand.Andre Noll2026-01-28
|/ | | | | The subcommand was deprecated in paraslash-0.7.5, when the touch subcommand grew equivalent functionality.
* Fix two stdin/stdout related memory leaks.Andre Noll2025-11-17
| | | | | | | | | | | | The moderately recent commit which revamped the stdin/stdout API missed to patch the client code to call the cleanup functions {stdin,stdout}_free() introduced by that commit. Also, both {stdin,stdout}.c missed to remove the buffer tree node in certain cases. The additional btr_remove_node() calls fix this, and they don't hurt since this function is idempotent. Fixes: c30b3cf7b9eb76f6b0a6259a4f630017de804608
* Improve client documentation.Andre Noll2025-10-08
| | | | | The new file comment for client.c, its dedoxification, and a bunch of miscellaneous improvements for the public functions of client_common.c.
* Remove loglevel argument of client_parse_config().Andre Noll2025-09-13
| | | | | | | There are two callers, one in client_common.c and one in client.c. The former passes NULL, hence does not need the argument. The latter passes a non-NULL pointer to initialize the global client_loglevel integer, but this initialization can as well be done in the caller, simplifying the code a bit.
* Revamp the stdin/stdout API.Andre Noll2025-08-27
| | | | | | | | | | | | | | | | | | With the current API it is impossible to free the memory that was allocated by stdin_task_register() after schedule() returns. This commit replaces the APIs defined in stdin.h and stdout.h to remove the memory leaks which are inevitable with the old API. We also make struct stdin_task and stdout_task opaque because the API users (client.c, filter.c, recv.c and write.c) should not be able to manipulate the fields of these structures directly. The new stdout API differs from the new stdin API only in that stdout_new() needs an additional argument to let the caller pass in a pointer to the parent buffer tree node. Other than that, the APIs are symmetric. Use the opportunity to do the non-blocking dance in std{in,out}_new() and std{in,out}_free() rather than in the post-monitor functions. This way we may get rid of the silly ->must_set_nonblock_flag boolean of struct std{in,out}_task.
* Make struct sched private, introduce sched_new().Andre Noll2025-07-13
| | | | | | | | | | | | | | | | This moves the declaration of the structure from sched.h to sched.c because the information stored in this structure has almost no users outside of the scheduler core. As a result, the size of the structure is no longer known outside of sched.c. To initialize a scheduler instance, users now must call the new sched_new(), passing an alternative poll function if needed, We don't let applications set the default timeout anymore because the value is kind of arbitrary anyway and most users specified one second. So hardcode this as the default. Besides allocating the scheduler structure, sched_new() also initializes the task list and the poll function pointer. Thanks to these initializations, the two conditions of sched.c removed in this patch are never true.
* Merge topic branch t/deprecate_setatt into masterAndre Noll2025-06-29
|\ | | | | | | | | | | | | | | | | | | A single patch which deprecates the setatt server subcommand. This subcommand fails, for example, if the name of an audio file happens to end in '+' or '-'. The replacement for setatt is the touch subcommand, which gained two options to set or unset attributes. * refs/heads/t/deprecate_setatt: server: Deprecate setatt in favor of touch.
| * server: Deprecate setatt in favor of touch.Andre Noll2025-05-19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds --set-attribute and --unset-attribute to the touch subcommand, re-implementing the features of the setatt command with a saner syntax. We augment the change_atts_data structure using pre-computed values for verbose and dry-run mode and pass a pointer to this structure rather than the general callback arg pointer. The existing setatt subcommand neither sets nor consults the two new booleans. The touch completer of para_client is updated to complete the two new options, executing the lsatt subcommand to get the attribute names. The manual and the test suite also need minor adjustments.
* | Merge topic branch t/completion into masterAndre Noll2025-06-14
|\| | | | | | | | | | | | | | | | | | | | | | | | | The completers for para_client and para_audioc handle some cases incorrectly or not at all. This series improves on that. * refs/heads/t/completion: Revamp bash_completion. bash completion: Fix help option parsing. audioc: Fix option completion of version and stat. i9e: Introduce i9e_get_nonopt_argnum(). i9e: Introduce i9e_cword_is_option_arg(). i9e: Constify i9e_complete_option().
| * i9e: Introduce i9e_get_nonopt_argnum().Andre Noll2025-05-18
| | | | | | | | | | Call the new function from various subcommand completers to attempt completion only on the first or the first two non-option arguments.
| * i9e: Introduce i9e_cword_is_option_arg().Andre Noll2025-05-18
| | | | | | | | | | | | | | | | | | | | | | | | Call the new function to complete --admissible, --sort and --listing-mode of the ls subcommand and teach the touch completer to prevent filename completion if a numerical argument is expected. The grab subcommand of para_audiod also benefits from the new helper: para_audioc learned to complete the three different grab modes. Since --admissible expects a mood or playlist argument, factor out the code from the select completer which returns the list of all moods and playlists so that it can be called by the ls completer as well.
| * i9e: Constify i9e_complete_option().Andre Noll2025-05-18
| | | | | | | | | | | | i9e_extract_completions() and i9e_complete_option() both take a char ** argument for the option/string list although they do not modify the pointers of the list. This commit marks these pointer variables constant.
* | i9e: Constify completer arrays.Andre Noll2025-06-10
| | | | | | | | This way the array of completers goes into the rodata section.
* | Merge topic branch t/build into masterAndre Noll2025-05-20
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | A medium sized series for the build system which improves the way the git version string is stored in the executables and man pages. Subsequent patches of the series remove some warts from the makefile: we no longer use order-only dependencies and the .PRECIOUS target. The merge results in a conflict against the "remove regex include" commit 67388cd4fae0. This is trivial to resolve, though. * refs/heads/t/build: Doxify version functions. Doxify OV_EXCLUDE_STATIC_CALLBACKS #define. Makefile: Fix braino in tarball target. build: Remove superfluous dependency in Makefile.real. build: Remove the .PRECIOUS target. build: Improve clean targets. build: Get rid of directory order-only dependencies. build: Compile with -Wunused -Wall also on BSD. build: Revamp git versioning. build: Merge version.{c,h} into string.{c,h}.
| * | build: Merge version.{c,h} into string.{c,h}.Andre Noll2025-03-25
| | | | | | | | | | | | | | | | | | | | | | | | | | | This is a preparatory patch for the upcoming revamp of the git version script. The revamped script generates version.c, a file which is currently tracked by git. We can easily get rid of it (and of version.h) since all paraslash executables link in both string.o and version.o. So let's move the three small functions of version.c to string.c and their declarations from version.h to string.h.
* | | Include regex.h from para.h.Andre Noll2025-05-19
| |/ |/| | | | | Every .c file includes it anyway.
* | client: Fix completion for the select subcommand.Andre Noll2025-04-24
|/ | | | | | We missed to complete the -v option that was added recently. Fixes: 1f31fcdd74ab1aab01cbc70942f9d69bb779156a
* client: Fix memory leak on exit.Andre Noll2024-05-07
| | | | | This triggers only if para_client is run interactively. The leak is harmless, but still..
* Consolidate EOF error codes.Andre Noll2023-03-11
| | | | | | Currently we have ~15 error codes which indicate an EOF condition. One should suffice, so drop all codes except the generic E_EOF and use that everywhere.
* Merge topic branch t/overflow into masterAndre Noll2022-10-03
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This series implements a new memory allocation API which checks for overflows. The first part of the series just renames the main allocation functions. Later patches in the series implement allocators which take two size_t arguments (like calloc(3)) and check whether the multiplication overflows by employing the __builtin_mul_overflow() primitive supported by gcc and clang. This requires us to bump the lowest supported gcc and clang version. * refs/heads/t/overflow: build: Compile with -ftrapv. string: Introduce arr_zalloc(). string: Introduce arr_alloc(). string: Introduce arr_realloc() and check for integer overflow. string: Rename para_calloc() -> zalloc(). string: Rename para_malloc() -> alloc(). string: Overhaul para_strdup().
| * string: Introduce arr_alloc().Andre Noll2022-07-29
| | | | | | | | | | | | | | | | Change all callers of alloc() which pass a product of two integers as the allocation size to call the new function instead. This function aborts if the multiplication overflows. With arr_alloc() in place, alloc() reduces to a trivial wrapper which calls new arr_alloc() with the first argument equal to one.
| * string: Introduce arr_realloc() and check for integer overflow.Andre Noll2022-07-29
| | | | | | | | | | | | | | | | Use __builtin_mul_overflow() for the check. This builtin was introduced in gcc-5, so we need to bump the lowest supported version. Re-implement para_realloc() as a trivial wrapper for arr_realloc() to simplify and to avoid duplicating the size check.
| * string: Rename para_malloc() -> alloc().Andre Noll2022-07-29
| | | | | | | | | | | | | | Just because it's shorter and matches the naming of the new allocators we are about to introduce. The bulk of this patch was created with sed -i 's/para_malloc/alloc/g' *.c *.h yy/mp.y
* | Merge branch 'refs/heads/t/ll'Andre Noll2022-09-18
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two little cleanups related to the logging facility and two commits which add the ll command to para_server and para_audiod. The merge resulted in a conflict in afs.c due to the earlier merge of the poll topic branch which replaced all calls to select() by calls to poll(). The implementation of the ll server command introduced a new caller of select(), afs_select(), which needs to be replaced by afs_poll() to resolve the conflict. * refs/heads/t/ll: New server command: ll to change the log level at runtime. New audiod command: ll to change the log level at runtime. daemon: Kill get_loglevel_by_name(). server/audiod: Don't parse loglevel argument unnecessarily.
| * | New server command: ll to change the log level at runtime.Andre Noll2022-07-12
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This makes use of the infrastructure introduced in the previous patch. However, the implementation of the ll command for para_server is more involved than its audiod counterpart because in the server case we have to tell two different processes (server and afs) to change their log level while the calling process, the command handler, does not need to set the loglevel because it is about to exit anyway. For the inter-process communication we introduce a new field in the mmd shared memory area so that command handlers can read the current value or set a new value. The log level propagates from there via daemon_set_loglevel() to the server and afs processes during each iteration of the scheduler loop where para_log() will pick it up to set the log level threshold for subsequent log events. The si command handler currently refers to the argument of the --loglevel server option to include the log level in its output. With dynamic log levels this no longer works because it always prints the value from the command line or the config file rather than the run time log level. Since the new ll command also prints the loglevel when it is executed with no arguments, we simply remove this line from the si output and hope that nobody cares. The si command handler was the last user of the ENUM_STRING_VAL macro in command.c. Removing the macro also allows us to make CMD_PTR local to server.c and to remove the lopsub definitions of the server suite from command.c. However, we still include the lopsub definitions of the server *command* suite (server_cmd.lsg.h) of course. We let any authenticated user run the command with no arguments to report the current loglevel but require full privileges to change the loglevel. Thus, the check for sufficient privileges needs to be performed in the command handler.
* | Switch from select(2) to poll(2).Andre Noll2022-08-28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The select(2) API is kind of obsolete because it does not work for file descriptors greater or equal than 1024, The general advice is to switch to poll(2), which offers equivalent functionality and does not suffer from this restriction. This patch implements this switch. The fd sets of select(2) have one nice feature: One can determine in O(1) time whether the bit for a given fd is turned on in an fd set. For poll(2), the monitored file descriptors are organized in an array of struct pollfd. Without information about the given fd's index in the pollfd array, one can only perform a linear search which requires O(n) time, with n being the number of fds being watched. Since this would have to be done for each fd, the running time becomes quadratic in the number of monitored fds, which is bad. Keeping the pollfd array sorted would reduce that to n * log(n) at the cost of additional work at insert time. This patch implements a different approach. The scheduler now maintains an additional array of unsigned integers which map fds to indices into the pollfd array. This new index array is transparent to the individual tasks, which still simply pass one or more fds from their ->pre_monitor() method to the scheduler. The length of the index array equals the highest fd given. This might become prohibitive in theory, but should not be an issue for the time being. Care needs to be taken in order to deal with callers which ask for the readiness of an fd without having called sched_monitor_readfd() or sched_monitor_writefd() in the ->pre_monitor() step. Before the patch, thanks to the FD_ZERO() call at the beginning of each iteration of the scheduler's main loop, both sched_read_ok() and sched_write_ok() returned false for fds which were not asked to be watched. We need to keep it this way for a seamless transition. We achieve this by replacing the FD_ZERO() call by a memset(3) call which fills the index array with 0xff bytes. Both sched_read_ok() and sched_write_ok() call the new get_revents() helper, where we check the fd argument against the allocation sizes of the two arrays. If either function is called with an fd that was not asked to be monitored in the ->pre_monitor() step, the checks notice that the index of this fd, 0xffffffff, is larger than the highest open fd and we return "not ready for I/O". Another issue is the case where the same file descriptor is submitted twice in ->pre_monitor() to check for readiness with respect to both reading and writing. The code in client_comon.c currently does that. To keep it working, the scheduler needs to detect this case and re-use the existing slot in both arrays.
* | Rename ->{pre,post}_select methods to ->{pre,post}_monitor.Andre Noll2022-08-25
| | | | | | | | | | | | | | The word "monitor" is neutral and continues to be correct after the switch from select(2) to poll(2). Pure rename, nothing to see here.
* | sched: Use integer value for select timeout.Andre Noll2022-08-25
|/ | | | | | | | | | | | | This modifies the public struct sched so that users pass in the default timeout as an integer value in milliseconds rather than a struct timeval. This simplifies the code a little and eases the transition from select(2) to poll(2) because poll(2) also takes a plain integer for the timeout. Since para_select() of fd.c now calls ms2tv() to convert the timeout back to a struct timeval, all executables which link with fd.o must also link with time.o. This was not the case for para_mixer and para_audioc, so configure.ac needs to be adjusted accordingly.
* Merge branch 'refs/heads/t/rm_task_subcmd'Andre Noll2022-01-03
|\ | | | | | | | | | | | | | | | | A single commit containing an incompatible change for 0.7.0. Cooking for almost a year. * refs/heads/t/rm_task_subcmd: Remove obsolete server subcommand "task".
| * Remove obsolete server subcommand "task".Andre Noll2021-02-27
| | | | | | | | It was deprecated long ago. Since v0.6.2 it does nothing anyway.
* | client.c: Fix typo in comment.Andre Noll2021-05-28
|/
* Merge branch 'refs/heads/t/long-help'Andre Noll2018-06-10
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This series introduces lsu.c and lsu.h which contain helpers related to the lopsub library. These helpers are designed to be shared between the executables. The series starts by implementing a generic help command for lopsub suites and converts para_server. Subsequent patches convert audiod and para_play. The second part of the series adds another lopsub related helper which merges command line options and config file options. Each executable is modified to make use of the new helper, getting rid of quite some code duplication. The conflict resolution for server.c has been tested for a while. Cooking for five weeks. * refs/heads/t/long-help: play: Use lsu_merge_config_file_options(). mixer: Use lsu_merge_config_file_options(). gui: Use lsu_merge_config_file_options(). filter: Use lsu_merge_config_file_options(). audioc: Use lsu_merge_config_file_options(). audiod: Use lsu_merge_config_file_options(). client: Use lsu_merge_config_file_options(). lsu: Add helper to merge config file options, convert server. Trivial: Rename completion_result variables. play: Implement help --long. audiod: Implement help --long. Introduce lsu.{c,h}, implement help --long for para_server.
| * Trivial: Rename completion_result variables.Andre Noll2018-04-22
| | | | | | | | | | Most completers call the completion result pointer "cr", but some use "result" instead. Let's be consistent and rename those to cr.
| * Introduce lsu.{c,h}, implement help --long for para_server.Andre Noll2018-04-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds the --long option to the server help subcommand. The former help output becomes the long help while the short help text is shown if --long is not given. Although only the help command of para_server is converted in this patch, the new functionality is implemented in a generic way so that the help commands of para_audiod and para_play can use the same implementation. Those will be converted in subsequent patches. t0004 parses the help output and thus needs to be changed to include --long.
* | crypt: Introduce crypt_shutdown().Andre Noll2018-02-26
| | | | | | | | | | | | | | | | | | | | This plugs a few harmless memory leaks in the openssl crypto backend. The leaks occur on exit and are only reported by valgrind if it is run with --leak-check=full --show-leak-kinds=all. The gcrypt backend has similar problems, but there is no way to provide a similar patch for libgrypt. The newly added comment in gcrypt.c explains why.
* | crypt: Rename init_random_seed_or_die() -> crypt_init().Andre Noll2018-02-26
|/ | | | | At least the gcrypt implementation does more than just seed the PRNG. The new name is shorter and more descriptive.
* Shorten copyright notice.Andre Noll2017-09-22
| | | | | | | | | | | | | | | | | | | | | The GPLv2 line does not add any additional information, so drop it. This leaves a single line of legalese text for most files, which is about the amount of screen real estate it deserves. This patch was created with the following script (plus some manual fixups): awk '{ if (NR <= 5) { gs = gensub(/.*Copyright.* ([0-9]+).*Andre Noll.*/, "\\1", "g") if (gs != $0) year = gs next } if (NR == 6 && year != "") printf("/* Copyright (C) %s Andre Noll <maan@tuebingen.mpg.de>, see file COPYING. */\n", year) print }'
* Make dummy completers static.Andre Noll2017-07-23
| | | | | This revealed that the completers for SUPERCOMMAND_UNAVAILABLE are all unused..
* doxygen: Add \ref to references.Andre Noll2017-06-25
| | | | | This way doxygen issues a warning if the file/function/structure no longer exists and a stale reference remains.
* Convert para_client to lopsub.Andre Noll2017-03-26
| | | | | | | | | | | | | | | | | | This replaces the gengetopt command line parser for para_client by a lopsub suite and links para_client against the lopsub library. The ggo file for para_client was the last user of m4/gengetopt/complete.m4, so this file can be removed. The tricky part is create_merged_lpr(), which replaces make_client_argv(). It is called from the i9e line handler and from the completers. The new function merges the original parse result with the arguments given at the command line to produce the parse result stored in the client task structure. The completers no longer duplicate the possible options each server subcommand because the header file generated by lopsubgen exposes an array of string literals which is suitable as the opts argument of i9e_complete_option().
* server: Convert com_ls() to lopsub.Andre Noll2017-03-26
| | | | | | | | | | | | | | | | | | | | | | This is the final server command to be converted to the lopsub API. Besides the conversion to lopsub, the patch changes the semantics of the ls command in two ways: The deprecated -p option is removed, and the -F option is made the default so that full paths are printed if -b is not given. Regarding the conversion, the patch removes enum ls_flags which used to contain the various flags of the ls command. This information can now be extracted in the callback from the deserialized parse result. Also write_score() is kind of pointless and is replaced by inlining it. Note that make_status_items() is also affected by this patch because it makes use of the infrastructure of the ls command. This function is called from the event handler of the audio file table for events of type AFSI_CHANGE and AFHI_CHANGE. Since no more non-lopsub server commands are left after this patch, several cleanups are possible. These are dealt with in subsequent patches.
* server: Convert non-afs commands to lopsub.Andre Noll2017-03-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the server commands are divided into two group: those commands which are handled by the server process and those which communicate with the afs process. This commit converts the commands of the former group and the corresponding completers for para_client to the lopsub suite format while the afs commands will be converted in subsequent commits. After this change para_server needs to be linked with -llopsub. To this aim the options and help texts of of the server commands are transferred from server.cmd to the new server_cmd.suite.m4, enabling long-style options in the progress. Moreover, an introduction is added at the beginning of the list of server commands which describes how server commands are executed. Command permissions are now handled by making use of the aux_info feature of lopsub. To keep those commands working which do not have any permission bit set, we need to add a new identifier NO_PERMISSION_REQUIRED to enum server_command_permissions of user_list.h. The value of this identifier is zero of course. Naturally the bulk of the change takes place in command.c where all server commands are implemented. The command handlers are modified to take a pointer to a struct lls_parse result as an additional argument. A new helper, send_errctx(), is introduced to avoid code duplication. Since command.h now refers to a lopsub parse result, all files which include command.h, including those which implement only afs commands, need to include the system header lopsub.h. To keep afs commands working, some compatibility code in run_command() is added. This will go away after all commands have been converted. A couple of macros in command.h ease the handling of the long symbolic constants exposed by the generated lopsub header file. Although only the non-afs commands are converted, the change allows for a couple of cleanups: * The E_BAD_COMMAND error code is no longer needed and has been removed. * cmd_perms_itohuman() has become unused and is removed. * The server_cmds[] array is empty and can be removed, along with the loop in send_list_of_commands() which iterated over the array. The patch also adjusts tests t0004 and t0005 since the help output format changed slightly, breaking the expectations of these tests.
* Merge branch 'refs/heads/t/simple_error_codes'Andre Noll2016-12-31
|\ | | | | | | | | | | | | | | | | | | | | | | | | Two patches which get rid of the concept of per-subsystem error codes. The host-compiled error2.c program can be removed, configure.ac and error.h simplified. The merge conflicted because both sides modified error.h, but this was easy to resolve. * refs/heads/t/simple_error_codes: Sort errors alphabetically. Simplify the error subsystem, get rid of error2.[ch].
| * Simplify the error subsystem, get rid of error2.[ch].Andre Noll2016-12-20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit removes error2.c and the surrounding infrastructure of the build system, getting rid of ~600 LOC. After the change there are no more subsystems for error codes, and we don't need to host-compile error2.c any more. Since all executables now contain the text of every error code, the change has some impact on the sizes of the (stripped) executables: Before: After: 64K para_afh 71K para_afh 43K para_audioc 47K para_audioc 256K para_audiod 259K para_audiod 64K para_client 71K para_client 39K para_fade 47K para_fade 141K para_filter 144K para_filter 51K para_gui 59K para_gui 252K para_play 255K para_play 97K para_recv 104K para_recv 227K para_server 230K para_server 60K para_write 67K para_write This increase in size is justified by the major simplification.