Browse Source

Clean up some analyzer warnings.

Rob Napier 11 years ago
parent
commit
8b01b2bf89

+ 3 - 3
RNCryptor.xcodeproj/project.pbxproj

@@ -393,7 +393,7 @@
 			isa = PBXProject;
 			attributes = {
 				CLASSPREFIX = RN;
-				LastUpgradeCheck = 0430;
+				LastUpgradeCheck = 0460;
 				ORGANIZATIONNAME = "Rob Napier";
 			};
 			buildConfigurationList = FB7564EA1512D3C4007B806B /* Build configuration list for PBXProject "RNCryptor" */;
@@ -549,7 +549,7 @@
 				MACOSX_DEPLOYMENT_TARGET = 10.7;
 				ONLY_ACTIVE_ARCH = YES;
 				PRODUCT_NAME = RNCryptor;
-				SDKROOT = macosx10.7;
+				SDKROOT = macosx;
 				WRAPPER_EXTENSION = framework;
 			};
 			name = Debug;
@@ -576,7 +576,7 @@
 				INFOPLIST_FILE = "RNCryptor OS X/RNCryptor OS X-Info.plist";
 				MACOSX_DEPLOYMENT_TARGET = 10.7;
 				PRODUCT_NAME = RNCryptor;
-				SDKROOT = macosx10.7;
+				SDKROOT = macosx;
 				WRAPPER_EXTENSION = framework;
 			};
 			name = Release;

+ 3 - 1
RNCryptor/RNCryptor.m

@@ -81,7 +81,9 @@ const uint8_t kRNCryptorFileVersion = 2;
 
 #if !OS_OBJECT_USE_OBJC
   dispatch_release(sem);
-  dispatch_release(queue);
+  if (queue) {
+    dispatch_release(queue);
+  }
 #endif
 
   if (returnedError) {

+ 1 - 1
RNCryptor/RNDecryptor.m

@@ -167,7 +167,7 @@ static const NSUInteger kPreambleSize = 2;
     return;
   }
 
