Hi! On Wed, 2012-06-27 at 20:43:15 +0200, Svante Signell wrote: > Source: libpst > Version: 0.6.54-3 > Severity: important > Tags: patch > User: debian-hurd@lists.debian.org > Usertags: hurd
> Hi, libpst does not build for GNU/Hurd due to PATH_MAX issues. Attached > are three small patches to enable a successful build. I only see two, is there one missing? > libpst.c.patch checks for the availability of get_current_dir_name and > user that function if available. > pst2dii.cpp.in.patch avoids usage of PATH_MAX by dynamically allocating > string buffers as needed. pst2dii will be built if imagemagick > (providing /usr/bin/convert) and libgd2-noxpm-dev | libgd2-xpm-dev > (providing gd.h and libgd) are installed, so a dependency on these needs > to be added to debian/rules if building that executable. I'm guessing you mean debian/control (maybe some flags need to be enabled in debian/rules too though). > For patch2: > Q1) I'm not sure if x=realloc(x,len) is OK. Better solution? It's ok, but see above. > Q2) Should I include an updated debian/rules too (or remove patch 2 > completely)? If patch2 is pst2dii.cpp.in.patch, then I think it's good to include that and the other needed changes. > --- a/src/libpst.c 2011-12-25 00:19:11.000000000 +0100 > +++ b/src/libpst.c 2012-06-27 09:59:41.000000000 +0200 > @@ -289,6 +289,17 @@ > static char* pst_wide_to_single(char *wt, size_t size); > > > +char *pst_getcwd(void) { If the function is not being used anywhere else, just make it static. Otherwise this can produce warnings as there will be a missing prototype in the headers. > --- a/src/pst2dii.cpp.in 2011-12-25 00:19:11.000000000 +0100 > +++ b/src/pst2dii.cpp.in 2012-06-27 11:08:02.000000000 +0200 > @@ -344,8 +344,10 @@ > { > if (png_open) { > png_open = false; > - char fn[PATH_MAX]; > - snprintf(fn, sizeof(fn), "page%d.png", ++page_sequence); > + char *fn = NULL; > + int len = 4 + 4 + 4; > + fn = (char*)pst_malloc(len) + 1; Switch these two lines from tabs to spaces. I think you want “pst_malloc(len + 1)” instead of “pst_malloc(len) + 1”. Also why only 4 for the decimal from page_sequence? is that delimited somewhere else? And you might as well assign directly to fn, instead of first initializing it to NULL and immediately overwriting it. > + snprintf(fn, len, "page%d.png", ++page_sequence); > FILE *pngout = fopen(fn, "wb"); > if (pngout) { > gdImagePng(image, pngout); > @@ -354,6 +356,7 @@ > gdImageDestroy(image); // free memory > png_names.push_back(fn); > conversion += string(" ") + fn; > + free(fn); Switch from tab to spaces. > } > } > > @@ -366,8 +369,12 @@ > conversion = string(convert); > png_names.clear(); > open_png(); > - snprintf(pdf_name, sizeof(pdf_name), "dii%06d", ++email_sequence); > + int len = 3 + 7; > + pdf_name = (char*)pst_malloc(len) + 1; pst_malloc(len + 1) > + snprintf(pdf_name, len, "dii%06d", ++email_sequence); > fprintf(dii_file, "\n@T %s\n", pdf_name); > + len = strlen(output_directory) + 3 + 7; I think you mean something like: len = strlen(output_directory) + 1 + 3 + 6 + 4; > + pdf_name = (char *)pst_realloc(pdf_name,len) + 1; Yeah, I guess you could just allocate once, but to avoid confusion you'd better add a comment mentioning why the bigger size, etc. > snprintf(pdf_name, sizeof(pdf_name), "%s/dii%06d.pdf", output_directory, > email_sequence); > } thanks, guillem -- To UNSUBSCRIBE, email to debian-hurd-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/20120729032346.ga15...@gaara.hadrons.org