Lines Matching refs:sr

92 statusrec_init(struct statusrec *sr)
95 memset(sr, 0, sizeof(*sr));
99 statusrec_cook(struct statusrec *sr, char *line)
103 switch (sr->sr_type) {
109 sr->sr_clientattr = fattr_decode(clientattr);
110 if (sr->sr_clientattr == NULL)
119 sr->sr_tag = proto_get_ascii(&line);
120 sr->sr_date = proto_get_ascii(&line);
122 sr->sr_revnum = proto_get_ascii(&line);
123 sr->sr_revdate = proto_get_ascii(&line);
127 sr->sr_serverattr = fattr_decode(serverattr);
128 if (sr->sr_serverattr == NULL)
130 sr->sr_clientattr = fattr_decode(clientattr);
131 if (sr->sr_clientattr == NULL) {
132 fattr_free(sr->sr_serverattr);
137 sr->sr_tag = proto_get_ascii(&line);
138 sr->sr_date = proto_get_ascii(&line);
142 sr->sr_serverattr = fattr_decode(serverattr);
143 if (sr->sr_serverattr == NULL)
150 sr->sr_clientattr = fattr_decode(clientattr);
151 if (sr->sr_clientattr == NULL)
163 struct statusrec *sr;
167 sr = status_rdraw(st, &line);
168 if (sr == NULL)
170 error = statusrec_cook(sr, line);
175 return (sr);
181 struct statusrec sr;
210 sr.sr_type = SR_FILELIVE;
213 sr.sr_type = SR_DIRDOWN;
217 sr.sr_type = SR_CHECKOUTLIVE;
220 sr.sr_type = SR_CHECKOUTDEAD;
223 sr.sr_type = SR_DIRUP;
231 sr.sr_type = SR_FILELIVE;
234 sr.sr_type = SR_FILEDEAD;
242 sr.sr_file = xstrdup(file);
244 statusrec_cmp(st->previous, &sr) >= 0) {
246 free(sr.sr_file);
256 st->previous->sr_type = sr.sr_type;
257 st->previous->sr_file = sr.sr_file;
263 status_wr(struct status *st, struct statusrec *sr)
273 if (sr->sr_type == SR_DIRDOWN) {
274 pathcomp_put(pc, PC_DIRDOWN, sr->sr_file);
275 } else if (sr->sr_type == SR_DIRUP) {
276 pathcomp_put(pc, PC_DIRUP, sr->sr_file);
279 pathcomp_put(pc, PC_FILE, sr->sr_file);
287 fa = sr->sr_clientattr;
297 switch (sr->sr_type) {
304 sr->sr_file, sr->sr_tag, sr->sr_date, sr->sr_serverattr,
305 sr->sr_revnum, sr->sr_revdate, sr->sr_clientattr);
308 error = proto_printf(st->wr, "c %s %s %s %f\n", sr->sr_file,
309 sr->sr_tag, sr->sr_date, sr->sr_serverattr);
312 error = proto_printf(st->wr, "V %s %f\n", sr->sr_file,
313 sr->sr_clientattr);
316 error = proto_printf(st->wr, "v %s %f\n", sr->sr_file,
317 sr->sr_clientattr);
330 status_wrraw(struct status *st, struct statusrec *sr, char *line)
345 if (sr->sr_type == SR_DIRDOWN)
346 pathcomp_put(st->pc, PC_DIRDOWN, sr->sr_file);
347 else if (sr->sr_type == SR_DIRUP)
348 pathcomp_put(st->pc, PC_DIRUP, sr->sr_file);
350 pathcomp_put(st->pc, PC_FILE, sr->sr_file);
351 if (sr->sr_type == SR_DIRDOWN || sr->sr_type == SR_DIRUP) {
354 if (sr->sr_type == SR_DIRDOWN)
362 switch (sr->sr_type) {
385 if (sr->sr_type == SR_DIRDOWN)
386 error = proto_printf(st->wr, "%c %S\n", cmd, sr->sr_file);
388 error = proto_printf(st->wr, "%c %s %S\n", cmd, sr->sr_file,
399 statusrec_fini(struct statusrec *sr)
402 fattr_free(sr->sr_serverattr);
403 fattr_free(sr->sr_clientattr);
404 free(sr->sr_file);
609 struct statusrec *sr;
620 sr = status_rd(st);
621 if (sr == NULL) {
626 *psr = sr;
631 sr = st->current;
634 sr = status_rd(st);
635 if (sr == NULL) {
648 c = statusrec_cmp(sr, &key);
651 error = status_wr(st, sr);
657 sr = status_rdraw(st, &line);
658 if (sr == NULL) {
663 c = statusrec_cmp(sr, &key);
667 error = status_wrraw(st, sr, line);
672 error = statusrec_cook(sr, line);
678 st->current = sr;
681 *psr = sr;
691 status_put(struct status *st, struct statusrec *sr)
696 ret = status_get(st, sr->sr_file, sr->sr_type == SR_DIRUP, 0, &old);
703 if (sr->sr_type == SR_CHECKOUTLIVE ||
704 sr->sr_type == SR_CHECKOUTDEAD) {
708 ret = status_get(st, sr->sr_file, 1, 1, &old);
717 error = status_wr(st, sr);
729 struct statusrec *sr;
732 ret = status_get(st, name, isdirup, 0, &sr);
815 struct statusrec *sr;
830 while ((sr = status_rdraw(st, &line)) != NULL) {
831 error = status_wrraw(st, sr, line);