-  RNCryptorSettings settings;
+  RNCryptorSettings settings = {};
   if (![self getSettings:&settings forPreamble:[data subdataWithRange:NSMakeRange(0, kPreambleSize)]]) {
     [self cleanupAndNotifyWithError:[NSError errorWithDomain:kRNCryptorErrorDomain
                                                         code:kRNCryptorUnknownHeader

+ 279 - 0
rncrypt/rncrypt.xcodeproj/project.pbxproj

@@ -0,0 +1,279 @@
+// !$*UTF8*$!
+{
+	archiveVersion = 1;
+	classes = {
+	};
+	objectVersion = 46;
+	objects = {
+
+/* Begin PBXBuildFile section */
+		FBB08CB216B8ABB600E7E968 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBB08CB116B8ABB600E7E968 /* Foundation.framework */; };
+		FBB08CB516B8ABB600E7E968 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = FBB08CB416B8ABB600E7E968 /* main.m */; };
+		FBB08CB916B8ABB600E7E968 /* rncrypt.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = FBB08CB816B8ABB600E7E968 /* rncrypt.1 */; };
+		FBB08CC816B8ABE600E7E968 /* RNCryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = FBB08CC016B8ABE600E7E968 /* RNCryptor.m */; };
+		FBB08CC916B8ABE600E7E968 /* RNCryptorEngine.m in Sources */ = {isa = PBXBuildFile; fileRef = FBB08CC316B8ABE600E7E968 /* RNCryptorEngine.m */; };
+		FBB08CCA16B8ABE600E7E968 /* RNDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = FBB08CC516B8ABE600E7E968 /* RNDecryptor.m */; };
+		FBB08CCB16B8ABE600E7E968 /* RNEncryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = FBB08CC716B8ABE600E7E968 /* RNEncryptor.m */; };
+		FBB08CCD16B8ACEB00E7E968 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FBB08CCC16B8ACEB00E7E968 /* Security.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+		FBB08CAC16B8ABB600E7E968 /* CopyFiles */ = {
+			isa = PBXCopyFilesBuildPhase;
+			buildActionMask = 2147483647;
+			dstPath = /usr/share/man/man1/;
+			dstSubfolderSpec = 0;
+			files = (
+				FBB08CB916B8ABB600E7E968 /* rncrypt.1 in CopyFiles */,
+			);
+			runOnlyForDeploymentPostprocessing = 1;
+		};
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+		FBB08CAE16B8ABB600E7E968 /* rncrypt */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = rncrypt; sourceTree = BUILT_PRODUCTS_DIR; };
+		FBB08CB116B8ABB600E7E968 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+		FBB08CB416B8ABB600E7E968 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
+		FBB08CB716B8ABB600E7E968 /* rncrypt-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "rncrypt-Prefix.pch"; sourceTree = "<group>"; };
+		FBB08CB816B8ABB600E7E968 /* rncrypt.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = rncrypt.1; sourceTree = "<group>"; };
+		FBB08CBF16B8ABE600E7E968 /* RNCryptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNCryptor.h; path = ../../RNCryptor/RNCryptor.h; sourceTree = "<group>"; };
+		FBB08CC016B8ABE600E7E968 /* RNCryptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNCryptor.m; path = ../../RNCryptor/RNCryptor.m; sourceTree = "<group>"; };
+		FBB08CC116B8ABE600E7E968 /* RNCryptor+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "RNCryptor+Private.h"; path = "../../RNCryptor/RNCryptor+Private.h"; sourceTree = "<group>"; };
+		FBB08CC216B8ABE600E7E968 /* RNCryptorEngine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNCryptorEngine.h; path = ../../RNCryptor/RNCryptorEngine.h; sourceTree = "<group>"; };
+		FBB08CC316B8ABE600E7E968 /* RNCryptorEngine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNCryptorEngine.m; path = ../../RNCryptor/RNCryptorEngine.m; sourceTree = "<group>"; };
+		FBB08CC416B8ABE600E7E968 /* RNDecryptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNDecryptor.h; path = ../../RNCryptor/RNDecryptor.h; sourceTree = "<group>"; };
+		FBB08CC516B8ABE600E7E968 /* RNDecryptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNDecryptor.m; path = ../../RNCryptor/RNDecryptor.m; sourceTree = "<group>"; };
+		FBB08CC616B8ABE600E7E968 /* RNEncryptor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = RNEncryptor.h; path = ../../RNCryptor/RNEncryptor.h; sourceTree = "<group>"; };
+		FBB08CC716B8ABE600E7E968 /* RNEncryptor.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = RNEncryptor.m; path = ../../RNCryptor/RNEncryptor.m; sourceTree = "<group>"; };
+		FBB08CCC16B8ACEB00E7E968 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+		FBB08CAB16B8ABB600E7E968 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FBB08CCD16B8ACEB00E7E968 /* Security.framework in Frameworks */,
+				FBB08CB216B8ABB600E7E968 /* Foundation.framework in Frameworks */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+		FBB08CA516B8ABB600E7E968 = {
+			isa = PBXGroup;
+			children = (
+				FBB08CCC16B8ACEB00E7E968 /* Security.framework */,
+				FBB08CB316B8ABB600E7E968 /* rncrypt */,
+				FBB08CB016B8ABB600E7E968 /* Frameworks */,
+				FBB08CAF16B8ABB600E7E968 /* Products */,
+			);
+			sourceTree = "<group>";
+		};
+		FBB08CAF16B8ABB600E7E968 /* Products */ = {
+			isa = PBXGroup;
+			children = (
+				FBB08CAE16B8ABB600E7E968 /* rncrypt */,
+			);
+			name = Products;
+			sourceTree = "<group>";
+		};
+		FBB08CB016B8ABB600E7E968 /* Frameworks */ = {
+			isa = PBXGroup;
+			children = (
+				FBB08CB116B8ABB600E7E968 /* Foundation.framework */,
+			);
+			name = Frameworks;
+			sourceTree = "<group>";
+		};
+		FBB08CB316B8ABB600E7E968 /* rncrypt */ = {
+			isa = PBXGroup;
+			children = (
+				FBB08CB416B8ABB600E7E968 /* main.m */,
+				FBB08CBF16B8ABE600E7E968 /* RNCryptor.h */,
+				FBB08CC016B8ABE600E7E968 /* RNCryptor.m */,
+				FBB08CC116B8ABE600E7E968 /* RNCryptor+Private.h */,
+				FBB08CC216B8ABE600E7E968 /* RNCryptorEngine.h */,
+				FBB08CC316B8ABE600E7E968 /* RNCryptorEngine.m */,
+				FBB08CC416B8ABE600E7E968 /* RNDecryptor.h */,
+				FBB08CC516B8ABE600E7E968 /* RNDecryptor.m */,
+				FBB08CC616B8ABE600E7E968 /* RNEncryptor.h */,
+				FBB08CC716B8ABE600E7E968 /* RNEncryptor.m */,
+				FBB08CB816B8ABB600E7E968 /* rncrypt.1 */,
+				FBB08CB616B8ABB600E7E968 /* Supporting Files */,
+			);
+			path = rncrypt;
+			sourceTree = "<group>";
+		};
+		FBB08CB616B8ABB600E7E968 /* Supporting Files */ = {
+			isa = PBXGroup;
+			children = (
+				FBB08CB716B8ABB600E7E968 /* rncrypt-Prefix.pch */,
+			);
+			name = "Supporting Files";
+			sourceTree = "<group>";
+		};
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+		FBB08CAD16B8ABB600E7E968 /* rncrypt */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = FBB08CBC16B8ABB600E7E968 /* Build configuration list for PBXNativeTarget "rncrypt" */;
+			buildPhases = (
+				FBB08CAA16B8ABB600E7E968 /* Sources */,
+				FBB08CAB16B8ABB600E7E968 /* Frameworks */,
+				FBB08CAC16B8ABB600E7E968 /* CopyFiles */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+			);
+			name = rncrypt;
+			productName = rncrypt;
+			productReference = FBB08CAE16B8ABB600E7E968 /* rncrypt */;
+			productType = "com.apple.product-type.tool";
+		};
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+		FBB08CA616B8ABB600E7E968 /* Project object */ = {
+			isa = PBXProject;
+			attributes = {
+				LastUpgradeCheck = 0460;
+				ORGANIZATIONNAME = "Rob Napier";
+			};
+			buildConfigurationList = FBB08CA916B8ABB600E7E968 /* Build configuration list for PBXProject "rncrypt" */;
+			compatibilityVersion = "Xcode 3.2";
+			developmentRegion = English;
+			hasScannedForEncodings = 0;
+			knownRegions = (
+				en,
+			);
+			mainGroup = FBB08CA516B8ABB600E7E968;
+			productRefGroup = FBB08CAF16B8ABB600E7E968 /* Products */;
+			projectDirPath = "";
+			projectRoot = "";
+			targets = (
+				FBB08CAD16B8ABB600E7E968 /* rncrypt */,
+			);
+		};
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+		FBB08CAA16B8ABB600E7E968 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				FBB08CB516B8ABB600E7E968 /* main.m in Sources */,
+				FBB08CC816B8ABE600E7E968 /* RNCryptor.m in Sources */,
+				FBB08CC916B8ABE600E7E968 /* RNCryptorEngine.m in Sources */,
+				FBB08CCA16B8ABE600E7E968 /* RNDecryptor.m in Sources */,
+				FBB08CCB16B8ABE600E7E968 /* RNEncryptor.m in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+		FBB08CBA16B8ABB600E7E968 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = NO;
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_DYNAMIC_NO_PIC = NO;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = (
+					"DEBUG=1",
+					"$(inherited)",
+				);
+				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.8;
+				ONLY_ACTIVE_ARCH = YES;
+				SDKROOT = macosx;
+			};
+			name = Debug;
+		};
+		FBB08CBB16B8ABB600E7E968 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				ALWAYS_SEARCH_USER_PATHS = NO;
+				ARCHS = "$(ARCHS_STANDARD_64_BIT)";
+				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
+				CLANG_CXX_LIBRARY = "libc++";
+				CLANG_ENABLE_OBJC_ARC = YES;
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
+				CLANG_WARN_EMPTY_BODY = YES;
+				CLANG_WARN_ENUM_CONVERSION = YES;
+				CLANG_WARN_INT_CONVERSION = YES;
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+				COPY_PHASE_STRIP = YES;
+				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+				GCC_C_LANGUAGE_STANDARD = gnu99;
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
+				GCC_WARN_UNUSED_VARIABLE = YES;
+				MACOSX_DEPLOYMENT_TARGET = 10.8;
+				SDKROOT = macosx;
+			};
+			name = Release;
+		};
+		FBB08CBD16B8ABB600E7E968 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "rncrypt/rncrypt-Prefix.pch";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Debug;
+		};
+		FBB08CBE16B8ABB600E7E968 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
+				GCC_PREFIX_HEADER = "rncrypt/rncrypt-Prefix.pch";
+				PRODUCT_NAME = "$(TARGET_NAME)";
+			};
+			name = Release;
+		};
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+		FBB08CA916B8ABB600E7E968 /* Build configuration list for PBXProject "rncrypt" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FBB08CBA16B8ABB600E7E968 /* Debug */,
+				FBB08CBB16B8ABB600E7E968 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
+		FBB08CBC16B8ABB600E7E968 /* Build configuration list for PBXNativeTarget "rncrypt" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				FBB08CBD16B8ABB600E7E968 /* Debug */,
+				FBB08CBE16B8ABB600E7E968 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+		};
+/* End XCConfigurationList section */
+	};
+	rootObject = FBB08CA616B8ABB600E7E968 /* Project object */;
+}

