xargs: -d '\0' is rejected, and octal escapes need a leading 0
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 75/100
Línea de trabajo
Empieza por parse_delimiter en src/xargs/mod.rs y la prueba test_delimiter_parsing mencionada en el issue. Compara el análisis de las secuencias de escape con los ejemplos de GNU incluidos en el texto y luego ejecuta las pruebas de análisis de delimitadores. El trabajo estará terminado cuando las secuencias de escape aceptadas y rechazadas que se enumeran se comporten como se describe y la prueba existente refleje el comportamiento previsto de \0.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
$ printf 'a\0b' | xargs -d '\0' echo
Error: error: invalid value '\0' for '--delimiter <delimiter>': Invalid octal sequence: cannot parse integer from empty string
$ printf 'a\0b' | /usr/bin/xargs -d '\0' echo # GNU findutils 4.10.0
a b
$ printf 'a:b' | xargs -d '\72' echo
Error: error: invalid value '\72' for '--delimiter <delimiter>': Invalid escape sequence: \72
GNU's manual says -d takes "an octal or hexadecimal escape code ... understood as for the printf command", and GNU xargs accepts \0, \72, \072, \101 and \0101. It rejects \400, \8 and \09.
In parse_delimiter (src/xargs/mod.rs:914), any escape that starts with 0 goes to the octal branch with the 0 removed, so \0 parses an empty string; the "0" => Ok(b'\0') arm below it never runs. Octal without a leading 0 isn't handled at all.
test_delimiter_parsing asserts parse_delimiter("\\0").is_err(), so matching GNU means changing that line. I have a fix that parses \ followed by octal digits as one octal value, with tests for the cases above; happy to open a PR if you want GNU's behaviour here.
uutils findutils main 505421d.
- Lenguaje dominante
- Rust
- Estrellas
- 653
- Forks
- 115
- Merge medio
- 1 d 4 h
- PR fusionados (30 d)
- 27
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de uutils/findutils
-
find: -printf %h drops a doubled slashPosiblemente ocupada @qodelicious la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
find: -printf %TT and %TX drop the fraction of a secondPosiblemente ocupada @qodelicious la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
uutils/findutils#692 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
find: -fprint /dev/stdout truncates a redirected stdoutPosiblemente ocupada @qodelicious la tomó hace 1 día. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
Todos los issues de uutils/findutils
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
type: documentation
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
tauri-apps/tauri#16476 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
fish-shell/fish-shell#13084 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
bug: merge_insert does not detect concurrent inserts of the same FixedSizeBinary primary keyPosiblemente ocupada @lance-gatefixer la tomó hoy. Abiertobug
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
lance-format/lance#10811 ·
Los mantenedores suelen responder en 2 días
-
provider testing
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
mishraprafful/multihull#234 ·
Los mantenedores suelen responder en 1 día