Форум dkLab и Denwer
Здесь общаются Web-разработчики.
Генеральный спонсор:
Хостинг «Джино»

Ошибка в исходнике cgiinside\с\gif.c (Андpей Дoрoнин)
Author Message
Андpей Дoрoнин
Заглянувший



Joined: 03 Aug 2005
Posts: 6
Карма: 1
   поощрить/наказать

Location: Москва

PostPosted: Wed Aug 03, 2005 7:36 pm (написано за 2 минуты 30 секунд)
   Post subject: Ошибка в исходнике cgiinside\с\gif.c
Reply with quote

Перед выводом картинки нужно перевести stdout в BINMODE:
Code (c): скопировать код в буфер обмена
//
#include <stdio.h>
//
#include <io.h>
#include <fcntl.h>

//
long filesize(FILE *f) {
  long pos, size;
  pos = ftell(f);
  fseek(f, 0, 2);
  size = ftell(f);
  fseek(f, pos, 0);
  return size;
}

void main(void) {
  //
  FILE *f = fopen("test.gif", "rb");
  FILE *st = fdopen(fileno(stdout), "wb");
  //
  fprintf(st, "Pragma: no-cache\r\n");
  fprintf(st, "Content-type: image/gif\r\n");
  fprintf(st, "Content-length: %d\r\n", filesize(f));
  fprintf(st, "\r\n");
//
  setmode(fileno(stdout),O_BINARY);
  //
  while (1) {
    char s[4000+1];
    int size = fread(s, 1, 4000, f);
    if (!size) break;
    fwrite(s, size, 1, st);
  }
}
если этого не сделать, вместо

получится



test.gif
 Description:
 Filesize:  1.46 KB
 Viewed:  14851 Time(s)

test.gif



gif.gif
 Description:
 Filesize:  1.88 KB
 Viewed:  14851 Time(s)

gif.gif


Back to top
View user's profile Send private message Send e-mail
phprus
Участник форума



Joined: 25 Jul 2003
Posts: 162
Карма: 8
   поощрить/наказать

Location: Пермь

PostPosted: Thu Aug 04, 2005 1:51 pm (спустя 18 часов 15 минут; написано за 1 минуту 30 секунд)
   Post subject:
Reply with quote

А разве строкой FILE *st = fdopen(fileno(stdout), "wb"); мы не открываем stdout в бинарном режиме? Мы же печатаем функциями fprintf и fwrite в *st.
Back to top
View user's profile Send private message Send e-mail
Андpей Дoрoнин
Заглянувший



Joined: 03 Aug 2005
Posts: 6
Карма: 1
   поощрить/наказать

Location: Москва

PostPosted: Fri Aug 05, 2005 1:14 am (спустя 11 часов 22 минуты; написано за 2 минуты 23 секунды)
   Post subject:
Reply with quote

может быть это и так...
НО! если убрать сроку setmode(fileno(stdout),O_BINARY); , вместо картинки действительно выводится шум (gif.gif)
Если честно, я не особо силен в С :-( , но исправленный код работает правильно ;-)
Back to top
View user's profile Send private message Send e-mail
Дмитрий Котеров
Администратор



Joined: 10 Mar 2003
Posts: 13665
Карма: 413
   поощрить/наказать


PostPosted: Sat Aug 06, 2005 2:16 am (спустя 1 день 1 час 2 минуты; написано за 14 секунд)
   Post subject:
Reply with quote

UndeRoll, на какой платформе компилировали?
Какой компилятор?
Back to top
View user's profile Send private message Send e-mail
Андpей Дoрoнин
Заглянувший



Joined: 03 Aug 2005
Posts: 6
Карма: 1
   поощрить/наказать

Location: Москва

PostPosted: Mon Aug 08, 2005 11:55 am (спустя 2 дня 9 часов 38 минут; написано за 2 минуты 12 секунд)
   Post subject:
Reply with quote

WinXP
MS Visual C++ 6.0