+ 43 - 0
rncrypt/rncrypt/main.m

@@ -0,0 +1,43 @@
+//
+//  main.m
+//  rncrypt
+//
+//  Created by Rob Napier on 1/29/13.
+//  Copyright (c) 2013 Rob Napier. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "RNDecryptor.h"
+
+NSData *GetDataForHex(NSString *hex) {
+  NSMutableData *data = [NSMutableData new];
+  unsigned char whole_byte;
+  char byte_chars[3] = {'\0','\0','\0'};
+  int i;
+  for (i=0; i < [hex length]/2; i++) {
+    byte_chars[0] = [hex characterAtIndex:i*2];
+    byte_chars[1] = [hex characterAtIndex:i*2+1];
+    whole_byte = strtol(byte_chars, NULL, 16);
+    [data appendBytes:&whole_byte length:1];
+  }
+  return data;
+}
+
+int main(int argc, const char * argv[])
+{
+  @autoreleasepool {
+
+    NSString *password = @"P@ssw0rd!";
+    NSString *messageString = @"02013F194AA9969CF70C8ACB76824DE4CB6CDCF78B7449A87C679FB8EDB6A0109C513481DE877F3A855A184C4947F2B3E8FEF7E916E4739F9F889A717FCAF277402866341008A09FD3EBAC7FA26C969DD7EE72CFB695547C971A75D8BF1CC5980E0C727BD9F97F6B7489F687813BEB94DEB61031260C246B9B0A78C2A52017AA8C92";
+
+    NSData *message = GetDataForHex(messageString);
+
+    NSError *error;
+    NSData *decrypted = [RNDecryptor decryptData:message withPassword:password error:&error];
+
+    NSLog(@"Result=%@", [[NSString alloc] initWithData:decrypted encoding:NSUTF8StringEncoding]);
+
+  }
+    return 0;
+}
+

