Mercurial > pidgin
comparison src/ft.c @ 9796:68574cef02e2
[gaim-migrate @ 10664]
Thanks to Dave West for being cool.
When I grow up I want to be a p scichologiest.
Sometimes I wish the coyote would catch the road runner.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Fri, 20 Aug 2004 21:57:18 +0000 |
parents | 719fc957e9ee |
children | 255596f41014 |
comparison
equal
deleted
inserted
replaced
9795:719fc957e9ee | 9796:68574cef02e2 |
---|---|
110 g_return_if_fail(xfer != NULL); | 110 g_return_if_fail(xfer != NULL); |
111 | 111 |
112 xfer->status = status; | 112 xfer->status = status; |
113 } | 113 } |
114 | 114 |
115 /* | 115 static void gaim_xfer_show_file_error(GaimXfer *xfer, const char *filename) |
116 * XXX - I REALLY feel like this should be using strerror. | |
117 * Also, should this use gaim_xfer_error? | |
118 */ | |
119 static void gaim_xfer_show_file_error(const char *filename) | |
120 { | 116 { |
121 gchar *msg = NULL; | 117 gchar *msg = NULL; |
122 | 118 GaimXferType xfer_type = gaim_xfer_get_type(xfer); |
123 switch (errno) | 119 |
124 { | 120 switch(xfer_type) { |
125 case ENOENT: | 121 case GAIM_XFER_SEND: |
126 msg = g_strdup_printf(_("%s does not exist.\n"), filename); | 122 msg = g_strdup_printf(_("Error reading %s: \n%s.\n"), |
123 filename, strerror(errno)); | |
127 break; | 124 break; |
128 case EISDIR: | 125 case GAIM_XFER_RECEIVE: |
129 msg = g_strdup_printf(_("%s is a directory, not a file.\n"), filename); | 126 msg = g_strdup_printf(_("Error writing %s: \n%s.\n"), |
130 break; | 127 filename, strerror(errno)); |
131 case ENOTDIR: | |
132 msg = g_strdup_printf( _("A component of %s is not a directory.\n"), filename); | |
133 break; | |
134 #ifndef _WIN32 | |
135 case ELOOP: | |
136 msg = g_strdup_printf( _("Too many symbolic links in path for %s\n"), filename); | |
137 break; | |
138 case ETXTBSY: | |
139 msg = g_strdup_printf(_("Cannot write %s: File is in use\n"), filename); | |
140 break; | |
141 #endif | |
142 case EACCES: | |
143 msg = g_strdup_printf( _("Permission denied accessing %s\n"), filename); | |
144 break; | |
145 case ENAMETOOLONG: | |
146 msg = g_strdup_printf(_("File name too long: %s\n"), filename); | |
147 break; | |
148 case EROFS: | |
149 msg = g_strdup_printf(_("Cannot write %s: Read only filesystem\n"), filename); | |
150 break; | |
151 case ENOSPC: | |
152 msg = g_strdup_printf(_("Cannot write %s: No space on filesystem\n"), filename); | |
153 break; | |
154 case EMFILE: | |
155 msg = g_strdup_printf(_("Cannot open %s: Gaim has too many files open\n"), filename); | |
156 break; | |
157 case ENFILE: | |
158 msg = g_strdup_printf(_("Cannot open %s: Your user or system has too many files open\n"), filename); | |
159 break; | |
160 case ENOMEM: | |
161 msg = g_strdup_printf(_("Cannot open %s: Not enough memory\n"), filename); | |
162 break; | 128 break; |
163 default: | 129 default: |
164 msg = NULL; | 130 msg = NULL; |
131 msg = g_strdup_printf(_("Error accessing %s: \n%s.\n"), | |
132 filename, strerror(errno)); | |
165 break; | 133 break; |
166 } | 134 } |
167 | 135 |
168 if (msg != NULL) { | 136 gaim_xfer_error(xfer_type, xfer->who, msg); |
169 gaim_notify_error(NULL, NULL, msg, NULL); | 137 g_free(msg); |
170 g_free(msg); | |
171 } | |
172 } | 138 } |
173 | 139 |
174 static void | 140 static void |
175 gaim_xfer_choose_file_ok_cb(void *user_data, const char *filename) | 141 gaim_xfer_choose_file_ok_cb(void *user_data, const char *filename) |
176 { | 142 { |
183 /* File not found. */ | 149 /* File not found. */ |
184 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { | 150 if (gaim_xfer_get_type(xfer) == GAIM_XFER_RECEIVE) { |
185 gaim_xfer_request_accepted(xfer, filename); | 151 gaim_xfer_request_accepted(xfer, filename); |
186 } | 152 } |
187 else { | 153 else { |
188 gaim_xfer_show_file_error(filename); | 154 gaim_xfer_show_file_error(xfer, filename); |
189 gaim_xfer_request_denied(xfer); | 155 gaim_xfer_request_denied(xfer); |
190 } | 156 } |
191 } | 157 } |
192 else if ((gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) && | 158 else if ((gaim_xfer_get_type(xfer) == GAIM_XFER_SEND) && |
193 (st.st_size == 0)) { | 159 (st.st_size == 0)) { |
363 gaim_xfer_unref(xfer); | 329 gaim_xfer_unref(xfer); |
364 return; | 330 return; |
365 } | 331 } |
366 | 332 |
367 if (stat(filename, &st) == -1) { | 333 if (stat(filename, &st) == -1) { |
368 gaim_xfer_show_file_error(filename); | 334 gaim_xfer_show_file_error(xfer, filename); |
369 gaim_xfer_unref(xfer); | 335 gaim_xfer_unref(xfer); |
370 return; | 336 return; |
371 } | 337 } |
372 | 338 |
373 gaim_xfer_set_local_filename(xfer, filename); | 339 gaim_xfer_set_local_filename(xfer, filename); |
767 | 733 |
768 xfer->dest_fp = fopen(gaim_xfer_get_local_filename(xfer), | 734 xfer->dest_fp = fopen(gaim_xfer_get_local_filename(xfer), |
769 type == GAIM_XFER_RECEIVE ? "wb" : "rb"); | 735 type == GAIM_XFER_RECEIVE ? "wb" : "rb"); |
770 | 736 |
771 if (xfer->dest_fp == NULL) { | 737 if (xfer->dest_fp == NULL) { |
772 gaim_xfer_show_file_error(gaim_xfer_get_local_filename(xfer)); | 738 gaim_xfer_show_file_error(xfer, gaim_xfer_get_local_filename(xfer)); |
773 gaim_xfer_cancel_local(xfer); | 739 gaim_xfer_cancel_local(xfer); |
774 return; | 740 return; |
775 } | 741 } |
776 | 742 |
777 xfer->watcher = gaim_input_add(xfer->fd, cond, transfer_cb, xfer); | 743 xfer->watcher = gaim_input_add(xfer->fd, cond, transfer_cb, xfer); |