кстати post.c, откопилированный тем же MS Visual, вообще не запускается... "post.cgi - обнаружена ошибка. Приложение будет закрыто."
Что наводит на мысль: "Это проблема MS Visual" ;)
На досуге попробую Borland C++ Builder 6.0
Back to top
View user's profile Send private message Send e-mail
DruiD
Guest





Карма: 388
   поощрить/наказать


PostPosted: Fri Aug 31, 2007 8:43 pm (спустя 2 года 23 дня 8 часов 48 минут; написано за 1 минуту 7 секунд)
   Post subject: Application
Reply with quote

Просьба авторов внести коррективы в архив, чтобы пользователям не приходилось лишний раз заходить на форум(как мне) чтобы скорректировать исходник.

Вопрос решен, тему можно закрыть.
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Fri Aug 31, 2007 10:24 pm (спустя 1 час 41 минуту; написано за 35 секунд)
   Post subject:
Reply with quote

Андpей Дoрoнин
Это исправление именно для Windows... Под *nix не будет такой проблемы, там бинарный и текстовый режимы не отличаются.
Back to top
View user's profile Send private message Send e-mail
Медвежонок
Guest





Карма: 388
   поощрить/наказать


PostPosted: Wed Sep 12, 2007 9:37 pm (спустя 11 дней 23 часа 12 минут; написано за 8 секунд)
   Post subject:
Reply with quote

Подскажите где скачать компилятор Visual C++ и как его ставить
У меня cgi файлы без компилятора открываются простым текстом как в блокноте. Или что-то надо настроить.
Back to top
Maus
Модератор



Joined: 29 Jun 2003
Posts: 8151
Карма: 271
   поощрить/наказать

Location: пос. Омсукчан Магаданской области

PostPosted: Fri Sep 14, 2007 7:10 pm (спустя 1 день 21 час 32 минуты; написано за 3 минуты 20 секунд)
   Post subject:
Reply with quote

Медвежонок wrote:
где скачать компилятор Visual C++
на сайте Microsoft сейчас доступен какой-то бесплатный стартовый вариант Visual Studio - возможно, там и компилятор есть. Сразу предупреждаю, что там требуется регистрация и весит это счатье солидно.
А полноценная Visual Studio стоит денег, и приличных.
Впрочем, есть и другие компиляторы - поищите в Гугле и попробуйте ими (может, даже tcc сгодится).
Back to top
View user's profile Send private message
Guest






Карма: 388
   поощрить/наказать


PostPosted: Sun Sep 16, 2007 1:56 am (спустя 1 день 6 часов 46 минут; написано за 4 минуты 17 секунд)
   Post subject:
Reply with quote

[quote="Maus"]
Медвежонок wrote:
где скачать компилятор Visual C++
на сайте Microsoft сейчас доступен какой-то бесплатный стартовый вариант Visual Studio - возможно, там и компилятор есть.quote]
Компилятора там нет, или же он как-то включается отдельно, т.к. все функции и кнопочки связанные с компилированием там не активны(((
Back to top
Юрий Насретдинов
Модератор



Joined: 13 Mar 2003
Posts: 8642
Карма: 198
   поощрить/наказать

Location: 007 495

PostPosted: Sun Sep 16, 2007 7:08 pm (спустя 17 часов 12 минут; написано за 47 секунд)
   Post subject:
Reply with quote

Гость
Microsoft, насколько я знаю, бесплатно распространяет свой компилятор cl и nmake, поэтому Вы должны, теоретически, быть способны скомпилировать всё, что Вам нужно.
Back to top
View user's profile Send private message Send e-mail
Display posts from previous:   
Post new topic   Reply to topic All times are GMT + 3 Hours
Page 1 of 1    Email to a Friend.
You cannot post new topics in this forum. You cannot reply to topics in this forum. You cannot edit your posts in this forum. You cannot delete your posts in this forum. You cannot vote in polls in this forum. You cannot attach files in this forum. You can download files in this forum.
XML