+ 7 - 0
rncrypt/rncrypt/rncrypt-Prefix.pch

@@ -0,0 +1,7 @@
+//
+// Prefix header for all source files of the 'rncrypt' target in the 'rncrypt' project
+//
+
+#ifdef __OBJC__
+  #import <Foundation/Foundation.h>
+#endif

+ 79 - 0
rncrypt/rncrypt/rncrypt.1

@@ -0,0 +1,79 @@
+.\"Modified from man(1) of FreeBSD, the NetBSD mdoc.template, and mdoc.samples.
+.\"See Also:
+.\"man mdoc.samples for a complete listing of options
+.\"man mdoc for the short list of editing options
+.\"/usr/share/misc/mdoc.template
+.Dd 1/29/13               \" DATE 
+.Dt rncrypt 1      \" Program name and manual section number 
+.Os Darwin
+.Sh NAME                 \" Section Header - required - don't modify 
+.Nm rncrypt,
+.\" The following lines are read in generating the apropos(man -k) database. Use only key
+.\" words here as the database is built based on the words here and in the .ND line. 
+.Nm Other_name_for_same_program(),
+.Nm Yet another name for the same program.
+.\" Use .Nm macro to designate other names for the documented program.
+.Nd This line parsed for whatis database.
+.Sh SYNOPSIS             \" Section Header - required - don't modify
+.Nm
+.Op Fl abcd              \" [-abcd]
+.Op Fl a Ar path         \" [-a path] 
+.Op Ar file              \" [file]
+.Op Ar                   \" [file ...]
+.Ar arg0                 \" Underlined argument - use .Ar anywhere to underline
+arg2 ...                 \" Arguments
+.Sh DESCRIPTION          \" Section Header - required - don't modify
+Use the .Nm macro to refer to your program throughout the man page like such:
+.Nm
+Underlining is accomplished with the .Ar macro like this:
+.Ar underlined text .
+.Pp                      \" Inserts a space
+A list of items with descriptions:
+.Bl -tag -width -indent  \" Begins a tagged list 
+.It item a               \" Each item preceded by .It macro
+Description of item a
+.It item b
+Description of item b
+.El                      \" Ends the list
+.Pp
+A list of flags and their descriptions:
+.Bl -tag -width -indent  \" Differs from above in tag removed 
+.It Fl a                 \"-a flag as a list item
+Description of -a flag
+.It Fl b
+Description of -b flag
+.El                      \" Ends the list
+.Pp
+.\" .Sh ENVIRONMENT      \" May not be needed
+.\" .Bl -tag -width "ENV_VAR_1" -indent \" ENV_VAR_1 is width of the string ENV_VAR_1
+.\" .It Ev ENV_VAR_1
+.\" Description of ENV_VAR_1
+.\" .It Ev ENV_VAR_2
+.\" Description of ENV_VAR_2
+.\" .El                      
+.Sh FILES                \" File used or created by the topic of the man page
+.Bl -tag -width "/Users/joeuser/Library/really_long_file_name" -compact
+.It Pa /usr/share/file_name
+FILE_1 description
+.It Pa /Users/joeuser/Library/really_long_file_name
+FILE_2 description
+.El                      \" Ends the list
+.\" .Sh DIAGNOSTICS       \" May not be needed
+.\" .Bl -diag
+.\" .It Diagnostic Tag
+.\" Diagnostic informtion here.
+.\" .It Diagnostic Tag
+.\" Diagnostic informtion here.
+.\" .El
+.Sh SEE ALSO 
+.\" List links in ascending order by section, alphabetically within a section.
+.\" Please do not reference files that do not exist without filing a bug report
+.Xr a 1 , 
+.Xr b 1 ,
+.Xr c 1 ,
+.Xr a 2 ,
+.Xr b 2 ,
+.Xr a 3 ,
+.Xr b 3 
+.\" .Sh BUGS              \" Document known, unremedied bugs 
+.\" .Sh HISTORY           \" Document history if command behaves in a unique manner