* Re: [PATCH 1/2] stringlist-functions: add sorted insert [not found] ` <1323424372-8142-2-git-send-email-a.aring@phytec.de> @ 2011-12-12 8:48 ` Sascha Hauer 0 siblings, 0 replies; 3+ messages in thread From: Sascha Hauer @ 2011-12-12 8:48 UTC (permalink / raw) To: Alexander Aring; +Cc: barebox On Fri, Dec 09, 2011 at 10:52:47AM +0100, Alexander Aring wrote: > Add sorted insert in stringlist functions. > Also added function to checked if string is already > in string list. > > Signed-off-by: Alexander Aring <a.aring@phytec.de> > --- > include/stringlist.h | 2 ++ > lib/stringlist.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 51 insertions(+), 0 deletions(-) > > diff --git a/include/stringlist.h b/include/stringlist.h > index 3453e9a..c923542 100644 > --- a/include/stringlist.h > +++ b/include/stringlist.h > @@ -9,6 +9,8 @@ struct string_list { > }; > > int string_list_add(struct string_list *sl, char *str); > +int string_list_add_sorted(struct string_list *sl, char *str); > +int string_list_contains(struct string_list *sl, char *str); > void string_list_print_by_column(struct string_list *sl); > > static inline void string_list_init(struct string_list *sl) > diff --git a/lib/stringlist.c b/lib/stringlist.c > index 9ccf8fa..40a0fc9 100644 > --- a/lib/stringlist.c > +++ b/lib/stringlist.c > @@ -3,6 +3,29 @@ > #include <malloc.h> > #include <stringlist.h> > > +static int string_list_compare(struct list_head *a, struct list_head *b) > +{ > + int result = 0; > + char *achr, *bchr; > + achr = ((struct string_list *)(a))->str; > + bchr = ((struct string_list *)(b))->str; > + > + while (*achr != '\0' || *bchr != '\0') { > + result = *achr - *bchr; > + if (result < 0) > + return -1; > + if (result > 0) > + return 0; > + achr++; > + bchr++; > + } Can't you use strcmp here instead? > + > + /* Avoid a endless loop because >=0 insert str in list > + * Insert string if strings are equal or is equal, > + * but lengths are not the same */ > + return 0; > +} > + > int string_list_add(struct string_list *sl, char *str) > { > struct string_list *new; > @@ -16,6 +39,31 @@ int string_list_add(struct string_list *sl, char *str) > return 0; > } > > +int string_list_add_sorted(struct string_list *sl, char *str) > +{ > + struct string_list *new; > + > + new = xmalloc(sizeof(struct string_list) + strlen(str) + 1); > + > + strcpy(new->str, str); > + > + list_add_sort(&new->list, &sl->list, string_list_compare); > + > + return 0; > +} > + > +int string_list_contains(struct string_list *sl, char *str) > +{ > + struct string_list *entry; > + > + list_for_each_entry(entry, &sl->list, list) { > + if (!strcmp(str, entry->str)) > + return 1; > + } > + > + return 0; > +} > + > void string_list_print_by_column(struct string_list *sl) > { > int len = 0, num, i; > @@ -44,3 +92,4 @@ void string_list_print_by_column(struct string_list *sl) > if (i % num) > printf("\n"); > } > + Please don't add trailing new lines. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <1323424372-8142-3-git-send-email-a.aring@phytec.de>]
* Re: [PATCH 2/2] auto-completion: add auto-completion for path files [not found] ` <1323424372-8142-3-git-send-email-a.aring@phytec.de> @ 2011-12-12 9:08 ` Sascha Hauer 0 siblings, 0 replies; 3+ messages in thread From: Sascha Hauer @ 2011-12-12 9:08 UTC (permalink / raw) To: Alexander Aring; +Cc: barebox On Fri, Dec 09, 2011 at 10:52:48AM +0100, Alexander Aring wrote: > Add auto-completion for path files. > > Signed-off-by: Alexander Aring <a.aring@phytec.de> > --- > commands/ls.c | 4 +- > common/complete.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++- > 2 files changed, 68 insertions(+), 4 deletions(-) > > diff --git a/commands/ls.c b/commands/ls.c > index 278a8bc..070aa90 100644 > --- a/commands/ls.c > +++ b/commands/ls.c > @@ -68,7 +68,7 @@ int ls(const char *path, ulong flags) > if (stat(tmp, &s)) > goto out; > if (flags & LS_COLUMN) > - string_list_add(&sl, d->d_name); > + string_list_add_sorted(&sl, d->d_name); > else > ls_one(d->d_name, &s); > } > @@ -156,7 +156,7 @@ static int do_ls(struct command *cmdtp, int argc, char *argv[]) > > if (!(s.st_mode & S_IFDIR)) { > if (flags & LS_COLUMN) > - string_list_add(&sl, argv[o]); > + string_list_add_sorted(&sl, argv[o]); > else > ls_one(argv[o], &s); > } Ok, but this seems unrelated to the subject of this patch. Please separate. > diff --git a/common/complete.c b/common/complete.c > index 46ba871..0b79f92 100644 > --- a/common/complete.c > +++ b/common/complete.c > @@ -27,6 +27,7 @@ > #include <libgen.h> > #include <command.h> > #include <stringlist.h> > +#include <environment.h> > > static int file_complete(struct string_list *sl, char *instr) > { > @@ -55,7 +56,7 @@ static int file_complete(struct string_list *sl, char *instr) > strcat(tmp, "/"); > else > strcat(tmp, " "); > - string_list_add(sl, tmp); > + string_list_add_sorted(sl, tmp); > } > } > > @@ -67,6 +68,67 @@ out: > return 0; > } > > +static int path_command_complete(struct string_list *sl, char *instr) > +{ > + struct stat s; > + DIR *dir; > + struct dirent *d; > + char tmp[PATH_MAX]; > + char *path, *p, *n; > + > + p = path = strdup(getenv("PATH")); > + > + if (!path) > + return -1; > + > + while (p) { > + n = strchr(p, ':'); > + if (n) > + *n++ = '\0'; > + if (*p != '\0') { You can save one indention level by doing if (*p == '\0' ) { p = n; continue; } > + dir = opendir(p); > + > + /* We need to check all PATH dirs, so if one failed, > + * try next */ > + if (!dir) { > + p = n; > + continue; > + } > + > + while ((d = readdir(dir))) { > + if (!strcmp(d->d_name, ".") || > + !strcmp(d->d_name, "..")) > + continue; > + > + if (!strncmp(instr, d->d_name, strlen(instr))) { > + strcpy(tmp, d->d_name); > + if (!stat(tmp, &s) && > + S_ISDIR(s.st_mode)) > + continue; > + else > + strcat(tmp, " "); > + > + /* This function is called > + * after command_complete, > + * so we check if a double > + * entry exist */ > + if (string_list_contains > + (sl, tmp) == 0) { > + string_list_add_sorted(sl, tmp); > + } > + } > + } > + > + closedir(dir); > + } > + p = n; > + } > + > + free(path); > + > + return 0; > +} > + -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <1323424372-8142-4-git-send-email-a.aring@phytec.de>]
* Re: [PATCH 2/5] twlcore: rename twl4030 to twlcore driver [not found] ` <1323424372-8142-4-git-send-email-a.aring@phytec.de> @ 2011-12-12 9:38 ` Sascha Hauer 0 siblings, 0 replies; 3+ messages in thread From: Sascha Hauer @ 2011-12-12 9:38 UTC (permalink / raw) To: Alexander Aring; +Cc: barebox On Fri, Dec 09, 2011 at 10:52:49AM +0100, Alexander Aring wrote: > Abstract a general twl device driver twlcore to call i2c send/write > functions. > Renamed mfd/twl4030.c to mfd/twlcore.c. > Rewrote twl4030-otg to use twlcore driver instead of old twl4030 > driver. > > Rename patch to use twlcore instead twl4030 in beagleboard. > > Fixed some code-styling issues pointed out by checkpatch. > > Signed-off-by: Alexander Aring <a.aring@phytec.de> > --- > arch/arm/boards/omap/board-beagle.c | 2 +- > drivers/mfd/Kconfig | 4 +- > drivers/mfd/Makefile | 2 +- > drivers/mfd/twl-core.c | 190 ++++++++++++++ > drivers/mfd/twl4030.c | 186 -------------- > drivers/usb/otg/twl4030.c | 52 ++-- > include/mfd/twl-core.h | 461 +++++++++++++++++++++++++++++++++++ > include/mfd/twl4030.h | 461 ----------------------------------- > 8 files changed, 681 insertions(+), 677 deletions(-) > create mode 100644 drivers/mfd/twl-core.c > delete mode 100644 drivers/mfd/twl4030.c > create mode 100644 include/mfd/twl-core.h > delete mode 100644 include/mfd/twl4030.h > > diff --git a/arch/arm/boards/omap/board-beagle.c b/arch/arm/boards/omap/board-beagle.c > index bfb08f7..4dd782f 100644 > --- a/arch/arm/boards/omap/board-beagle.c > +++ b/arch/arm/boards/omap/board-beagle.c > @@ -275,7 +275,7 @@ static struct ehci_platform_data ehci_pdata = { > > static struct i2c_board_info i2c_devices[] = { > { > - I2C_BOARD_INFO("twl4030", 0x48), > + I2C_BOARD_INFO("twlcore", 0x48), The name should stay "twl4030" because that's what it is. You could make the driver match for both twl4030 and twl6030 instead. > }, > }; > > diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig > index 96440d8..1677e2f 100644 > --- a/drivers/mfd/Kconfig > +++ b/drivers/mfd/Kconfig > @@ -16,9 +16,9 @@ config I2C_LP3972 > depends on I2C > bool "LP3972 driver" > > -config I2C_TWL4030 > +config I2C_TWLCORE > depends on I2C > - bool "TWL4030 driver" > + bool "TWLCORE driver" I think we should rather prompt the user for twl4030/twl6030 instead. > select GPIO > > config DRIVER_SPI_MC13783 > diff --git a/drivers/mfd/Makefile b/drivers/mfd/Makefile > index d411f23..c54a6a1 100644 > --- a/drivers/mfd/Makefile > +++ b/drivers/mfd/Makefile > @@ -2,5 +2,5 @@ obj-$(CONFIG_I2C_MC13892) += mc13892.o > obj-$(CONFIG_I2C_MC34704) += mc34704.o > obj-$(CONFIG_I2C_MC9SDZ60) += mc9sdz60.o > obj-$(CONFIG_I2C_LP3972) += lp3972.o > -obj-$(CONFIG_I2C_TWL4030) += twl4030.o > +obj-$(CONFIG_I2C_TWLCORE) += twl-core.o > obj-$(CONFIG_DRIVER_SPI_MC13783) += mc13783.o > diff --git a/drivers/mfd/twl-core.c b/drivers/mfd/twl-core.c Please generate patches with file renames with git format-patch -M From looking at the register layout the twl4030 and the twl6030 do not have much in common. What can be shared between both seems to be the core driver. I suggest that you do something like this: struct twl_core { struct cdev cdev; struct i2c_client *client; }; struct twl4030 { struct twl_core core; }; struct twl6030 { struct twl_core core; }; Then you can rename the twl4030_reg_* functions to twlcore_reg_* and create wrapper static inline functions with the twl4030_reg_* names which call twlcore_reg_* The rationale is that the twl4030 otg driver should still work with struct twl4030 and the twl4030 register accessors as this won't work with the twl6030. Sascha -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list barebox@lists.infradead.org http://lists.infradead.org/mailman/listinfo/barebox ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-12-12 9:39 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [not found] <1323424372-8142-1-git-send-email-a.aring@phytec.de> [not found] ` <1323424372-8142-2-git-send-email-a.aring@phytec.de> 2011-12-12 8:48 ` [PATCH 1/2] stringlist-functions: add sorted insert Sascha Hauer [not found] ` <1323424372-8142-3-git-send-email-a.aring@phytec.de> 2011-12-12 9:08 ` [PATCH 2/2] auto-completion: add auto-completion for path files Sascha Hauer [not found] ` <1323424372-8142-4-git-send-email-a.aring@phytec.de> 2011-12-12 9:38 ` [PATCH 2/5] twlcore: rename twl4030 to twlcore driver Sascha Hauer
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox