# Extra 'j' appended stdin but not really present

**URL:** <https://forum.codecrafters.io/t/extra-j-appended-stdin-but-not-really-present/15489>\
**Category:** Challenges\
**Tags:** challenge:shell\
**Created:** [November 4, 2025, 2:17pm UTC](https://forum.codecrafters.io/t/extra-j-appended-stdin-but-not-really-present/15489 "2025-11-04T14:17:11Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![sandipndev](https://yyz1.discourse-cdn.com/flex003/user_avatar/forum.codecrafters.io/sandipndev/32/19481_2.png) [@sandipndev](https://forum.codecrafters.io/u/sandipndev)\
**Post date:** [November 4, 2025, 2:17pm UTC](https://forum.codecrafters.io/t/extra-j-appended-stdin-but-not-really-present/15489/1 "2025-11-04T14:17:12Z")

</div>

I’m stuck on Stage #EI0

This stemmed from #RH7. I tried pwd just to verify

Here are my logs:

```auto
remote: [tester::#EI0] Running tests for Stage #EI0 (Navigation - The pwd builtin)
remote: [tester::#EI0] Running ./your_program.sh
remote: [your-program] $ type pwdj
remote: [tester::#EI0] ^ Line does not match expected value.
remote: [tester::#EI0] Expected: "$ type pwd"
remote: [tester::#EI0] Received: "$ type pwdj"
remote: [tester::#EI0] Assertion failed.
remote: [tester::#EI0] Test failed

```

And here’s a snippet of my relevant code when I press enter.

I have no idea from where the extra ‘j’ is coming from.

This runs perfectly fine locally.

I am using Crossterm and here’s my complete solution: [GitHub - sandipndev-space/shell-rust](http://github.com/sandipndev-space/shell-rust)

```rust
                KeyCode::Enter => {
                    print!("\r\n");
                    io::stdout().flush()?;

                    let shell_line = line.trim_end();
                    if !shell_line.is_empty() {
                        history::add_entry(shell_line.to_string());
                        run_shell_line(shell_line)?;
                    }

                    line.clear();

                    // Drain any pending input bytes
                    while event::poll(std::time::Duration::from_millis(0))? {
                        if let Event::Key(_) = event::read()? {}
                    }

                    print_prompt(&mut stdout, &line)?;
                }

```

---

<div class="post-metadata">

**Author:** ![sandipndev](https://yyz1.discourse-cdn.com/flex003/user_avatar/forum.codecrafters.io/sandipndev/32/19481_2.png) [@sandipndev](https://forum.codecrafters.io/u/sandipndev)\
**Post date:** [November 5, 2025, 4:16am UTC](https://forum.codecrafters.io/t/extra-j-appended-stdin-but-not-really-present/15489/4 "2025-11-05T04:16:27Z")

</div>

I FIXED IT MYSELF

Apparently the tester uses Control + J instead of Enter to test.

Codecrafters should add this to docs.

---

<div class="post-metadata">

**Author:** ![andy1li](https://yyz1.discourse-cdn.com/flex003/user_avatar/forum.codecrafters.io/andy1li/32/10_2.png) [@andy1li](https://forum.codecrafters.io/u/andy1li)\
**Post date:** [November 5, 2025, 5:58am UTC](https://forum.codecrafters.io/t/extra-j-appended-stdin-but-not-really-present/15489/5 "2025-11-05T05:58:05Z")

</div>

Hey @sandipndev, looks like **crossterm** maps newline (`0xA`) to Ctrl+J in raw mode:

> <https://github.com/crossterm-rs/crossterm/blob/6af9116b6a8ba365d8d8e7a806cbce318498b84d/src/event/sys/unix/parse.rs#L95+L98>

> <https://github.com/crossterm-rs/crossterm/blob/6af9116b6a8ba365d8d8e7a806cbce318498b84d/src/event/sys/unix/parse.rs#L106+L109>

---

<div class="post-metadata">

**Author:** ![sandipndev](https://yyz1.discourse-cdn.com/flex003/user_avatar/forum.codecrafters.io/sandipndev/32/19481_2.png) [@sandipndev](https://forum.codecrafters.io/u/sandipndev)\
**Post date:** [November 5, 2025, 11:26am UTC](https://forum.codecrafters.io/t/extra-j-appended-stdin-but-not-really-present/15489/7 "2025-11-05T11:26:37Z")

</div>

Ohhh than’s a great find. Thanks - it was me who complected it that means!

---

<div class="post-metadata">

**Author:** ![system](https://canada1.discourse-cdn.com/flex003/uploads/codecrafters/original/3X/7/0/700657133935c15703e22c7c8870394f6e6dc27d.svg) [@system](https://forum.codecrafters.io/u/system)\
**Post date:** [November 10, 2025, 11:27am UTC](https://forum.codecrafters.io/t/extra-j-appended-stdin-but-not-really-present/15489/8 "2025-11-10T11:27:14Z")

</div>

Closed on November 10, 2025, 11:27am UTC

This topic was automatically closed 5 days after the last reply. New replies are no longer allowed.
