Lines Matching refs:ar
75 aixclose(Ardir_t* ar)
79 if (ar && (state = (State_t*)ar->data))
93 aixopen(Ardir_t* ar, char* buf, size_t n)
106 ar->data = (void*)state;
117 aixclose(ar);
126 aixnext(Ardir_t* ar)
128 State_t* state = (State_t*)ar->data;
134 if (lseek(ar->fd, state->offset, SEEK_SET) != state->offset)
136 ar->error = errno;
139 if (read(ar->fd, (char*)&state->member, sizeof(state->member)) != sizeof(state->member))
141 if ((n = read(ar->fd, (char*)&state->member, 1)) < 0)
142 ar->error = errno;
144 ar->error = EINVAL;
150 ar->error = EINVAL;
158 ar->error = errno;
161 ar->dirent.name = state->name;
166 if (read(ar->fd, state->name + 2, n - 2) != (n - 2))
168 ar->error = errno;
171 if (lseek(ar->fd, -(Sfoff_t)(n - 2), SEEK_CUR) < 0)
173 ar->error = errno;
178 ar->dirent.offset = state->offset + sizeof(Member_t) + n - 2;
181 ar->error = EINVAL;
184 ar->dirent.mtime = u;
187 ar->error = EINVAL;
190 ar->dirent.uid = u;
193 ar->error = EINVAL;
196 ar->dirent.gid = u;
199 ar->error = EINVAL;
202 ar->dirent.mode = u;
205 ar->error = EINVAL;
208 ar->dirent.size = u;
211 ar->error = EINVAL;
215 return &ar->dirent;
223 aixchange(Ardir_t* ar, Ardirent_t* ent)
225 State_t* state = (State_t*)ar->data;
230 if (lseek(ar->fd, o, SEEK_SET) != o)
232 ar->error = errno;
236 if (write(ar->fd, buf, sizeof(buf) - 1) != (sizeof(buf) - 1))
238 ar->error = errno;