void SsaSubtitleFormat::WriteFile(const AssFile *src, agi::fs::path const& filename, agi::vfr::Framerate const&, std::string const& encoding) const { TextFileWriter file(filename, encoding); file.WriteLineToFile("[Script Info]"); file.WriteLineToFile(std::string("; Script generated by Aegisub ") + GetAegisubLongVersionString()); file.WriteLineToFile("; http://www.aegisub.org/"); for (auto const& line : src->Info) file.WriteLineToFile(boost::iequals(line.Key(), "scripttype") ? "ScriptType: v4.00" : line.GetEntryData()); file.WriteLineToFile(""); file.WriteLineToFile("[V4 Styles]"); file.WriteLineToFile("Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding"); for (auto const& line : src->Styles) file.WriteLineToFile(agi::format("Style: %s,%s,%g,%s,%s,0,%s,%d,%d,%d,%g,%g,%d,%d,%d,%d,0,%i" , line.name, line.font, line.fontsize , line.primary.GetSsaFormatted() , line.secondary.GetSsaFormatted() , line.shadow.GetSsaFormatted() , (line.bold? -1 : 0), (line.italic ? -1 : 0) , line.borderstyle, line.outline_w, line.shadow_w, AssStyle::AssToSsa(line.alignment) , line.Margin[0], line.Margin[1], line.Margin[2], line.encoding)); file.WriteLineToFile(""); file.WriteLineToFile("[Fonts]"); for (auto const& line : src->Attachments) { if (line.Group() == AssEntryGroup::FONT) file.WriteLineToFile(line.GetEntryData()); } file.WriteLineToFile(""); file.WriteLineToFile("[Graphics]"); for (auto const& line : src->Attachments) { if (line.Group() == AssEntryGroup::GRAPHIC) file.WriteLineToFile(line.GetEntryData()); } file.WriteLineToFile(""); file.WriteLineToFile("[Events]"); file.WriteLineToFile("Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text"); for (auto const& line : src->Events) file.WriteLineToFile(agi::format("%s: Marked=0,%s,%s,%s,%s,%d,%d,%d,%s,%s" , (line.Comment ? "Comment" : "Dialogue") , line.Start.GetAssFormatted(), line.End.GetAssFormatted() , replace_commas(line.Style), replace_commas(line.Actor) , line.Margin[0], line.Margin[1], line.Margin[2] , replace_commas(line.Effect) , strip_newlines(line.Text))); }
static attrval_t pwd_to_groupsids(struct passwd *pwd) { attrval_t r; char *s, *p; s = wb_aix_getgrset(pwd->pw_name); if (!s) { r.attr_flag = EINVAL; return r; } p = malloc(strlen(s)+2); if (!p) { r.attr_flag = ENOMEM; return r; } strcpy(p, s); replace_commas(p); free(s); r.attr_un.au_char = p; return r; }
/* list groups */ static int wb_aix_lsgroup(char *attributes[], attrval_t results[], int size) { NSS_STATUS ret; struct winbindd_request request; struct winbindd_response response; int len; char *s; if (size != 1 || strcmp(attributes[0], S_GROUPS) != 0) { logit("invalid lsgroup op\n"); errno = EINVAL; return -1; } ZERO_STRUCT(request); ZERO_STRUCT(response); ret = winbindd_request_response(NULL, WINBINDD_LIST_GROUPS, &request, &response); if (ret != 0) { errno = EINVAL; return -1; } len = strlen(response.extra_data.data); s = malloc(len+2); if (!s) { winbindd_free_response(&response); errno = ENOMEM; return -1; } memcpy(s, response.extra_data.data, len+1); replace_commas(s); results[0].attr_un.au_char = s; results[0].attr_flag = 0; winbindd_free_response(&response); return 0; }