View | Details | Raw Unified | Return to bug 13930
Collapse All | Expand All

(-)ctorrent-dnh3.2.orig/btcontent.cpp (-2 / +57 lines)
Lines 91-96 Link Here
91
int btContent::CreateMetainfoFile(const char *mifn)
91
int btContent::CreateMetainfoFile(const char *mifn)
92
{
92
{
93
  FILE *fp;
93
  FILE *fp;
94
  char *m_ann1, *m_ann2, *m_ann3, *m_ann_tmp;
95
  int m_announce_count, list_delimiter;
96
94
  fp = fopen(mifn, "r");
97
  fp = fopen(mifn, "r");
95
  if( fp ){
98
  if( fp ){
96
    CONSOLE.Warning(1, "error, file \"%s\" already exists.", mifn);
99
    CONSOLE.Warning(1, "error, file \"%s\" already exists.", mifn);
Lines 109-116 Link Here
109
  if( bencode_begin_dict(fp) != 1 ) goto err;
112
  if( bencode_begin_dict(fp) != 1 ) goto err;
110
113
111
  // announce
114
  // announce
112
  if( bencode_str("announce", fp) != 1 ) goto err;
115
  if ((strchr(m_announce, '|') == NULL) && (strchr(m_announce, ',') == NULL)) {
113
  if( bencode_str(m_announce, fp) != 1 ) goto err;
116
    if (bencode_str("announce", fp) != 1) goto err;
117
    if (bencode_str(m_announce, fp) != 1) goto err;
118
  } else {
119
    CONSOLE.Debug("announce_list detected:\n");
120
    m_ann1 = m_announce;
121
    m_ann_tmp = (char *)malloc(strlen(m_announce));
122
    m_announce_count = 0;
123
    m_ann2 = strchr(m_ann1, ',');
124
    m_ann3 = strchr(m_ann1, '|');
125
    while (m_ann2 || m_ann3) {
126
      if (m_ann2 && !m_ann3) {
127
	strlcpy(m_ann_tmp, m_ann1, m_ann2 - m_ann1 + 1);
128
	m_ann1 = m_ann2 + sizeof(',');
129
	list_delimiter = 0;
130
      } else {
131
	if (!m_ann2 && m_ann3) {
132
	  strlcpy(m_ann_tmp, m_ann1, m_ann3 - m_ann1 + 1);
133
	  m_ann1 = m_ann3 + sizeof('|');
134
	  list_delimiter = 1;
135
	} else {
136
	  if (m_ann2 < m_ann3) {
137
	    strlcpy(m_ann_tmp, m_ann1, m_ann2 - m_ann1 + 1);
138
	    m_ann1 = m_ann2 + sizeof(',');
139
	    list_delimiter = 0;
140
	  } else {
141
	    strlcpy(m_ann_tmp, m_ann1, m_ann3 - m_ann1 + 1);
142
	    m_ann1 = m_ann3 + sizeof('|');
143
	    list_delimiter = 1;
144
	  }
145
	}
146
      }
147
      if (m_announce_count == 0) {
148
	if (bencode_str("announce", fp) != 1) goto err;
149
	if (bencode_str(m_ann_tmp, fp) != 1) goto err;
150
	if (bencode_str("announce-list", fp) != 1) goto err;
151
	if (fwrite("ll", strlen("ll"), 1, fp) != 1) goto err;
152
      }
153
      m_announce_count++;
154
      CONSOLE.Debug("  URL: %s\n", m_ann_tmp);
155
      if (bencode_str(m_ann_tmp, fp) != 1) goto err;
156
      if (list_delimiter == 1) {
157
	if (fwrite("el", strlen("el"), 1, fp) != 1) goto err;
158
      }
159
      m_ann2 = strchr(m_ann1, ',');
160
      m_ann3 = strchr(m_ann1, '|');
161
    }
162
    CONSOLE.Debug("  URL: %s\n", m_ann1);
163
    if (bencode_str(m_ann1, fp) != 1) goto err;
164
    if (fwrite("ee", strlen("ee"), 1, fp) != 1) goto err;
165
  }
114
  // create date
166
  // create date
115
  if( bencode_str("creation date", fp) != 1 ) goto err;
167
  if( bencode_str("creation date", fp) != 1 ) goto err;
116
  if( bencode_int(m_create_date, fp) != 1 ) goto err;
168
  if( bencode_int(m_create_date, fp) != 1 ) goto err;
Lines 137-142 Link Here
137
  return 0;
189
  return 0;
138
 err:
190
 err:
139
  if( fp ) fclose(fp);
191
  if( fp ) fclose(fp);
192
  if (m_ann_tmp) {
193
    free(m_ann_tmp);
194
  }
140
  return -1;
195
  return -1;
141
}
196
}
142
197

Return to bug 13930