Download raw body.
got-portable: Fix "could not parse reference data" on NetBSD
got-portable: Fix "could not parse reference data" on NetBSD
got-portable: Fix "could not parse reference data" on NetBSD
> > The below patch explicitly checks whether the ref is a directory. > > Maybe this should go in non-portable got too, at least to keep > > the codebases more similar. > > Could you change the S_ISDIR check to !S_ISREG? That would also cover > device nodes, sockets, fifos, etc. > ok stsp@ with that change, provided it still works as expected for > you and the tests are passing. Done. Should I push the same patch to got-portable too? I'm not sure what the process is. (got-portable regress is already broken on NetBSD, so I haven't tried that, but I'm using got-portable with the change.) > > (By the way, I noticed that if fstat fails, parse_ref_file doesn't > > call get_lockfile_unlock in the cleanup path. Is that an oversight, > > or is it that way because we know the program's going to stop soon > > anyway, or is it something else? Every other "goto done;" unlocks, > > so if it's okay to unlock in that case too, the unlock could be > > moved to "done:" to make the code a bit tidier.) > > Looks like an oversight to me. Could you write a fix for this, too? > > Thanks! See patch below. Moving it to "done:" is more complicated than I thought, because sometimes the lock is kept when there's no error. -- James diff /home/falsifian/co/got path + /home/falsifian/co/got commit - e896de0dbd9971fbc7969f0df170b4a495b4cd28 blob - 90462626d8b4280e7a38aa3e03f64545013c53f6 file + lib/reference.c --- lib/reference.c +++ lib/reference.c @@ -206,6 +206,8 @@ parse_ref_file(struct got_reference **ref, const char } if (fstat(fileno(f), &sb) == -1) { err = got_error_from_errno2("fstat", abspath); + if (lock) + got_lockfile_unlock(lf, -1); goto done; } if (!S_ISREG(sb.st_mode)) {
got-portable: Fix "could not parse reference data" on NetBSD
got-portable: Fix "could not parse reference data" on NetBSD
got-portable: Fix "could not parse reference data" on NetBSD