static int resolve_relative_url(int argc, const char **argv, const char *prefix) { char *remoteurl = NULL; char *remote = get_default_remote(); const char *up_path = NULL; char *res; const char *url; struct strbuf sb = STRBUF_INIT; if (argc != 2 && argc != 3) die("resolve-relative-url only accepts one or two arguments"); url = argv[1]; strbuf_addf(&sb, "remote.%s.url", remote); free(remote); if (git_config_get_string(sb.buf, &remoteurl)) /* the repository is its own authoritative upstream */ remoteurl = xgetcwd(); if (argc == 3) up_path = argv[2]; res = relative_url(remoteurl, url, up_path); puts(res); free(res); free(remoteurl); return 0; }
static int resolve_relative_url_test(int argc, const char **argv, const char *prefix) { char *remoteurl, *res; const char *up_path, *url; if (argc != 4) die("resolve-relative-url-test only accepts three arguments: <up_path> <remoteurl> <url>"); up_path = argv[1]; remoteurl = xstrdup(argv[2]); url = argv[3]; if (!strcmp(up_path, "(null)")) up_path = NULL; res = relative_url(remoteurl, url, up_path); puts(res); free(res); free(remoteurl); return 0; }
static void init_submodule(const char *path, const char *prefix, int quiet) { const struct submodule *sub; struct strbuf sb = STRBUF_INIT; char *upd = NULL, *url = NULL, *displaypath; /* Only loads from .gitmodules, no overlay with .git/config */ gitmodules_config(); if (prefix && get_super_prefix()) die("BUG: cannot have prefix and superprefix"); else if (prefix) displaypath = xstrdup(relative_path(path, prefix, &sb)); else if (get_super_prefix()) { strbuf_addf(&sb, "%s%s", get_super_prefix(), path); displaypath = strbuf_detach(&sb, NULL); } else displaypath = xstrdup(path); sub = submodule_from_path(null_sha1, path); if (!sub) die(_("No url found for submodule path '%s' in .gitmodules"), displaypath); /* * NEEDSWORK: In a multi-working-tree world, this needs to be * set in the per-worktree config. * * Set active flag for the submodule being initialized */ if (!is_submodule_initialized(path)) { strbuf_reset(&sb); strbuf_addf(&sb, "submodule.%s.active", sub->name); git_config_set_gently(sb.buf, "true"); } /* * Copy url setting when it is not set yet. * To look up the url in .git/config, we must not fall back to * .gitmodules, so look it up directly. */ strbuf_reset(&sb); strbuf_addf(&sb, "submodule.%s.url", sub->name); if (git_config_get_string(sb.buf, &url)) { url = xstrdup(sub->url); if (!url) die(_("No url found for submodule path '%s' in .gitmodules"), displaypath); /* Possibly a url relative to parent */ if (starts_with_dot_dot_slash(url) || starts_with_dot_slash(url)) { char *remoteurl, *relurl; char *remote = get_default_remote(); struct strbuf remotesb = STRBUF_INIT; strbuf_addf(&remotesb, "remote.%s.url", remote); free(remote); if (git_config_get_string(remotesb.buf, &remoteurl)) { warning(_("could not lookup configuration '%s'. Assuming this repository is its own authoritative upstream."), remotesb.buf); remoteurl = xgetcwd(); } relurl = relative_url(remoteurl, url, NULL); strbuf_release(&remotesb); free(remoteurl); free(url); url = relurl; } if (git_config_set_gently(sb.buf, url)) die(_("Failed to register url for submodule path '%s'"), displaypath); if (!quiet) fprintf(stderr, _("Submodule '%s' (%s) registered for path '%s'\n"), sub->name, url, displaypath); } /* Copy "update" setting when it is not set yet */ strbuf_reset(&sb); strbuf_addf(&sb, "submodule.%s.update", sub->name); if (git_config_get_string(sb.buf, &upd) && sub->update_strategy.type != SM_UPDATE_UNSPECIFIED) { if (sub->update_strategy.type == SM_UPDATE_COMMAND) { fprintf(stderr, _("warning: command update mode suggested for submodule '%s'\n"), sub->name); upd = xstrdup("none"); } else upd = xstrdup(submodule_strategy_to_string(&sub->update_strategy)); if (git_config_set_gently(sb.buf, upd)) die(_("Failed to register update mode for submodule path '%s'"), displaypath); } strbuf_release(&sb); free(displaypath); free(url); free(upd); }
std::list<Maj> WebConnection::getMaj(std::list<Log>& logs) { std::list<Maj> results; QUrl base_url(Config::getUrl().c_str()); QUrl relative_url(majUrl().c_str()); QUrl url = base_url.resolved(relative_url); request.setUrl(url); QNetworkReply* reply = networkManager.get(request); // GET QEventLoop loop; QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); if (reply->error() != QNetworkReply::NoError) { QMessageBox::warning(nullptr,"Error","Immpossible to connect to the url:\n"+url.toString()); delete reply; return results; } QString data = (QString) reply->readAll(); delete reply; QJsonDocument jsonResponse = QJsonDocument::fromJson(data.toUtf8()); QJsonObject json = jsonResponse.object(); int status = json.value("status").toVariant().value<int>(); switch(status) //0:ok, 1:not soft, 2:not src version, 3:no destionation, 4:lastest { case 0: //all is good { }break; case 4 : //lastes { return results; }break; default: { QString msg = json.value("message").toString(); QMessageBox::warning(nullptr,"Error","Recive error code:"+QString::number(status) +"\nMessage:"+msg); return results; }break; } QJsonObject datas = json.value("datas").toObject(); QJsonArray files = datas.value("files").toArray(); int _size = files.size(); for(int i=0;i<_size;++i) { QJsonObject file = files.at(i).toObject(); results.emplace_back(file.value("action").toVariant().value<int>(), file.value("filename").toString().toStdString(), file.value("url").toString().toStdString()); } Config::setVersion(datas.value("version").toVariant().value<int>()); Config::makeFile(); ///LOGS QJsonArray qlogs = datas.value("logs").toArray(); _size = qlogs.size(); for(int i=0;i<_size;++i) { QJsonObject log = qlogs.at(i).toObject(); logs.emplace_back(log.value("version").toVariant().value<int>(), log.value("msg").toString().toStdString()); } return results; }
static void init_submodule(const char *path, const char *prefix, int quiet) { const struct submodule *sub; struct strbuf sb = STRBUF_INIT; char *upd = NULL, *url = NULL, *displaypath; /* Only loads from .gitmodules, no overlay with .git/config */ gitmodules_config(); if (prefix) { strbuf_addf(&sb, "%s%s", prefix, path); displaypath = strbuf_detach(&sb, NULL); } else displaypath = xstrdup(path); sub = submodule_from_path(null_sha1, path); if (!sub) die(_("No url found for submodule path '%s' in .gitmodules"), displaypath); /* * Copy url setting when it is not set yet. * To look up the url in .git/config, we must not fall back to * .gitmodules, so look it up directly. */ strbuf_reset(&sb); strbuf_addf(&sb, "submodule.%s.url", sub->name); if (git_config_get_string(sb.buf, &url)) { url = xstrdup(sub->url); if (!url) die(_("No url found for submodule path '%s' in .gitmodules"), displaypath); /* Possibly a url relative to parent */ if (starts_with_dot_dot_slash(url) || starts_with_dot_slash(url)) { char *remoteurl, *relurl; char *remote = get_default_remote(); struct strbuf remotesb = STRBUF_INIT; strbuf_addf(&remotesb, "remote.%s.url", remote); free(remote); if (git_config_get_string(remotesb.buf, &remoteurl)) /* * The repository is its own * authoritative upstream */ remoteurl = xgetcwd(); relurl = relative_url(remoteurl, url, NULL); strbuf_release(&remotesb); free(remoteurl); free(url); url = relurl; } if (git_config_set_gently(sb.buf, url)) die(_("Failed to register url for submodule path '%s'"), displaypath); if (!quiet) fprintf(stderr, _("Submodule '%s' (%s) registered for path '%s'\n"), sub->name, url, displaypath); } /* Copy "update" setting when it is not set yet */ strbuf_reset(&sb); strbuf_addf(&sb, "submodule.%s.update", sub->name); if (git_config_get_string(sb.buf, &upd) && sub->update_strategy.type != SM_UPDATE_UNSPECIFIED) { if (sub->update_strategy.type == SM_UPDATE_COMMAND) { fprintf(stderr, _("warning: command update mode suggested for submodule '%s'\n"), sub->name); upd = xstrdup("none"); } else upd = xstrdup(submodule_strategy_to_string(&sub->update_strategy)); if (git_config_set_gently(sb.buf, upd)) die(_("Failed to register update mode for submodule path '%s'"), displaypath); } strbuf_release(&sb); free(displaypath); free(url); free(upd); }
void convert_file(char *source_filename) { char html_filename[NAME_MAX + 1]; char *relative_filename; char *base_filename; char *ext, *p; int is_c = 0; int is_asm = 0; FILE *src; FILE *out; int line_num; char line[STRSIZE]; char filename[STRSIZE]; char token[STRSIZE]; char url[STRSIZE]; int in_comment; relative_filename = source_filename + source_prefix_len; ext = ""; base_filename = relative_filename; p = relative_filename; while (*p) { if (*p == '/') { base_filename = p + 1; ext = ""; } if (*p == '.') ext = p; p++; } strcpy(html_filename, output_dir); strcat(html_filename, "/"); strcat(html_filename, relative_filename); strcat(html_filename, ".html"); if (strcmp(ext, ".c") == 0) is_c = 1; if (strcmp(ext, ".h") == 0) is_c = 1; if (strcmp(ext, ".cpp") == 0) is_c = 1; if (strcmp(ext, ".asm") == 0) is_asm = 1; if (strcmp(ext, ".s") == 0) is_asm = 1; if (!is_c && !is_asm) return; src = fopen(source_filename, "rt"); if (!src) { perror(source_filename); return; } out = fopen(html_filename, "wb"); if (!out) { perror(html_filename); return; } fprintf(out, "<html>\r\n"); fprintf(out, "<head>\r\n"); fprintf(out, "<title>%s - %s</title>\r\n", base_filename, title); fprintf(out, "<style type='text/css'>\r\n"); fprintf(out, "a:link {text-decoration: none; color:inherit}\r\n"); fprintf(out, "a:visited {text-decoration: none; color:inherit}\r\n"); fprintf(out, "a:active {text-decoration: none; color:inherit}\r\n"); fprintf(out, "</style>\r\n"); fprintf(out, "</head>\r\n"); fprintf(out, "<body>\r\n"); if (source_index) { fprintf(out, "<p style='float: right'><a href='/sanos/source/index.html'>Goto sanos source index</a></p>"); } fprintf(out, "<pre>\r\n"); line_num = 1; in_comment = 0; while (fgets(line, sizeof line, src)) { char *p = line; char *end = line; while (*end && *end != '\r' && *end != '\n') end++; *end = 0; if (in_comment) { char *comment_start = p; fprintf(out, "<font color='green'>"); while (p < end) { if (p[0] == '*' && p[1] == '/') { p += 2; output_html(out, comment_start, p); in_comment = 0; fprintf(out, "</font>"); break; } p++; } } fprintf(out, "<a name=':%d'></a>", line_num); if (!is_c) { output_html(out, p, end); p = end; } while (p < end) { if (p[0] == '/' && p[1] == '/') { fprintf(out, "<font color='green'>"); output_html(out, p, end); fprintf(out, "</font>"); p = end; } else if (p[0] == '/' && p[1] == '*') { char *comment_start = p; fprintf(out, "<font color='green'>"); while (p < end) { if (p[0] == '*' && p[1] == '/') { p += 2; output_html(out, comment_start, p); in_comment = 0; fprintf(out, "</font>"); break; } p++; } } else if (*p == '\'' || *p == '"') { char *start = p++; while (*p && *p != *start) { if (*p == '\\' && *(p + 1)) p++; p++; } if (*p) p++; fprintf(out, "<font color='brown'>"); output_html(out, start, p); fprintf(out, "</font>"); } else if (*p == '#' || *p == '_' || isalpha(*p)) { char *start = p++; while (*p && (*p == '_' || isalnum(*p))) p++; memcpy(token, start, p - start); token[p - start] = 0; if (is_keyword(token)) { fprintf(out, "<font color='blue'>"); output_html(out, start, p); fprintf(out, "</font>"); if (strncmp(start, "#include", 8) == 0) { start = p; while (isspace(*p)) p++; output_html(out, start, p); if (*p == '"' || *p == '<') { int stdincl = *p == '<'; output_html(out, p, p + 1); start = ++p; while (*p && *p != '>' && *p != '"') p++; if (stdincl) { char *base; strcpy(filename, include_dir); strcat(filename, "/"); base = filename + strlen(filename); memcpy(base, start, p - start); base[p - start] = 0; } else { int pathlen = base_filename - relative_filename; int fnlen = p - start; memcpy(filename, relative_filename, pathlen); memcpy(filename + pathlen, start, fnlen); filename[pathlen + fnlen] = 0; } relative_url(relative_filename, filename, url); fprintf(out, "<a href='%s.html'>", url); output_html(out, start, p); fprintf(out, "</a>"); if (*p) { output_html(out, p, p + 1); p++; } } } } else { struct tag *tag = find_tag(token, relative_filename); if (tag) { int self; relative_url(relative_filename, tag->file, url); self = strcmp(url, base_filename) == 0 && tag->line == line_num; if (!self) fprintf(out, "<a href='%s.html#:%d'>", url, tag->line); output_html(out, start, p); if (!self) fprintf(out, "</a>"); } else { output_html(out, start, p); } } } else { output_html(out, p, p + 1); p++; } } if (in_comment) fprintf(out, "</font>"); fprintf(out, "\r\n", line); line_num++; } fprintf(out, "</pre>\r\n"); fprintf(out, "</body>\r\n"); fprintf(out, "</html>\r\n"); fclose(src); fclose(out); }