2

そのため、readlineを使用してデフォルトのテキストをユーザー入力に詰め込もうとしていますが、OSX10.5で機能させるのに問題があります。

// rl_insert_text_ex.c
// gcc -o rl_insert_text_ex rl_insert_text_ex.c -lreadline
#include <stdio.h>
#include <readline/readline.h>

int my_startup_hook(void) {
  return rl_insert_text("ponycorns");
}
int main(int argc, char *argv[]) {
  char *line;
  rl_startup_hook = (Function*) my_startup_hook;
  line = readline("What's your favorite mythical animal? ");
  if (NULL == line || '\0' == *line) {
    printf("Nothing given... :(\n");
  }
  else {
    printf("That's funny, I love %s too!\n", line);
  }
  return 0;
}

このコードは10.4ではコンパイルされません(_rl_insert_text10.4では定義がありません。これは少し厄介です)が、10.5ではコンパイルされます。ただし、rl_insert_text()'dテキストが画面に表示されたり、ユーザー入力として返されたりすることはありません。コールバックが使用されておりrl_insert_text()、適切な値を返します(ありがとうございますprintf)。そのため、ここで何が起こっているのかわかりません。

私はチェックしまし/usr/include/readline/readline.hた、そしてrl_insert_text()下にあります:

/* supported functions */

これは紛らわしい下にあります:

/*
 * The following is not implemented
 */

それで、私はSOLですか、それとも間違っているだけですか?

4

1 に答える 1

1

残念ながら、少なくともOS Xに含まれているreadlineライブラリでは、運が悪いかもしれません。ライセンスの互換性の問題のため、Appleはlibeditを使用しています。これは(明らかに)不完全なreadlineエミュレーションを提供します。readline.h(このライブラリは、OS Xに含まれている「editline」という名前で文書化されています。)

GNU Readline Library(「1つの真の」readlineライブラリ)はGPLの下にあり、(コピーレフトライセンスであるため)完全にオープンソースではないコードではうまく機能しません。(A)Xcode、OS Xなどのすべてをオープンソーシングするか、(B)本当に使いたいもののノックオフを使用する場合、Apple(ほとんどの企業と同様)は常に選択しますB.残念ですが、それが人生です。

個人的には、これがGPLのコードが土地でやや荒廃している理由のひとつだと思います。なぜなら、「人にそれを貼り付ける」という行為では、ソフトウェアを購入する大衆からコードを差し控えることも多いからです。{BSD、MIT、Apache}スタイルのライセンスは、クローズドソースシステムでの使用にはるかに役立ちますが、それでも商用エンティティがパッチなどを提供することを許可しlibeditます。適切に修正するのに十分な注意が払われていないと思います。コミュニティパッチは確かに歓迎されますが、自分でハッキングせずにコードを使用できれば、はるかに便利です... ;-)

ところで、同じことが他のGPLプロジェクトにも当てはまります。{git、mercurial、bazaar}がGPLの下にある限り、AppleがXcodeでそれらの統合を出荷するのを待ってはいけません。:-(

更新:新しいXcode4はgitサポートを提供します。ハザ!私の理解では、これはGPLされたコードをメインのXcodeコードベースから分離する新しいプラグインアーキテクチャによるものです。ただし、コピーレフトライセンスは、すべての人に利益をもたらすはずのコードにとって、依然として間違ったソリューションであることを強調します。明らかに同意しない人もいますが(あなたは仲間で匿名の反対票を投じています)、GPLは自由も制限できるという事実があります。通常、クローズドソース/プロプライエタリソフトウェアとは異なるものですが、GPLは防止にも非常に効果的です。ソースコードの違法な使用...違いは道徳的な優位性の感覚です。

于 2009-07-10T18:51:45.710 に答える