source: filezilla/trunk/fuentes/src/putty/fzprintf.c @ 130

Last change on this file since 130 was 130, checked in by jrpelegrina, 3 years ago

First release to xenial

File size: 1.8 KB
Line 
1#include "putty.h"
2#include "misc.h"
3
4int fznotify(sftpEventTypes type)
5{
6    fprintf(stdout, "%c", (int)type + '0');
7    fflush(stdout);
8    return 0;
9}
10
11int fzprintf(sftpEventTypes type, const char* fmt, ...)
12{
13    va_list ap;
14    char* str, *p, *s;
15    va_start(ap, fmt);
16    str = dupvprintf(fmt, ap);
17    if (!*str)
18    {
19        sfree(str);
20        va_end(ap);
21
22        fprintf(stdout, "%c\n", (int)type + '0');
23        fflush(stdout);
24
25        return 0;
26    }
27    p = str;
28    s = str;
29    while (1)
30    {
31        if (*p == '\r' || *p == '\n')
32        {
33            if (p != s)
34            {
35                *p = 0;
36                fprintf(stdout, "%c%s\n", (int)type + '0', s);
37                s = p + 1;
38            }
39            else
40                s++;
41        }
42        else if (!*p)
43        {
44            if (p != s)
45            {
46                *p = 0;
47                fprintf(stdout, "%c%s\n", (int)type + '0', s);
48                s = p + 1;
49            }
50            break;
51        }
52        p++;
53    }
54    sfree(str);
55
56    va_end(ap);
57
58    fflush(stdout);
59
60    return 0;
61}
62
63int fzprintf_raw_untrusted(sftpEventTypes type, const char* fmt, ...)
64{
65    va_list ap;
66    char* str, *p, *s;
67    va_start(ap, fmt);
68    str = dupvprintf(fmt, ap);
69    p = str;
70    s = str;
71    while (*p)
72    {
73        if (*p == '\r')
74            p++;
75        else if (*p == '\n')
76        {
77            if (s != str)
78                *s++ = ' ';
79            p++;
80        }
81        else if (*p)
82            *s++ = *p++;
83    }
84    while (s != str && *(s - 1) == ' ')
85        s--;
86    *s = 0;
87    if (*str)
88        fprintf(stdout, "%c%s\n", (int)type + '0', str);
89
90    sfree(str);
91
92    va_end(ap);
93
94    fflush(stdout);
95
96    return 0;
97}
98
99int fzprintf_raw(sftpEventTypes type, const char* fmt, ...)
100{
101    va_list ap;
102    char* str ;
103    va_start(ap, fmt);
104    str = dupvprintf(fmt, ap);
105
106    fputc((char)type + '0', stdout);
107    fputs(str, stdout);
108
109    sfree(str);
110
111    va_end(ap);
112
113    fflush(stdout);
114
115    return 0;
116}
117
118int fznotify1(sftpEventTypes type, int data)
119{
120    fprintf(stdout, "%c%d\n", (int)type + '0', data);
121    fflush(stdout);
122    return 0;
123}
124
Note: See TracBrowser for help on using the repository browser.