diff -c -r inn-2.3.1/authprogs/ident.c inn-2.3.1-modified/authprogs/ident.c *** inn-2.3.1/authprogs/ident.c Thu Jan 11 10:39:28 2001 --- inn-2.3.1-modified/authprogs/ident.c Sat Jan 20 13:26:02 2001 *************** *** 21,28 **** --- 21,30 ---- struct sockaddr_in sin, loc, cli; int sock; int opt; + int truncate = 0; extern char *optarg; char *iter; + char *p; int got; char *endstr; int gotcliaddr, gotcliport, gotlocaddr, gotlocport; *************** *** 38,44 **** else sin.sin_port = s->s_port; ! while ((opt = getopt(argc, argv, "p:")) != -1) { switch (opt) { case 'p': for (iter = optarg; *iter; iter++) --- 40,46 ---- else sin.sin_port = s->s_port; ! while ((opt = getopt(argc, argv, "p:t")) != -1) { switch (opt) { case 'p': for (iter = optarg; *iter; iter++) *************** *** 55,60 **** --- 57,65 ---- sin.sin_port = atoi(optarg); sin.sin_port = htons(sin.sin_port); break; + case 't': + truncate = 1; + break; } } *************** *** 180,185 **** --- 185,192 ---- if (!*iter || *iter == '[') /* null, or encrypted response */ exit(1); + if ((truncate == 1) && ((p = strchr(iter, '@')) != NULL)) + *p = '\0'; printf("User:%s\n", iter); exit(0);