Hi, On Sun, 2020-11-15 at 07:20 -0800, Vitalio wrote: > Append '/' to directories in source file list (for `-l' > option) to allow > quickly distinguish them from regular files (to avoid adding them raw > into %files section). This is needed for ALT for our debuginfo > processing to speed things up.
I understand you would like to make sure all comp_dirs end with a trailing '/' character. But I don't think unconditionally adding a '/' is the right thing to do: > diff --git a/tools/debugedit.c b/tools/debugedit.c > index c2884933c..2eb912c72 100644 > --- a/tools/debugedit.c > +++ b/tools/debugedit.c > @@ -1923,7 +1923,7 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct > abbrev_tag *t, int phase) > const char *p = skip_dir_prefix (comp_dir, base_dir); > if (p != NULL && p[0] != '\0') > { > - size_t size = strlen (p) + 1; > + size_t size = strlen (p); > while (size > 0) > { > ssize_t ret = write (list_file_fd, p, size); > @@ -1932,6 +1932,10 @@ edit_attributes (DSO *dso, unsigned char *ptr, struct > abbrev_tag *t, int phase) > size -= ret; > p += ret; > } > + /* Output trailing dir separator to distinguish them quickly from > + regular files. */ > + if (size == 0) > + write (list_file_fd, "/", 2); > } > } Note for others, the list_file contains zero terminated file names. That is why we want to write size = strlen (p) + 1 characters, so that it includes the '\0' terminator. After the while loop size is always zero, unless an error occurred and not all characters were written. So this code would add a "/" (including a termination '\0') always, even if there was already one. So I think you actually want to test that p[0] != '/' before adding the string "/", but just write (list_file_fd, "", 1) otherwise. BTW. How does this help you speed things up? Cheers, Mark _______________________________________________ Rpm-maint mailing list Rpm-maint@lists.rpm.org http://lists.rpm.org/mailman/listinfo/rpm-maint