Simplify is_my_tty()
This commit will serve to document why we shouldn't worry about the truncation in the call to strlcpy(3). Since we have one more byte in tmptty than in full_tty, truncation will produce a string that is at least one byte longer than full_tty. Such a string could never compare equal, so we're actually handling the truncation in a clever way. Maybe too clever, but that's why I'm documenting it here. Now, about the simplification itself: Since we made sure that both full_tty and tmptty are null-terminated, we can call strcmp(3) instead of strncmp(3). We can also simplify the return logic avoiding one branch. Cc: Paul Eggert <eggert@cs.ucla.edu> Signed-off-by: Alejandro Colomar <alx@kernel.org> Reviewed-by: Iker Pedrosa <ipedrosa@redhat.com>
This commit is contained in:
		
				
					committed by
					
						 Iker Pedrosa
						Iker Pedrosa
					
				
			
			
				
	
			
			
			
						parent
						
							e27ca53091
						
					
				
				
					commit
					1d7d94ed7d
				
			| @@ -32,7 +32,7 @@ static bool is_my_tty (const char tty[UT_LINESIZE]) | |||||||
| { | { | ||||||
| 	char         full_tty[STRLEN("/dev/") + UT_LINESIZE + 1]; | 	char         full_tty[STRLEN("/dev/") + UT_LINESIZE + 1]; | ||||||
| 	/* tmptty shall be bigger than full_tty */ | 	/* tmptty shall be bigger than full_tty */ | ||||||
| 	static char  tmptty[sizeof (full_tty)+1]; | 	static char  tmptty[sizeof(full_tty) + 1]; | ||||||
|  |  | ||||||
| 	full_tty[0] = '\0'; | 	full_tty[0] = '\0'; | ||||||
| 	if (tty[0] != '/') | 	if (tty[0] != '/') | ||||||
| @@ -42,17 +42,15 @@ static bool is_my_tty (const char tty[UT_LINESIZE]) | |||||||
| 	if ('\0' == tmptty[0]) { | 	if ('\0' == tmptty[0]) { | ||||||
| 		const char *tname = ttyname (STDIN_FILENO); | 		const char *tname = ttyname (STDIN_FILENO); | ||||||
| 		if (NULL != tname) | 		if (NULL != tname) | ||||||
| 			(void) strlcpy (tmptty, tname, sizeof tmptty); | 			(void) strlcpy (tmptty, tname, sizeof(tmptty)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if ('\0' == tmptty[0]) { | 	if ('\0' == tmptty[0]) { | ||||||
| 		(void) puts (_("Unable to determine your tty name.")); | 		(void) puts (_("Unable to determine your tty name.")); | ||||||
| 		exit (EXIT_FAILURE); | 		exit (EXIT_FAILURE); | ||||||
| 	} else if (strncmp (full_tty, tmptty, sizeof (tmptty)) != 0) { |  | ||||||
| 		return false; |  | ||||||
| 	} else { |  | ||||||
| 		return true; |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	return strcmp (full_tty, tmptty) == 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| /* | /* | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user