fix cmd: tail
This commit is contained in:
parent
bcdfa35f86
commit
a2561a41b9
|
@ -612,7 +612,7 @@ static int cmd_tail(int argc, char **argv)
|
||||||
rt_uint32_t target_line = 0;
|
rt_uint32_t target_line = 0;
|
||||||
rt_uint32_t current_line = 0;
|
rt_uint32_t current_line = 0;
|
||||||
rt_uint32_t required_lines = 0;
|
rt_uint32_t required_lines = 0;
|
||||||
rt_uint32_t after_xxx_line = 0;
|
rt_uint32_t start_line = 0;
|
||||||
|
|
||||||
if (argc < 2)
|
if (argc < 2)
|
||||||
{
|
{
|
||||||
|
@ -632,7 +632,7 @@ static int cmd_tail(int argc, char **argv)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
after_xxx_line = atoi(&argv[2][1]); /* eg: +100, to get the 100 */
|
start_line = atoi(&argv[2][1]); /* eg: +100, to get the 100 */
|
||||||
}
|
}
|
||||||
file_name = argv[3];
|
file_name = argv[3];
|
||||||
}
|
}
|
||||||
|
@ -651,6 +651,10 @@ static int cmd_tail(int argc, char **argv)
|
||||||
|
|
||||||
while ((read(fd, &c, sizeof(char))) > 0)
|
while ((read(fd, &c, sizeof(char))) > 0)
|
||||||
{
|
{
|
||||||
|
if(total_lines == 0)
|
||||||
|
{
|
||||||
|
total_lines++;
|
||||||
|
}
|
||||||
if (c == '\n')
|
if (c == '\n')
|
||||||
{
|
{
|
||||||
total_lines++;
|
total_lines++;
|
||||||
|
@ -659,11 +663,11 @@ static int cmd_tail(int argc, char **argv)
|
||||||
|
|
||||||
rt_kprintf("\nTotal Number of lines:%d\n", total_lines);
|
rt_kprintf("\nTotal Number of lines:%d\n", total_lines);
|
||||||
|
|
||||||
if (after_xxx_line != 0)
|
if (start_line != 0)
|
||||||
{
|
{
|
||||||
if (total_lines > after_xxx_line)
|
if (total_lines >= start_line)
|
||||||
{
|
{
|
||||||
required_lines = total_lines - after_xxx_line;
|
required_lines = total_lines - start_line + 1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -686,14 +690,14 @@ static int cmd_tail(int argc, char **argv)
|
||||||
|
|
||||||
while ((read(fd, &c, sizeof(char))) > 0)
|
while ((read(fd, &c, sizeof(char))) > 0)
|
||||||
{
|
{
|
||||||
|
if (current_line >= target_line)
|
||||||
|
{
|
||||||
|
rt_kprintf("%c", c);
|
||||||
|
}
|
||||||
if (c == '\n')
|
if (c == '\n')
|
||||||
{
|
{
|
||||||
current_line++;
|
current_line++;
|
||||||
}
|
}
|
||||||
if (current_line > target_line)
|
|
||||||
{
|
|
||||||
rt_kprintf("%c", c);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
rt_kprintf("\n");
|
rt_kprintf("\n");
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue