Hi Karen, * Karen Tung (Karen.Tung at Sun.COM) wrote: > Glenn Lagasse wrote: >>> generate_checksums: >>> >>> - Most of the shell scripts I read have the functions defined for >>> the script right after any statically defined values. The compute_hash() >>> function is kinda in the middle of the file, can you move it? >>> >> >> I wouldn't say it's in the middle. The bulk of the file prior to it's >> location is comment/license text. I suppose I could move it above the >> argument check. Would that be acceptable? >> >> > Yes, that would be fine.
Ok, I'll make this change. >>> - I think it is better to pass in $IMAGE and $HASH_TYPES as arguments >>> to the compute_hash() function. That way, the function we are absolutely >>> clear on exactly which value is being used, and it doesn't depend on things >>> getting set correctly before the function is called. >>> >> >> I'll accept passing in $IMAGE since that changes but HASH_TYPES are >> static in the script and I don't see any reason to 'pass' them in as >> arguments. Unless I were to move the hash_type checking inside the >> compute_hash() function and I don't think that buys us anything and it >> would make the flow awkward (I don't believe checking to see if the >> manifest included any hashes is best done inside compute_hash() which >> means we need to set HASH_TYPES outside the function anyway). If >> HASH_TYPES isn't set correctly (the only possible output is that it's >> empty), we'll exit the script in the check specified hash types portion >> before ever calling compute_hash(). >> >> > compute_hash() is certainly not the place to check and make sure the > hash types are valid. Right now, the script is simple, so, one can > easily see that the hash types are set and computed before calling > compute_hash(). However, if this script becomes more complicated in > the future, where it is not so easy to spot and make sure, we might > accidentally call compute_hash() without having a valid value for > $HASH_TYPES. That's why, as good software engineering practice, we > should always pass in all the values that a function needs for > computation, instead of depending on things being set external to the > function. In any case, if you don't want to pass it in, please at > least put a comment for this function to say something about that it > assumes the HASH_TYPES variable is set prior to calling the function. So after thinking about this some more I agree that explicitly passing in HASH_TYPES to computer_hash() is the better approach. I'll make this change and send out another mail when I've updated the webrev. Thanks Karen! -- Glenn