[ros-diffs] [jmorlan] 35098: - cmd_label: If a label is given on the command line, don't truncate it to only 12 characters; NTFS supports up to 32. Also, use _tcsncat, since _tcsncpy won't always nul-terminate. - Don't show the old volume information if a label was given on the command line. (Bug 3621) - If setting the label was unsuccessful, give an error message.

jmorlan at svn.reactos.org jmorlan at svn.reactos.org
Mon Aug 4 16:16:02 CEST 2008


Author: jmorlan
Date: Mon Aug  4 09:16:01 2008
New Revision: 35098

URL: http://svn.reactos.org/svn/reactos?rev=35098&view=rev
Log:
- cmd_label: If a label is given on the command line, don't truncate it to only 12 characters; NTFS supports up to 32. Also, use _tcsncat, since _tcsncpy won't always nul-terminate.
- Don't show the old volume information if a label was given on the command line. (Bug 3621)
- If setting the label was unsuccessful, give an error message.

Modified:
    trunk/reactos/base/shell/cmd/label.c

Modified: trunk/reactos/base/shell/cmd/label.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/shell/cmd/label.c?rev=35098&r1=35097&r2=35098&view=diff
==============================================================================
--- trunk/reactos/base/shell/cmd/label.c [iso-8859-1] (original)
+++ trunk/reactos/base/shell/cmd/label.c [iso-8859-1] Mon Aug  4 09:16:01 2008
@@ -57,7 +57,7 @@
 		szRootPath[0] = szCurPath[0];
 	}
 
-	_tcsncpy (szLabel, param, 12);
+	_tcsncat(szLabel, param, 79);
 
 	/* check root path */
 	if (!IsValidPathName (szRootPath))
@@ -67,30 +67,35 @@
 		return 1;
 	}
 
-	GetVolumeInformation(szRootPath, szOldLabel, 80, &dwSerialNr,
-	                     NULL, NULL, NULL, 0);
-
-	/* print drive info */
-	if (szOldLabel[0] != _T('\0'))
-	{
-		ConOutResPrintf(STRING_LABEL_HELP2, _totupper(szRootPath[0]), szOldLabel);
-	}
-	else
-	{
-		ConOutResPrintf(STRING_LABEL_HELP3, _totupper(szRootPath[0]));
-	}
-
-	/* print the volume serial number */
-	ConOutResPrintf(STRING_LABEL_HELP4, HIWORD(dwSerialNr), LOWORD(dwSerialNr));
-
 	if (szLabel[0] == _T('\0'))
 	{
+		GetVolumeInformation(szRootPath, szOldLabel, 80, &dwSerialNr,
+		                     NULL, NULL, NULL, 0);
+
+		/* print drive info */
+		if (szOldLabel[0] != _T('\0'))
+		{
+			ConOutResPrintf(STRING_LABEL_HELP2, _totupper(szRootPath[0]), szOldLabel);
+		}
+		else
+		{
+			ConOutResPrintf(STRING_LABEL_HELP3, _totupper(szRootPath[0]));
+		}
+
+		/* print the volume serial number */
+		ConOutResPrintf(STRING_LABEL_HELP4, HIWORD(dwSerialNr), LOWORD(dwSerialNr));
+
 		ConOutResPuts(STRING_LABEL_HELP5);
 
 		ConInString(szLabel, 80);
 	}
 
-	SetVolumeLabel(szRootPath, szLabel);
+	if (!SetVolumeLabel(szRootPath, szLabel))
+	{
+		ConOutFormatMessage(GetLastError());
+		nErrorLevel = 1;
+		return 1;
+	}
 
 	return 0;
 }



More information about the Ros-diffs mailing list