8000 Fix printf so %d can print zero · havensjg/osdev-demos@0b6b94f · GitHub
[go: up one dir, main page]

Skip to content

Commit 0b6b94f

Browse files
committed
Fix printf so %d can print zero
1 parent 04a929f commit 0b6b94f

File tree

5 files changed

+30
-5
lines changed

5 files changed

+30
-5
lines changed

02-printf/src/printf.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ static int print_number(unsigned int v) {
3434
if (v > 0) {
3535
buf[i] = '0' + (v % 10);
3636
} else {
37-
buf[i] = 0;
37+
if (i != 0) {
38+
buf[i] = 0;
39+
} else {
40+
// v was zero, special case
41+
buf[i] = '0';
42+
}
3843
}
3944
v /= 10;
4045
}

03-interrupts/src/printf.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ static int print_number(unsigned int v) {
3434
if (v > 0) {
3535
buf[i] = '0' + (v % 10);
3636
} else {
37-
buf[i] = 0;
37+
if (i != 0) {
38+
buf[i] = 0;
39+
} else {
40+
// v was zero, special case
41+
buf[i] = '0';
42+
}
3843
}
3944
v /= 10;
4045
}

04-pitmillis/src/printf.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ static int print_number(unsigned int v) {
3434
if (v > 0) {
3535
buf[i] = '0' + (v % 10);
3636
} else {
37-
buf[i] = 0;
37+
if (i != 0) {
38+
buf[i] = 0;
39+
} else {
40+
// v was zero, special case
41+
buf[i] = '0';
42+
}
3843
}
3944
v /= 10;
4045
}

05-keyboard/src/printf.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ static int print_number(unsigned int v) {
3434
if (v > 0) {
3535
buf[i] = '0' + (v % 10);
3636
} else {
37-
buf[i] = 0;
37+
if (i != 0) {
38+
buf[i] = 0;
39+
} else {
40+
// v was zero, special case
41+
buf[i] = '0';
42+
}
3843
}
3944
v /= 10;
4045
}

06-cmos/src/printf.c

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,12 @@ static int print_number(unsigned int v) {
3434
if (v > 0) {
3535
buf[i] = '0' + (v % 10);
3636
} else {
37-
buf[i] = 0;
37+
if (i != 0) {
38+
buf[i] = 0;
39+
} else {
40+
// v was zero, special case
41+
buf[i] = '0';
42+
}
3843
}
3944
v /= 10;
4045
}

0 commit comments

Comments
 (0)
0