[ 
https://issues.apache.org/jira/browse/HADOOP-7494?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13081030#comment-13081030
 ] 

Daryn Sharp commented on HADOOP-7494:
-------------------------------------

bq. And i think the pattern match is necessary because the error msg displayed 
by parseLong() is strange if bytes specified like this -c+-10 or -c+10+.

I'm not sure what you mean... {{parseLong()}} seems to always throw 
{{java.lang.NumberFormatException: For input string: "something"}} for bad 
input.  Wouldn't something like this do what you want?
{code}
try {
  startingOffset = Long.parseLong(arg);
} catch (NumberFormatException)
  throw new NumberFormatException(arg + ": invalid number of bytes"); // note 
no trailing "." too
}
{code}

Other generally small issues:
# I generally like to see items in alphabetical order, in this case the usage 
options.
# I'd suggest changing {{processOffset()}} to {{preprocessOptions()}} and let 
it locate the {{-c}}.
# Code removes the {{-c}} when a number is glued on.  May as well remove the 
{{-c}} too when it has an argument.
# I think you can remove the pattern compile and use above snippet.
# Should set {{showLastBytes}} in both cases in the event the object is reused.
# {{arg.replace("+", "0")}} isn't right.  It's going to replace all occurrences 
of + with 0.  It also makes a lone + be a valid argument of 0.  Should use 
{{arg.substring(1)}} to strip the leading +.
# You're right about subtracting 1!  The fact that both 0 & 1 are 0 offset is 
odd.

For the last few points, perhaps something like this might work:
{code}
if (arg.startsWith("+")) {
  arg = arg.substr(arg,1);
  isNegativeOffset = false; // you can leave this showLastBytes if you want
} else {
  if (!arg.startsWith("-")) {
    arg = "-".concat(arg);
  }
  isNegativeOffset = true;
}
// parseLong() with exception cited earlier
if (startingOffset != 0) {
  startingOffset += isNegativeOffset ? 1 : -1;
}
{code}

I hope this helps!

> Add -c option for FSshell -tail
> -------------------------------
>
>                 Key: HADOOP-7494
>                 URL: https://issues.apache.org/jira/browse/HADOOP-7494
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: fs
>    Affects Versions: 0.23.0
>            Reporter: XieXianshan
>            Assignee: XieXianshan
>            Priority: Trivial
>             Fix For: 0.23.0
>
>         Attachments: HADOOP-7494-v0.2.patch, HADOOP-7494.patch
>
>
> Add the "-c" option for FSshell -tail to allow users to specify the output 
> bytes(currently,it's -1024 by default).
> For instance:
> $ hdfs dfs -tail -c -10 /user/hadoop/xiexs
> or
> $ hdfs dfs -tail -c+10 /user/hadoop/xiexs

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to