diff --git a/abi/include/_bits/errno.h b/abi/include/_bits/errno.h index 8db1c9568a..83260153e1 100644 --- a/abi/include/_bits/errno.h +++ b/abi/include/_bits/errno.h @@ -72,12 +72,4 @@ typedef sysarg_t sys_errno_t; #endif -/** - * Type used for casting "opaque" errno values in switches. - * When __OPAQUE_ERRNO__ is defined, `errno_t` is defined as a pointer type, - * which cannot be used in a switch directly. Instead of casting to long, - * we use an alias that can be easily mechanically replaced using tools/srepl. - */ -typedef long case_errno_t; - #endif diff --git a/kernel/generic/src/console/kconsole.c b/kernel/generic/src/console/kconsole.c index 0aca01e899..32e2e2b6a1 100644 --- a/kernel/generic/src/console/kconsole.c +++ b/kernel/generic/src/console/kconsole.c @@ -563,18 +563,18 @@ NO_TRACE static bool parse_int_arg(const char *text, size_t len, uintptr_t symaddr; errno_t rc = symtab_addr_lookup(symname, &symaddr); - switch ((case_errno_t) rc) { - case (case_errno_t) ENOENT: + switch (rc) { + case ENOENT: printf("Symbol %s not found.\n", symname); return false; - case (case_errno_t) EOVERFLOW: + case EOVERFLOW: printf("Duplicate symbol %s.\n", symname); symtab_print_search(symname); return false; - case (case_errno_t) ENOTSUP: + case ENOTSUP: printf("No symbol information available.\n"); return false; - case (case_errno_t) EOK: + case EOK: if (isaddr) *result = (sysarg_t) symaddr; else if (isptr) @@ -593,14 +593,14 @@ NO_TRACE static bool parse_int_arg(const char *text, size_t len, errno_t rc = str_uint64_t(text, &end, 0, false, &value); if (end != text + len) rc = EINVAL; - switch ((case_errno_t) rc) { - case (case_errno_t) EINVAL: + switch (rc) { + case EINVAL: printf("Invalid number '%s'.\n", text); return false; - case (case_errno_t) EOVERFLOW: + case EOVERFLOW: printf("Integer overflow in '%s'.\n", text); return false; - case (case_errno_t) EOK: + case EOK: *result = (sysarg_t) value; if (isptr) *result = *((sysarg_t *) *result); diff --git a/kernel/generic/src/debug/symtab.c b/kernel/generic/src/debug/symtab.c index f570929890..a20a2ab8c7 100644 --- a/kernel/generic/src/debug/symtab.c +++ b/kernel/generic/src/debug/symtab.c @@ -97,10 +97,10 @@ const char *symtab_fmt_name_lookup(uintptr_t addr) const char *name; errno_t rc = symtab_name_lookup(addr, &name, NULL); - switch ((case_errno_t) rc) { - case (case_errno_t) EOK: + switch (rc) { + case EOK: return name; - case (case_errno_t) ENOENT: + case ENOENT: return "unknown"; default: return "N/A"; diff --git a/uspace/app/bdsh/cmds/builtins/cd/cd.c b/uspace/app/bdsh/cmds/builtins/cd/cd.c index 8b5fe4e0f6..673d6f65ab 100644 --- a/uspace/app/bdsh/cmds/builtins/cd/cd.c +++ b/uspace/app/bdsh/cmds/builtins/cd/cd.c @@ -144,11 +144,11 @@ int cmd_cd(char **argv, cliuser_t *usr) cli_set_prompt(usr); return CMD_SUCCESS; } else { - switch ((case_errno_t) rc) { - case (case_errno_t) ENOMEM: + switch (rc) { + case ENOMEM: cli_error(CL_EFAIL, "Destination path too long"); break; - case (case_errno_t) ENOENT: + case ENOENT: cli_error(CL_ENOENT, "Invalid directory `%s'", target_directory); break; default: diff --git a/uspace/app/edit/edit.c b/uspace/app/edit/edit.c index 5c4eb2d6dc..2de5f6afe7 100644 --- a/uspace/app/edit/edit.c +++ b/uspace/app/edit/edit.c @@ -588,11 +588,11 @@ static errno_t file_save(char const *fname) rc = file_save_range(fname, &sp, &ep); - switch ((case_errno_t) rc) { - case (case_errno_t) EINVAL: + switch (rc) { + case EINVAL: status_display("Error opening file!"); break; - case (case_errno_t) EIO: + case EIO: status_display("Error writing data!"); break; default: diff --git a/uspace/app/init/init.c b/uspace/app/init/init.c index 3b86f74c7c..88be5d6a6c 100644 --- a/uspace/app/init/init.c +++ b/uspace/app/init/init.c @@ -80,21 +80,21 @@ static void info_print(void) static bool mount_report(const char *desc, const char *mntpt, const char *fstype, const char *dev, errno_t rc) { - switch ((case_errno_t) rc) { - case (case_errno_t) EOK: + switch (rc) { + case EOK: if (dev != NULL) printf("%s: %s mounted on %s (%s at %s)\n", NAME, desc, mntpt, fstype, dev); else printf("%s: %s mounted on %s (%s)\n", NAME, desc, mntpt, fstype); break; - case (case_errno_t) EBUSY: + case EBUSY: printf("%s: %s already mounted on %s\n", NAME, desc, mntpt); return false; - case (case_errno_t) ELIMIT: + case ELIMIT: printf("%s: %s limit exceeded\n", NAME, desc); return false; - case (case_errno_t) ENOENT: + case ENOENT: printf("%s: %s unknown type (%s)\n", NAME, desc, fstype); return false; default: diff --git a/uspace/app/tester/hw/serial/serial1.c b/uspace/app/tester/hw/serial/serial1.c index 5578e77209..4abafba581 100644 --- a/uspace/app/tester/hw/serial/serial1.c +++ b/uspace/app/tester/hw/serial/serial1.c @@ -62,12 +62,12 @@ const char *test_serial1(void) if (test_argc < 1) cnt = DEFAULT_COUNT; else - switch ((case_errno_t) str_size_t(test_argv[0], NULL, 0, true, &cnt)) { - case (case_errno_t) EOK: + switch (str_size_t(test_argv[0], NULL, 0, true, &cnt)) { + case EOK: break; - case (case_errno_t) EINVAL: + case EINVAL: return "Invalid argument, unsigned integer expected"; - case (case_errno_t) EOVERFLOW: + case EOVERFLOW: return "Argument size overflow"; default: return "Unexpected argument error"; diff --git a/uspace/dist/src/c/demos/edit/edit.c b/uspace/dist/src/c/demos/edit/edit.c index 54fc971b96..aeda2519b5 100644 --- a/uspace/dist/src/c/demos/edit/edit.c +++ b/uspace/dist/src/c/demos/edit/edit.c @@ -587,11 +587,11 @@ static int file_save(char const *fname) rc = file_save_range(fname, &sp, &ep); - switch ((case_errno_t) rc) { - case (case_errno_t) EINVAL: + switch (rc) { + case EINVAL: status_display("Error opening file!"); break; - case (case_errno_t) EIO: + case EIO: status_display("Error writing data!"); break; default: diff --git a/uspace/lib/c/generic/elf/elf_load.c b/uspace/lib/c/generic/elf/elf_load.c index a913076a8c..7da51a49af 100644 --- a/uspace/lib/c/generic/elf/elf_load.c +++ b/uspace/lib/c/generic/elf/elf_load.c @@ -79,11 +79,11 @@ int elf_load(int file, elf_info_t *info) DPRINTF( "- prog dynamic: %p\n", info->finfo.dynamic); errno_t rc2 = rtld_prog_process(&info->finfo, &env); - switch ((case_errno_t) rc2) { - case (case_errno_t) EOK: + switch (rc2) { + case EOK: rc = EE_OK; break; - case (case_errno_t) ENOMEM: + case ENOMEM: rc = EE_MEMORY; break; default: diff --git a/uspace/lib/c/generic/inet/host.c b/uspace/lib/c/generic/inet/host.c index c212f860ed..156558f9f9 100644 --- a/uspace/lib/c/generic/inet/host.c +++ b/uspace/lib/c/generic/inet/host.c @@ -209,12 +209,12 @@ errno_t inet_host_plookup_one(const char *str, ip_ver_t version, inet_addr_t *ad rc = inet_host_parse(str, &host, endptr != NULL ? &eptr : NULL); if (rc != EOK) { - switch ((case_errno_t) rc) { - case (case_errno_t) EINVAL: + switch (rc) { + case EINVAL: if (errmsg != NULL) *errmsg = "Invalid format"; goto error; - case (case_errno_t) ENOMEM: + case ENOMEM: if (errmsg != NULL) *errmsg = "Out of memory"; goto error; diff --git a/uspace/lib/c/generic/inet/hostport.c b/uspace/lib/c/generic/inet/hostport.c index 7c59d0c297..032542de25 100644 --- a/uspace/lib/c/generic/inet/hostport.c +++ b/uspace/lib/c/generic/inet/hostport.c @@ -263,16 +263,16 @@ errno_t inet_hostport_plookup_one(const char *str, ip_ver_t version, inet_ep_t * rc = inet_hostport_parse(str, &hp, endptr != NULL ? &eptr : NULL); if (rc != EOK) { - switch ((case_errno_t) rc) { - case (case_errno_t) EINVAL: + switch (rc) { + case EINVAL: if (errmsg != NULL) *errmsg = "Invalid format"; goto error; - case (case_errno_t) ENOMEM: + case ENOMEM: if (errmsg != NULL) *errmsg = "Out of memory"; goto error; - case (case_errno_t) EOK: + case EOK: break; default: assert(false); diff --git a/uspace/lib/c/generic/str_error.c b/uspace/lib/c/generic/str_error.c index 7fc66f90d2..192ef3d00a 100644 --- a/uspace/lib/c/generic/str_error.c +++ b/uspace/lib/c/generic/str_error.c @@ -95,7 +95,7 @@ const char *str_error_name(errno_t e) return err_name[i]; } - snprintf(noerr, NOERR_LEN, "(%d)", (int)(case_errno_t) e); + snprintf(noerr, NOERR_LEN, "(%d)", (int)e); return noerr; } @@ -107,7 +107,7 @@ const char *str_error(errno_t e) return err_desc[i]; } - snprintf(noerr, NOERR_LEN, "Unknown error code (%d)", (int)(case_errno_t) e); + snprintf(noerr, NOERR_LEN, "Unknown error code (%d)", (int)e); return noerr; } diff --git a/uspace/lib/c/include/stdlib.h b/uspace/lib/c/include/stdlib.h index 781f9ceb2f..9090667891 100644 --- a/uspace/lib/c/include/stdlib.h +++ b/uspace/lib/c/include/stdlib.h @@ -55,7 +55,7 @@ extern void exit(int) __attribute__((noreturn)); #include static inline int EXIT_RC(errno_t rc) { - return (int) (case_errno_t) rc; + return (int) rc; } #endif diff --git a/uspace/srv/devman/driver.c b/uspace/srv/devman/driver.c index c01d5574c0..26d02ed6d4 100644 --- a/uspace/srv/devman/driver.c +++ b/uspace/srv/devman/driver.c @@ -602,11 +602,11 @@ void add_device(driver_t *drv, dev_node_t *dev, dev_tree_t *tree) async_wait_for(req, &rc); } - switch ((case_errno_t) rc) { - case (case_errno_t) EOK: + switch (rc) { + case EOK: dev->state = DEVICE_USABLE; break; - case (case_errno_t) ENOENT: + case ENOENT: dev->state = DEVICE_NOT_PRESENT; break; default: