aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Source/KeyChain.m34
-rw-r--r--Source/SPDataCellFormatter.m17
-rw-r--r--Source/SPTableData.m7
-rw-r--r--Source/TableDump.m30
-rw-r--r--Source/TableSource.m4
5 files changed, 52 insertions, 40 deletions
diff --git a/Source/KeyChain.m b/Source/KeyChain.m
index 23ead937..93364175 100644
--- a/Source/KeyChain.m
+++ b/Source/KeyChain.m
@@ -39,12 +39,12 @@
if (![self passwordExistsForName:name account:account]) {
status = SecKeychainAddGenericPassword(
NULL, // default keychain
- [name cStringLength], // length of service name
- [name cString], // service name
- [account cStringLength], // length of account name
- [account cString], // account name
- [password cStringLength], // length of password
- [password cString], // pointer to password data
+ strlen([name UTF8String]), // length of service name
+ [name UTF8String], // service name
+ strlen([account UTF8String]), // length of account name
+ [account UTF8String], // account name
+ strlen([password UTF8String]), // length of password
+ [password UTF8String], // pointer to password data
NULL // the item reference
);
@@ -61,17 +61,17 @@
{
OSStatus status;
- void *passwordData = nil;
- UInt32 passwordLength = nil;
- SecKeychainItemRef itemRef = nil;
+ void *passwordData;
+ UInt32 passwordLength;
+ SecKeychainItemRef itemRef;
NSString *password = @"";
status = SecKeychainFindGenericPassword(
NULL, // default keychain
- [name cStringLength], // length of service name
- [name cString], // service name
- [account cStringLength], // length of account name
- [account cString], // account name
+ strlen([name UTF8String]), // length of service name
+ [name UTF8String], // service name
+ strlen([account UTF8String]), // length of account name
+ [account UTF8String], // account name
&passwordLength, // length of password
&passwordData, // pointer to password data
&itemRef // the item reference
@@ -102,10 +102,10 @@
if ([self passwordExistsForName:name account:account]) {
status = SecKeychainFindGenericPassword(
NULL, // default keychain
- [name cStringLength], // length of service name
- [name cString], // service name
- [account cStringLength], // length of account name
- [account cString], // account name
+ strlen([name UTF8String]), // length of service name
+ [name UTF8String], // service name
+ strlen([account UTF8String]), // length of account name
+ [account UTF8String], // account name
nil, // length of password
nil, // pointer to password data
&itemRef // the item reference
diff --git a/Source/SPDataCellFormatter.m b/Source/SPDataCellFormatter.m
index 4f005c23..ae03a441 100644
--- a/Source/SPDataCellFormatter.m
+++ b/Source/SPDataCellFormatter.m
@@ -40,6 +40,8 @@
}
#endif
+
+
- (NSString *)stringForObjectValue:(id)anObject
{
@@ -72,16 +74,25 @@
- (BOOL)isPartialStringValid:(NSString *)partialString newEditingString:(NSString **)newString errorDescription:(NSString **)error
{
- // No limit set
+ // No limit set
if (textLimit == 0)
return YES;
+ // A single character over the length of the string - likely typed. Prevent the change.
+ if ([partialString length] == textLimit + 1) {
+ NSBeep();
+ return NO;
+ }
+
+ // If the string is considerably longer than the limit, likely pasted. Accept but truncate.
if ([partialString length] > textLimit) {
NSBeep();
- newString = [NSString stringWithCharacters:partialString length:textLimit];
+ *newString = [NSString stringWithString:[partialString substringToIndex:textLimit]];
+ return NO;
}
- return ([partialString length] <= textLimit);
+ // Length inside limit.
+ return YES;
}
@end
diff --git a/Source/SPTableData.m b/Source/SPTableData.m
index aff7b456..1ff4917c 100644
--- a/Source/SPTableData.m
+++ b/Source/SPTableData.m
@@ -459,11 +459,12 @@
/*
* Retrieve the status of a table as a dictionary and add it to the local cache for reuse.
*/
-- (BOOL) updateStatusInformationForCurrentTable
+- (BOOL)updateStatusInformationForCurrentTable
{
- // Catch unselected tables and return nil
- if ([[tableListInstance tableName] isEqualToString:@""] || ![tableListInstance tableName]) return nil;
+ // Catch unselected tables and return false
+ if ([[tableListInstance tableName] isEqualToString:@""] || ![tableListInstance tableName])
+ return FALSE;
// When views are selected, populate the table with a default dictionary - all values, including comment, return no
// meaningful information for views so we may as well skip the query.
diff --git a/Source/TableDump.m b/Source/TableDump.m
index 5236c07d..a53caa7b 100644
--- a/Source/TableDump.m
+++ b/Source/TableDump.m
@@ -374,7 +374,7 @@
NSString *fileType = [[importFormatPopup selectedItem] title];
//load file into string
dumpFile = [SPSQLParser stringWithContentsOfFile:filename
- encoding:[CMMCPConnection encodingForMySQLEncoding:[[tableDocumentInstance connectionEncoding] cString]]
+ encoding:[CMMCPConnection encodingForMySQLEncoding:[[tableDocumentInstance connectionEncoding] UTF8String]]
error:errorStr];
if ( !dumpFile ) {
@@ -986,7 +986,7 @@
withNumericColumns:(NSArray *)tableColumnNumericStatus
silently:(BOOL)silently;
{
- NSStringEncoding tableEncoding = [CMMCPConnection encodingForMySQLEncoding:[[tableDocumentInstance connectionEncoding] cString]];
+ NSStringEncoding tableEncoding = [CMMCPConnection encodingForMySQLEncoding:[[tableDocumentInstance connectionEncoding] UTF8String]];
NSMutableString *csvCell = [NSMutableString string];
NSMutableArray *csvRow = [NSMutableArray array];
NSMutableString *csvString = [NSMutableString string];
@@ -1204,7 +1204,7 @@
NSMutableString *tempString = [NSMutableString string];
NSMutableArray *linesArray = [NSMutableArray array];
BOOL isEscaped, br;
- int fieldCount = nil;
+ int fieldCount = 0;
int x,i,j;
//repare tabs and line ends
@@ -1338,7 +1338,7 @@
*/
- (BOOL)writeXmlForArray:(NSArray *)array orQueryResult:(CMMCPResult *)queryResult toFileHandle:(NSFileHandle *)fileHandle tableName:(NSString *)table withHeader:(BOOL)header silently:(BOOL)silently
{
- NSStringEncoding tableEncoding = [CMMCPConnection encodingForMySQLEncoding:[[tableDocumentInstance connectionEncoding] cString]];
+ NSStringEncoding tableEncoding = [CMMCPConnection encodingForMySQLEncoding:[[tableDocumentInstance connectionEncoding] UTF8String]];
NSMutableArray *xmlTags = [NSMutableArray array];
NSMutableArray *xmlRow = [NSMutableArray array];
NSMutableString *xmlString = [NSMutableString string];
@@ -1681,19 +1681,19 @@
BOOL isEscaped = NO;
BOOL br = NO;
unsigned i, j, start;
- char enc = nil;
- char esc = nil;
- char ter = nil;
+ char *enc = nil;
+ char *esc = nil;
+ char *ter = nil;
//we take only first character by now (too complicated otherwise)
if ( [enclosed length] ) {
- enc = [enclosed characterAtIndex:0];
+ *enc = [enclosed characterAtIndex:0];
}
if ( [escaped length] ) {
- esc = [escaped characterAtIndex:0];
+ *esc = [escaped characterAtIndex:0];
}
if ( [terminated length] ) {
- ter = [terminated characterAtIndex:0];
+ *ter = [terminated characterAtIndex:0];
}
start = 0;
@@ -1706,12 +1706,12 @@
if ( i >= [string length] ) {
//end of string -> no second enclose character found
br = YES;
- } else if ( [string characterAtIndex:i] == enc ) {
+ } else if ( [string characterAtIndex:i] == *enc ) {
//second enclose-character found
//enclose-character escaped?
isEscaped = NO;
j = 1;
- while ( (i-j>0) && ([string characterAtIndex:(i-j)] == esc) ) {
+ while ( (i-j>0) && ([string characterAtIndex:(i-j)] == *esc) ) {
isEscaped = !isEscaped;
j++;
}
@@ -1723,13 +1723,13 @@
if ( !br )
i++;
}
- } else if ( [string characterAtIndex:i] == ter ) {
+ } else if ( [string characterAtIndex:i] == *ter ) {
//terminated-character found
if ( [enclosed isEqualToString:@""] ) {
//check if terminated character is escaped
isEscaped = NO;
j = 1;
- while ( (i-j>0) && ([string characterAtIndex:(i-j)] == esc) ) {
+ while ( (i-j>0) && ([string characterAtIndex:(i-j)] == *esc) ) {
isEscaped = !isEscaped;
j++;
}
@@ -1743,7 +1743,7 @@
[tempArray addObject:[string substringWithRange:NSMakeRange(start,(i-start))]];
start = i + 1;
}
- } else if ( [string characterAtIndex:i] == enc ) {
+ } else if ( [string characterAtIndex:i] == *enc ) {
//enclosed-character found
inString = YES;
}
diff --git a/Source/TableSource.m b/Source/TableSource.m
index 33d3777b..7d642bf2 100644
--- a/Source/TableSource.m
+++ b/Source/TableSource.m
@@ -134,8 +134,8 @@ loads aTable, put it in an array, update the tableViewColumns and reload the tab
for ( i = 0 ; i < [possibleValues count] ; i++ ) {
[possibleValue setString:[possibleValues objectAtIndex:i]];
- [possibleValue replaceOccurrencesOfString:@"''" withString:@"'" options:nil range:NSMakeRange(0,[possibleValue length])];
- [possibleValue replaceOccurrencesOfString:@"\\\\" withString:@"\\" options:nil range:NSMakeRange(0,[possibleValue length])];
+ [possibleValue replaceOccurrencesOfString:@"''" withString:@"'" options:NSLiteralSearch range:NSMakeRange(0,[possibleValue length])];
+ [possibleValue replaceOccurrencesOfString:@"\\\\" withString:@"\\" options:NSLiteralSearch range:NSMakeRange(0,[possibleValue length])];
[possibleValues replaceObjectAtIndex:i withObject:[NSString stringWithString:possibleValue]];
}