小弟正在做一个脚本,希望通过growl的命令行插件growlnotify来提示信息
提示信息是多行的 但目前在-m参数内输入\n是无效的
如果不使用-m参数让用户自行输入是支持换行的~
请各位大侠如果使用过请给个解决方案
看了下源码,对cfstring 和 cstring不太了解 贴下来供大家参考
// Check message
CFStringRef desc;
if (message && !(message[0] == '-' && message[1] == 0)) {
desc = CFStringCreateWithCString(NULL, message, kCFStringEncodingUTF8);
} else {
// Deal with stdin
if (isatty(STDIN_FILENO) && isatty(STDOUT_FILENO))
fputs("Enter a notification description, followed by newline, followed by Ctrl-D (End of File). To cancel, press Ctrl-C.\n", stdout);
char buffer[4096];
CFMutableStringRef temp = CFStringCreateMutable(kCFAllocatorDefault, 0);
while (!feof(stdin)) {
size_t len = fread(buffer, 1, sizeof(buffer)-1, stdin);
if (!len)
break;
buffer[len] = '\0';
CFStringAppendCString(temp, buffer, kCFStringEncodingUTF8);
}
CFStringTrimWhitespace(temp);
desc = temp;
}
提示信息是多行的 但目前在-m参数内输入\n是无效的
如果不使用-m参数让用户自行输入是支持换行的~
请各位大侠如果使用过请给个解决方案
看了下源码,对cfstring 和 cstring不太了解 贴下来供大家参考
// Check message
CFStringRef desc;
if (message && !(message[0] == '-' && message[1] == 0)) {
desc = CFStringCreateWithCString(NULL, message, kCFStringEncodingUTF8);
} else {
// Deal with stdin
if (isatty(STDIN_FILENO) && isatty(STDOUT_FILENO))
fputs("Enter a notification description, followed by newline, followed by Ctrl-D (End of File). To cancel, press Ctrl-C.\n", stdout);
char buffer[4096];
CFMutableStringRef temp = CFStringCreateMutable(kCFAllocatorDefault, 0);
while (!feof(stdin)) {
size_t len = fread(buffer, 1, sizeof(buffer)-1, stdin);
if (!len)
break;
buffer[len] = '\0';
CFStringAppendCString(temp, buffer, kCFStringEncodingUTF8);
}
CFStringTrimWhitespace(temp);
desc = temp;
}